Задать вопрос
  • Как написать вариадический оператор по SFINAE для умного указателя на Т, который может быть функцией?

    @res2001
    Павел Соколов, По моему этим вариантом вы проблему вообще ни как не решаете.
    DLL может быть выгружена, а указатель при этом останется, только он теперь будет указывать в не распределенное пространство памяти. И вызов функции через этот указатель приведет к падению программы.
    Написано
  • Где в Windows хранятся свойства ярлыков?

    @res2001
    Kirgus, Рабочая папка в ярлыке при запуске программы преобразуется в текущий каталог в окружении запущенной программы. Но если путь не существует, то система подставляет какой-то свой (предположительно %SystemRoot%\system32). И если программа прекрасно работает с "каким-то" путем, то она скорее всего будет так же прекрасно работать с любым другим путем. Думаю нет смысла беречь этот не существующий путь. Вы можете скопировать оригинальный ярлык куда-нибудь, рабочий ярлык исправить и поработать какое-то время. Когда убедитесь, что все нормально, можно и копию будет грохнуть. Работа нормально написанной программы не должна зависеть от текущего каталога, т.к. этот фактор всегда может поменяться по независящим от программы причинам.

    На сколько я знаю Qt Creator к системе не привязывается и вроде бы его можно просто переложить в другое место и он будет работать от туда. Хотя я таких экспериментов не проводил. Предпочитаю ставить в другом месте с нуля. Даже если после переноса что-то не заработает, то можно запустить Maintenanse Tools и выполнить восстановление. Как-то так вижу.
    Написано
  • Какие самые большие пакеты пропускает ping в windows и как задать минимальную задержку между отправкой?

    @res2001
    Сайты открываются через раз

    Чем вам помогут большие пинги и уменьшение задержек на отправку? Кроме того в винде нельзя отрегулировать скорость отправки пингов. Можно задать только время ожидания ответа.

    Просто запустите вечный пинг (опция /t) и посмотрите как плавает время.
    Если случаются большие провалы по времени ответа или вообще пропадание ответов, то возможны проблемы:
    0. в вашем оборудовании
    1. у провайдера, пожалуйтесь прову на большие задержки, пусть исправляет ситуацию.
    2. возможно это проблемы на стороне удаленного хоста, тогда жаловаться надо его владельцам

    Проведите опыт для нескольких разных узлов в интернете, чтоб исключить вариант с проблемами на удаленном хосте.
    Написано
  • Где в Windows хранятся свойства ярлыков?

    @res2001
    Kirgus,
    А если указан несуществующий путь, то ты не сможешь внести другие правки в свойства этого ярлыка. Винда просто не позволит применить изменения...

    Есть такое.
    Программно можно создать ярлык можно с помощью WSH (JS/VBS) скрипта, там есть соответствующий объект. Можно ли поправить свойства существующего ярлыка - не знаю. Наверное есть соответствующие средства и в power shell.
    Но! Скажите нахрена вам в ярлыке не существующая рабочая папка? Если не знаете что указать - укажите %SystemRoot%\system32
    В конце концов, создайте этот путь временно, поправьте ярлык и удалите.
    Написано
  • Как исправить ошибку NameError: 'BoolVariable' is not defined при создании c++ сборки в godot-cpp?

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

    PS: scons не при делах, лучше выкладывать текстом, а не скринами.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Дмитрий Зеленев, Если пользуетесь компилятором с поддержкой C++20, то можете поэкспериментировать с char8_t и u8string. Можно строку читать в массив char8_t, строковое представление делать с помощью u8string_view, а для записи в xlsx преобразовывать указатель на массив в char*. Только, видимо, надо будет озаботится самому наличием завершающего нуля в конце массива.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Дмитрий Зеленев, Для UTF8 нужно использовать wstring. string для однобайтовых кодировок.
    Написано
  • Как увидеть русские символы в обычной строке в отладчике Visual studio?

    @res2001
    Строка то откуда взялась? Из файла? В какой кодировке она в файле?
    Написано
  • Будут ли проблемы с монтированием раздела диска NTFS?

    @res2001
    В линукс ставь Samba client (во многих дистрибутивах стоит по умолчанию) и через него получай доступ к расшаренным с винды ресурсам. Samba - это свободная реализация сетевого протокола винды.
    Написано
  • Git удалил коммит/ы при переключении веток с помощью checkout?

    @res2001
    Может вопрос решиться командой:
    git log --all
    Написано
  • Код должен выводить только те буквы, которые встречались во всех словах, но вместо этого программа резко завершает работу. Что не так?

    @res2001
    Ланской Кирилл, Сложные структуры, работают сложно и соответственно дольше, чем простые, плюс еще используют динамическую память. Выделение/освобождение памяти - очень время затратная операция.
    Массив - самая простая структура в языке.

    Если вам важна производительность, то лучше не использовать динамическую память, а если деваться не куда, то лучше ее выделять перед алгоритмом и освобождать в конце, но не на каждой итерации.
    Конкретно для этой задачи достаточно обычного статического массива.

    На счет алфавитного порядка - буквы в ASCII таблице отсортированы по алфавиту (https://www.asciitable.com/), так что просто перебираете все буквы начиная с меньшего индекса и получаете автоматически упорядоченный список букв. Правда это верно только для английских букв, в русских кодировках (их несколько) это не для всех букв работает. Например в CP1251 и CP866, которые есть в винде по умолчанию буква 'ё' выбивается из порядка. В KOI8-R - вообще с этим бардак. Но в задании вроде бы нет условия выводить буквы в алфавитном порядке. Кроме того не известно какая кодировка будет на входе.
    На счет упорядочивания в set - не уверен, что set для charов использует именно алфавитное упорядочивание, скорее всего так же сравнивает по ASCII кодам. А значит упорядочивание будет таким же как с массивом. Но тут можно поиграться с шаблонным параметром Compare для Set (https://en.cppreference.com/w/cpp/container/set), задав в качестве компаратора функцию, которая умеет в алфавитное упорядочивание.
    Впрочем, что-то похожее можно придумать и при выводе букв из массива.
    Написано
  • Код должен выводить только те буквы, которые встречались во всех словах, но вместо этого программа резко завершает работу. Что не так?

    @res2001
    Зачем тут вообще список или еще более сложная структура? Все эти структуры работают с динамической памятью, а это дополнительные временные затраты.

    Вам надо просто посчитать количество вхождений каждой буквы и количество слов и вывести все буквы, где количество вхождений больше, чем количество слов.
    Для хранения счетчиков букв достаточно статического массива фиксированного размера uint32_t[256]. В этом массиве индекс будет ASCII кодом буквы.

    Но с таким подходом есть то же пара проблем:
    а) на сколько понял, первой строкой вы получаете список букв, которые надо посчитать, т.е. не все буквы надо учитывать, а только из списка;
    б) что делать со словами в которых одна буква встречается несколько раз?

    Проблема (б) решается заменой массива uintов на массив структур. Структура примерно такого вида:
    struct {
     uint32_t count_letter;
     uint32_t version;
    }

    count_letter - это счетчик букв, version - это "версия" - просто номер последнего слова в котором была эта буква.
    Перед тем как инкрементировать count_letter проверяете условие: version < current_word_number. Если условие выполняется - инкрементируете и обновляете версию, если не выполняется - значит эта буква в этом слове встречается не один раз и повторно ее не учитываем.

    Проблема (а) решается просто - первое слово, содержащее список букв, просто обрабатываем как обычное слово - инкрементируем счетчик букв и счетчик слов.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя,
    а если я создам C файл с функцией в которую вынесу нужный мне функционал библиотеки

    Перечитал тут ваш последний вопрос и возник встречный вопрос: что значит "вынесу"?
    Скопирую из заголовка в .cpp файл какой-то участок кода библиотеки?
    Это бесполезное занятие.
    В .cpp файле вы должны написать код, который будет использовать шаблонный класс/функцию из библиотеки.
    Т.е. это будет не код библиотеки, а ваш новый код.
    Копи-паст тут не прокатит.

    Подобная обертка для экспорта функционала обычно бывает очень простой, если не сказать элементарной - в вашей функции будет вызываться функция библиотеки, с соответствующими преобразованиями типов.
    Написано
  • Плохо решаю задачи, как повысить квалификацию?

    @res2001
    Это навык как и практически все остальное. Прокачать его можно только тренировками, т.е. больше практики.
    Т.к. вы хотите повысить эффективность своих решений, то просто практики мало. Вы должны решить задачу самостоятельно, а затем погуглить, как решают эту задачу другие люди. Ни в коем случае не наоборот. Может быть собрать чужой код, протестировать производительность вашего и чужого. Попытаться понять чем чужой код более эффективен, чем ваш, изучая исходники.
    Кстати, навык понимания чужих исходников (и это то же навык) очень востребован в больших проектах.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя,
    будет ли весь необходимый код(библиотеки) содержаться в .lib?

    Если абстрагироваться от того, что вы пишете про Си, а нужно С++, то да, в полученной библиотеке на основе вашего кода + кода исходной библиотеки будет содержаться все что нужно. Точнее то что вы экспортируете, то там и будет содержаться.

    Как выше было замечено экспортируемые функции должны быть объявлены как extern C - это директива С++, которая заставляет компилятор не использовать в объектном файле С++ расширения. Это позволяет использовать такую библиотеку в программах написанных практически на любой ЯПе, который умеет работать с Си библиотеками.
    Т.е. снаружи ваша библиотека будет выглядеть как Си библиотека, хотя написана будет на С++.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя, В Си нет шаблонов. Файл вы можете создать любой, компилятору в принципе все равно какое расширение у него будет. Но содержать он должен C++ код и компилятор надо использовать для С++.
    Обычно компиляторы для Си и С++ разные. Разве что микросовтовский cl умеет и то и то, но там свои заморочки, т.к. официально он стандарты Си не поддерживает (по крайней мере в недалеком прошлом так было, давно уже в него не заглядывал), но Си код компилировать умеет.

    Например в gcc надо использовать g++ для С++ кода и gcc для Си кода.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя, Инстанцирование - создание из шаблона реального оъекта подстановкой в шаблон реальных параметров.

    В общем, если в заголовках библиотеки шаблоны, то вам надо написать код на С++, который эти шаблоны будет представлять в реальные объекты. И уже эти реальные объекты, созданные вашим кодом вы можете экспортировать в rust.

    Т.е. шаблонный код - это абстракция, которая сама по себе скомпилироваться и исполняться не может. Но когда на основе этой абстракции будет сгенерирован реальный код/объект - его уже можно скомпилировать, выполнить и т.д. и т.п.

    В С++ инстанцирование шаблонов происходит во время компиляции. Компилятор сам создает реальные объекты, подставляя в шаблон соответствующие параметры.
    Написано
  • Вызов функций С++ из .h?

    @res2001
    Имя,
    правильно ли будет скомпилировать .h файлы в единую .lib и линковать её с Rust?

    Если библиотека на шаблонах, то вы не сможете просто так ее скомпилировать, используя только одни заголовки этой библиотеки.
    Потребуется написать код на С++, который будет инстанцировать нужные в Rustе шаблоны (объекты) и предоставлять их функционал для rust. И уже этот код собирать как свою библиотеку, а не исходную.
    Написано
  • Как уменьшить время компиляции в UE5?

    @res2001
    Я не в теме game dev и UE. Мне кажется, что перечисленные вами варианты не относятся к компиляции С++ кода.

    Если все же относятся, то:
    1. Есть ccache - кэширует работу компилятора. Дает приличное ускорение при повторных сборках. По моему все современные компиляторы умеют с ним работать.
    2. Если собираете с помощью cmake (или другой аналогичной системрй сборки), то можно установить ninja build и использовать соответствующий генератор cmake. ninja то же дает ускорение по сравнению с make.
    3. Если памяти много, то можно сделать RAM диск и заставить компилятор собирать проект на этом диске.
    Написано
  • Как автоматизировать процесс установки программ на 1000 компьютерв?

    @res2001
    Перезаливать ОС теряя официальную винду и ставить корпоративный образ

    У вакс куплено 2 версии винды на 1000 компов? Видимо в конторе много лишних денег, раз так разбрасываетесь. На 1000 компов - это существенные суммы.

    Как тут уже писали, ключ прописывавется в биосе и при установке новой винды он подхватывается автоматически.

    Сменить ключ в винде можно без переустановки и превратить например домашнюю в pro, правда там наверняка не хватает какого-то софта. Возможно он подтянется после обновления, а может и нет. Тут я не в курсе, никогда таким не занимался.

    Можно и переустановить. Варианты групповой установки есть, от накатывания эталонного образа, до, например, разворачивания Windows Deployment Services, вроде так это называется сейчас и установки новой винды на компы через PXE загрузку (или с некоторого загрузочного носителя, если биос не поддерживает PXE). Устанавливаемый образ нужно предварительно подготовить, закинув в него файл ответов, где будет прописан корпоративный ключ и т.д. и т.п. Там много чего можно настраивать во время установки через файл ответов.
    Если у вас не будет домена (что само по себе странно, учитывая количество компов), то при установке винды надо как минимум обеспечить чтоб на всех компах был локальный администратор с одним и тем же именем и паролем. Практически все остальные действия на уже установленной винде (зная логин/пароль администратора) могут бы выполнены по сети. Без домена и GPO, это будет достаточно трудоемко на первых порах - нужно будет скриптовать все действия. Впрочем, немного практики и это будет получаться достаточно быстро. Тут даже сторонние утилиты не особо нужны, достаточно имеющихся на борту встроенных средств.

    Бесплатных сторонних инструментов сравнимых по функционалу с AD+GPO нет.
    Платные стоят нормальных денег, а с учетом того, что они либо повторяют либо расширяют функционал AD+GPO, то их необходимость сомнительна.

    У меня был опыт управления не большой сетью без виндового домена. Домен был, но не AD, и у него в плане управления рабочими станциями функционал был достаточно куцый, так что приходилось много чего делать подобным способом.
    Написано