Задать вопрос
  • Выбор рабочего ноутбука (разработчик C++)?

    @res2001
    Алан Гибизов, То же не щупал уже давненько. Но по описанию у леново вполне ничего. Кроме того, на сколько мне известно леново эту серию продолжает лицензировать для пентагона (или что-то в этом духе), так что качество должно быть на уровне.
    Сейчас сижу на Legionе, хорошая машинка, нравится. Брал пару лет назад, хотел брать Thinkpad как раз, но наткнулся на эти легионы.
  • Выбор рабочего ноутбука (разработчик C++)?

    @res2001
    Посмотрите в сторону моделей Lenovo Thinkpad или Lenovo Legion, в обоих сериях есть несколько моделей.
    На ноутах практически трудно будет что-то обновить (ну кроме SSD и может быть памяти), поэтому лучше брать максимально возможную комплектацию, на которую хватит денег.
  • Почему не работает Wake On Lan?

    @res2001
    Да, еще, на сколько я помню утилиты для WOL, те которые работают в локальной сети, отправляют именно широковещательные пакеты.
    Написано
  • Почему не работает Wake On Lan?

    @res2001
    Fragen2510,
    Я уже зарезервировал IP в локальной сети для необходимого MAC-адреса

    Вы его зарезервировали в DHCP сервере роутера, видимо.
    Но это не то, о чем я писал выше.
    Перед тем как отправить пакет в сеть IP стек должен узнать МАС адрес узла на который отправляет пакет.
    За это отвечает протокол ARP. Когда хост включен в сеть, то он на ARP запрос ответит, т.е. скажет что "это я с IP адресом таким то и у меня такой МАС адрес". Этот ответ помещается в ARP кэш, т.е. там лежат пары IP-MAC, кэш нужен для того, что бы на каждый чих на слать ARP запросы. Время хранения записи в ARP кэше ограничено и оно не слишком велико, и старые записи (к которым не было обращения) удаляются.
    Так вот, когда ваш комп выключен, он уже не может ответить на ARP запрос, следовательно роутер не знает на какой МАС отправить пакет, и просто отменяет перенаправляемые пакеты, об этом, видимо, свидетельствует DISCARD на вашем скрине.
    Таким образом, если в ARP кэш добавить статическую запись, которая никогда не удалиться, то необходимость в ARP запросе отпадет и роутер всегда сможет отправить пакет компу.
    Манипулировать ARP кэшем можно с помощью утилиты arp. Если у вас линукс или винда на компе, то можете потренироваться, она там есть. В некоторых роутерах то же есть утилита arp. Но возможно для ее использования потребуется зайти в командную строку роутера. Или возможно arp кэш на вашей конкретной модели роутера управляется каким-то другим способом. Может быть, что и вообще не управляется, т.к. домашние роутеры все таки урезанные в функциональном плане железяки.

    Еще один вариант - попробовать перенаправлять пакеты не на IP адрес хоста, а на широковещательный адрес, у вас он, видимо, такой: 192.168.0.255
    Написано
  • Почему не работает Wake On Lan?

    @res2001
    Fragen2510, Какие пакеты формирует при пробросе роутер внутрь сети?
    Там широковещательный IP?
    Возможно протухает ARP кэш на роутере. Попробуйте добавить статическую пару МАС-IP в кэш, если это возможно.
    Написано
  • Почему не работает Wake On Lan?

    @res2001
    я через Wan запрос отправляю

    Для начала добейтесь работы внутри сети. Когда там заработает, то можно будет проверять работу из вне. А так вы толком не знаете, то ли криво работает проброс, то ли настройки компа кривые. Исключите хотя бы один фактор для начала.
    Написано
  • Объясните, пожалуйста, смысл такого фрагмента кода класса _Iosb файла xiosbase?

    @res2001
    Почему нельзя было объявить _IOSskipws и другие поля внутри перечисления _Fmtflags ?

    Можно было.
    Но автор пытался показать, что это не просто перечисление, а это тип битового флага с маской и нулевым значением -с возможным диапазоном значений - все что укладывается в маску. Другое дело, что перечисление для этого не слишком подходит.
    В самом перечислении _Fmtflags значения _Fmtmask и _Fmtzero указывают компилятору максимальное и минимальное значение, по ним компилятор может выбрать подходящий тип данных для хранения значений перечисления. Хотя по умолчанию компилятор использует для перечислений int, но флагами компилятора можно заставить изменить это поведение на более адекватное.
    Правильно ли понимаю, что после присвоения _Fmtflags skipws = (_Fmtflags)_IOSskipws; _IOSskipws становится челном перечисления _Fmtflags ?

    Не становится.
    Оказывают ли поля _Fmtmask = 0xffff, _Fmtzero = 0 перечисления _Fmtflags, какое либо влияние на поля _IOSskipws и другие поля, например, поле skipws поменяет значение своих битов после присвоения ?

    Не оказывают. Поле skipws после присвоения будет равно _IOSskipws.

    Учитывая, что skipws, unitbuf, adjustfield это, по всей видимости, битовые флаги (ну как минимум последнее из них), то тип данных у них должен быть какой-нибудь uint16 или uint32, а ни как не _Fmtflags. Но автор так видит, что ж тут поделать. В целом это работает, но немного запудривает мозг читающему код.
    Написано
  • Как автоматически ввести команду из одной программы в консоль другой программы?

    @res2001
    Вторую программу запускайте из первой, перенаправляя стандартные потоки ввода-вывода в каналы.
    Тогда сможете из первой писать в канал stdin второй и читать из канала stdout/stderr.
    К С++ тема отношения не имеет, т.к. тут больше работа с API ОС, а язык не так важен.
    Написано
  • Как настроить Visual Studio 2022 на нужную кодировку для вывода русского текста в консоли?

    @res2001
    Дамир Валиахметов,
    А как писать сразу в нужной кодировке?

    По ссылке в первом комментарии есть пример как это можно делать.
    Если кратко, то суть такая:
    1. все строковые литералы в исходниках пишем с префиксом L: L"Привет мир!", сохраняем в wchar_t/wstring, для работы со строками используем функции для широких строк (с префиксом w/wcs) или методы wstring.
    2. При старте программы узнаем кодировку вывода консоли и сохраняем для дальнейшего использования. При выводе строк в консоль предварительно строку конвертируем в текущую кодировку консоли. Все это в примере по ссылке есть.
    3. Для ввода из stdin нужно установить его режим с помощью _setmode. При установке режима _O_U16TEXT весь ввод будет автоматически конвертироваться в wchar_t.

    По той ссылке автор вопроса сам дал ответ. Его вариант проще и он в большинстве простых случаев будет работать. Можете его использовать - там перекодирование происходит автоматически при выводе и вводе. Но так же везде требуется использовать wchar_t.
    Но часто в "нормальных" консольных утилитах надо получать выхлоп от утилиты в кодировке консоли, а не в той кодировке, в которой программа захочет его выдать. Для примера можно посмотреть на любую стандартную консольную утилиту виндов, например dir и т.п. - они работают правильно не зависимо от кодировки консоли и выдают информацию в установленной в консоли кодировке (кодировку вывода можно определить перенаправив вывод в файл). Правда даже стандартные утилиты не все это делают корректно, сходу пример не приведу, но точно встречал такие.
    Написано
  • Как настроить Visual Studio 2022 на нужную кодировку для вывода русского текста в консоли?

    @res2001
    Дамир Валиахметов, В MSVS, на сколько я знаю, нет настроек кодировки файлов по умолчанию.
    С/С++ стандарты разрабатывались с ориентировкой на POSIX совместимые ОС. Винда не POSIX совместима, отсюда вылезают разнообразные не стыковки. В винде кодировку консоли можно менять динамически и по умолчанию там используется 866 кодировка. В POSIX ОС используется одна кодировка консоли.

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

    Переходите на Линукс, там этой проблемы нет.
    Еще один вариант - не используйте крилицу в ваших программах.
    Написано
  • Как настроить Visual Studio 2022 на нужную кодировку для вывода русского текста в консоли?

    @res2001
    Почитайте для начала тут.
    Я там написал длинный пост на эту тему.
    В самой студии изменить кодировку файла исходного кода можно с помощью Save as и там в диалоге жмякнуть на Save->Save with Encoding и выбрать нужную кодировку. Но так придется делать для каждого файла отдельно.
    Для UTF-8 лучше выбирать вариант с BOM (микрософт это называет "with signature"), чтоб студия по собственному желанию не меняла кодировку.
    Написано
  • Можно ли настроить в openvpn аутентификации по открытым/закрытым ключам?

    @res2001
    DVoropaev,
    Я так понимаю ответ на мой вопрос "нет".

    Если вы имеете в виду использовать ключи ssh в OpenVPN, то, видимо, нет. Хотя точно утверждать не могу, т.к. вопросом не интересовался. Может быть можно конвертировать в формат PKI, но опять же появятся сертификаты и т.п.

    Как вариант использовать в openvpn авторизацию по логину/паролю. Сам не делал никогда, но такое она то же умеет. Тогда сможете явно удалять пользователей.
    Написано
  • Какой atomic::Ordering нужен в этих ситуациях?

    @res2001
    Eugene Usachev,
    но в Rust можно использовать не только SeqCst в CAS операциях

    В С/С++ в CAS то же можно использовать разные варианты, на свое усмотрение.
    На сколько я понимаю схему работы memory ordering, то их нужно применять когда:
    1. после записи в атомарную переменную вы должны опубликовать текущие изменения значений других переменных то же
    2. после чтения атомарной переменно вы должны получить измененные значения других переменных.

    Т.е. если вам нужно работать только со значением самой атомарной переменной и окружение не важно, то можно использовать relaxed - синхронизация атомарной переменной будет обеспечена и в этом случае.

    Поэтому для вашего первого примера вполне достаточно relaxed.
    На счет второго - для работы только со счетчиком можно использовать и relaxed, но т.к. мьютекс должен обеспечивать после захвата синхронизацию памяти для внешних переменных пользователя, то я бы делал SeqCst или Acq. Либо в самом CAS использовать Relaxed, но если мьютекс захватываем то дополнительно добавить синхронизацию atomic_thread_fence(SeqCst) (думаю в rust есть свой аналог).
    Но вообще нужно смотреть на код, т.к. даже если вы не захватываете мьютекс, то вам нужно поместить поток в очередь, а сама очередь - это то же разделяемые данные, которые можно синхронизировать в CAS или отдельно. Либо очередь должна быть потокобезопасной сама по себе.

    Вообще можно делать так - в первоначальном варианте задавать везде SeqCst. Когда алгоритм заработает, то можно поиграть на ослабление, по одной меняя упорядочивание и после каждой замены тестировать работу. В любом случае атомарные алгоритмы требуют тщательного тестирования.
    Написано
  • Стоит ли использовать блоки кода для ограничения области видимости?

    @res2001
    Стоит/не стоит - каждый решает сам для себя.
    Если функция из 3 строчек, как в примере, то в этом смысла нет.
    Альтернатива блокам - блок кода выделить в функцию. Компилятор ее заинлайнит и эффект с областью видимости будет такой же. Чаще предпочитаю этот вариант, но иногда бывает и блоки использую, если блок прям ну очень короткий 1-2 строки и больше не повторяется.
    Но самый частый вариант - забить на дополнительные скобки и писать в одном блоке кода все что нужно - при выходе из функции все равно все стековые переменные уничтожатся. Уничтожаться они на пару строк раньше или позже, обычно роли не играет. Но всегда могут быть исключения.
    Кстати, далеко не факт, что компилятор вообще вставит хоть какие-то команды на закрывающей скобке, по идее он должен поменять регистр указателя стека, но так же он может счесть это не нужным. Но проверить, что переменная вышла из области видимости он не забудет в любом случае.
    Написано
  • Можно ли настроить в openvpn аутентификации по открытым/закрытым ключам?

    @res2001
    DVoropaev, С отзывом все немного не так работает, как вы описали.
    то у мне понадобится информация о его сертификате для отзыва

    Да, информация понадобится. И она есть в ЦА, который у вас будет в том или ином виде. ЦА терять не нужно - это самая важная вещь в PKI, а если потеряете - ну тогда все - меняйте вообще все сертификаты и заводите новый ЦА.
    PKI можно использовать с массой других продуктов, тогда как ключи ssh используются только в ssh, по моему.
    Написано
  • Можно ли настроить в openvpn аутентификации по открытым/закрытым ключам?

    @res2001
    Можно, только в OPenVPN используются подписанный ЦА сертификат+приватный ключ, а не просто пара ключей как в ssh. Т.е. ключи не совместимы.
    Не знаю, можно ли преобразовать ssh ключи в формат сертификата.
    Написано
  • После запуска 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

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