Задать вопрос
  • Как расшифровать файл .car?

    TrueBers
    @TrueBers
    Гуглю за еду
    Может быть, открыть гугл, погуглить "car file unpacker" и найти скрипт для распаковки?
    Да не, бред какой-то...
    Ответ написан
    Комментировать
  • Математика для геймдева. Какие материалы посоветуете для изучения?

    TrueBers
    @TrueBers
    Гуглю за еду
    Это всё мифы и легенды, что для геймдева нужны невероятные знания математики и линейной алгебры. Только если не пишешь авиасимулятор, симуляцию гидроаэродинамики, частиц или что-то подобное.

    Для начала хватит простейших преобразований матриц и операций с векторами, кватернионами. Это покроет процентов 80, необходимых для изучения 3d графики.
    Возьми любой современный курс по графике, там обычно даются базовые материалы для необходимой теории.

    Тот же курс по OpenGL от Джоуи де Фриса learnopengl.com можно взять. Отличный курс. У него есть адаптации под различные языки программирования.
    На его основе ещё есть курсы по Vulkan и, возможно, DirectX.

    И от математической базы там зависит ну от силы процентов 5. Только если не собираешься прям исследованиями заниматься, пилить свои гениальные алгоритмы. 99% уже написано топовыми математиками, достаточно взять и использовать у себя в проекте, если позволяет лицензия. Не бездумно, конечно, базовое понимание работы алгоритма должно быть, само собой.

    Геймдев -- скорее про архитектуру ПО и паттерны проектирования, про взаимодействие, про оптимизацию, расположение данных в памяти, понимание, как эти данные по железу гоняются, как их эффективнее прочитать или записать. Математику красивых пост-процессингов за нас написали профессора из исследовательских центров NVidia, AMD, Intel, и т.п.
    Ответ написан
    Комментировать
  • Есть ли фриланс на С++ с нуля?

    TrueBers
    @TrueBers
    Гуглю за еду
    C++ -- инструмент, а не цель.

    "Если у меня есть молоток, то какие типы гвоздей мне им забивать?"

    На C++ можно писать ОС, игры, прикладные программы, системные утилиты, драйверы, прошивки, серверы, базы данных, да хоть чёрта лысого.
    Что интересно самому, тем и занимайся. C++ тут не причём, это 10% от всего, что нужно изучать.

    Большинство заказчиков на фрилансе вообще не шарят за языки и технологии. Им важно, чтобы задача была выполнена, а на чём ты её напишешь, большинству обычно всё равно.
    Ответ написан
    2 комментария
  • Как исправить ошибку LNK2001 unresolved external symbol __imp_GetUserNameW C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Гуглим название функции: GetUserNameW.
    Заходим по первой же ссылке на документацию Microsoft.
    Там спускаемся в раздел Requirements.
    В строке "Library" видим Advapi32.lib.

    Теперь гуглим текст ошибки LNK2001 unresolved external symbol и переходим по первой ссылке, которая снова, внезапно, по невероятному стечению обстоятельств оказывается документацией Microsoft.
    Там читаем описание ошибки, и что нужно сделать, чтобы её устранить. Там даже ссылка на StackOverflow оставлена!

    2 основных варианта: либо в настройках проекта добавляем эту библиотеку к списку линкуемых, либо прямо в коде говорим линкеру #pragma comment(lib, "Advapi32").
    Браво! Вы великолепны!
    Да ещё и потратили в 3 раза меньше времени, чем писать сюда вопрос.

    Не сложно, если захотеть, правда?
    Ответ написан
    Комментировать
  • MSVCP140.dll, что делать sfml?

    TrueBers
    @TrueBers
    Гуглю за еду
    6440f5fb8784f355684811.png
    Ответ написан
  • Не работает интернет после установки Linux. Что делать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Первая же ссылка в гугле по запросу "RTL8821AU Linux" говорит о том, что Realtek забил болт на всех, и исходники драйвера для этого чипа никогда не публиковались, соответственно, их не может быть в ядре изначально.

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

    Для Федоры: https://copr.fedorainfracloud.org/coprs/sunwire/dk...
    Для Арча: https://aur.archlinux.org/packages/rtl8821au-dkms-git
    Для Убунты не припомню собранного актуального модуля.

    Для самостоятельной сборки: https://github.com/morrownr/8821au-20210708

    UPD: От себя добавлю, что драйвер очень глючит, что под Линуксами, что под Виндой. Если используется не для кулхацкинга и режима монитора, то лучше купить что-то понадёжнее.
    Ответ написан
    Комментировать
  • Как можно перебирать слова в C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Обычно, слова в коде Морзе в рукописном варианте делят не пробелами, а прямым слешем: "/". А если в кодировке, то 7-ю длительностями низкого уровня.

    Словарь на такое мизерное количество ключей будет иметь на порядок больше оверхеда, чем простой линейный поиск в массиве:

    C++23
    #include <string>
    #include <string_view>
    #include <ranges>
    #include <array>
    #include <utility>
    #include <algorithm>
    #include <cassert>
    #include <stdexcept>
    
    template <typename Key, typename Value, std::size_t Size>
    struct Map {
    	std::array<std::pair<Key, Value>, Size> data;
    
    	constexpr Value at(const Key key) const {
    		const auto iter = std::find_if(std::begin(data), std::end(data),
    			[&key](const auto& v) { return v.first == key; });
    
    		if (iter == std::end(data)) {
    			throw std::range_error("unknown character");
    		}
    		return iter->second;
    	}
    };
    
    static constexpr std::array<std::pair<std::string_view, char>, 51> MORSE_MAP = { {
    	{"•-", 'A'},      {"-•••", 'B'},    {"-•-•", 'C'},   {"-••", 'D'},
    	{"•", 'E'},       {"••-•", 'F'},    {"--•", 'G'},    {"••••", 'H'},
    	{"••", 'I'},      {"•---", 'J'},    {"-•-", 'K'},    {"•-••", 'L'},
    	{"--", 'M'},      {"-•", 'N'},      {"---", 'O'},    {"•--•", 'P'},
    	{"--•-", 'Q'},    {"•-•", 'R'},     {"•••", 'S'},    {"-", 'T'},
    	{"••-", 'U'},     {"•••-", 'V'},    {"•--", 'W'},    {"-••-", 'X'},
    	{"-•--", 'Y'},    {"--••", 'Z'},    {"-----", '0'},  {"•----", '1'},
    	{"••---", '2'},   {"•••--", '3'},   {"••••-", '4'},  {"•••••", '5'},
    	{"-••••", '6'},   {"--•••", '7'},   {"---••", '8'},  {"----•", '9'},
    	{"•-•-•-", '.'},  {"--••---", ','}, {"---•••", ':'}, {"••--••", '?'},
    	{"•----•", '\''}, {"-••••-", '-'},  {"-••-•", '/'},  {"-•--•", '('},
    	{"-•--•-", ')'},  {"•-••-•", '"'},  {"-•••-", '='},  {"•-•-•", '+'},
    	{"-••-", 'x'},    {"•--•-•", '@'},  {"/", ' '} } };
    
    constexpr auto decode(std::string_view morse) {
    	constexpr auto map = Map<std::string_view, char, MORSE_MAP.size()>{ MORSE_MAP };
    	return morse
    		| std::ranges::views::split(' ')
    		| std::ranges::views::transform([](auto&& range) {
    			return map.at(std::string_view{ range });
    		})
    		| std::ranges::to<std::string>();
    }
    
    int main() {
    	const auto CODE = "•••• • •-•• •-•• --- --••--- / •-- --- •-• •-•• -••";
    	const auto TEXT = "HELLO, WORLD";
    
    	assert(decode(CODE) == TEXT);
    
    	return 0;
    }
    Ответ написан
    Комментировать
  • Как убрать предупреждение "F может быть равно NULL"?

    TrueBers
    @TrueBers
    Гуглю за еду
    Как минимум, не мешать Си и Си++, а писать на чём-то одном, и различать их.
    Во-вторых, зачем от предупреждения избавляться? Его нужно понять, почему оно появляется. Когда будет понимание, тогда всё станет на свои места.

    Достаточно предположить, что функция fopen_s внезапно не сможет открыть файл и вернёт ошибку. Допустим, файла не существует, или на его открытие нет прав у пользователя. Ты же не проверяешь возврат результата из функции открытия и пытаешься что-то записать в F, даже если функция не смогла открыть файл и вернула ошибку. А когда она вернёт её, переменная F останется нулевыем указателем или, в первом твоём случае, вообще будет обращение к неинициализированной переменной, где ты получишь неопределённое поведение. Вот оно и ругается на эту ветку развития событий.

    Добавь проверки на возвращаемые значения функций, и предупреждение пропадёт.
    Ответ написан
    Комментировать
  • Прокси на Mikrotik как использовать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Только если через костыль караулить трафик перед адресом:портом локального сокс сервера Микротика, кидать его на Layer7, там искать регекспом логин:пароль апстрим сервера, маркировать прошедшее фильтры соединение. А потом это соединение редиректить через dst-nat на заранее указанный для метки/списка_адресов апстрим socks5.

    Только надо учесть, что при коннекте с downstream клиента к прокси Микротика, ему придётся указывать логин:пароль сразу от upstream прокси, а не от роутера. На Микротике при этом может быть любой юзер:пасс, до его проверки всё равно нужные соединения доходить не будут, а "аутентификация" будет проходить в Layer7 как условие маркировки соединения.

    Костыль, конечно, и не особо гибко, но других вариантов я не вижу.
    Ответ написан
    Комментировать
  • В visual studio теперь нет UWP C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    63ec4216a94ac078531627.pngВсё на месте. Blank App (C++/WinRT) template создаёт XAML проект.
    Ответ написан
    2 комментария
  • С чего начать изучать математику?

    TrueBers
    @TrueBers
    Гуглю за еду
    Может, сначала решить, в какой прикладной области она тебе интересна?
    Математика применима примерно везде. Но сразу везде её нереально применять.
    Первым делом лучше понять, что конкретно интересно, какая область применения, а потом уже приступать к изучению.
    Или просто изучение ради изучения?
    Ответ написан
    Комментировать
  • Что за типы функций при импорте OpenCV DLL в Delphi?

    TrueBers
    @TrueBers
    Гуглю за еду
    не спрашивайте зачем мне это нужно
    действительно. C++ ABI -- это боль, сильная боль. Даже разработчики компиляторов страдают от неё. Если вам уж прям так важно поковыряться в его кишках, то изучайте исходники LLVM и спецификацию стандарта ABI. А если нет, то возьмите OpenCV C API и не выносите себе голову.

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

    чем отличается от обычных деструкторов
    Стандарт определяет деструкторы:
    1. base object destructor
    2. complete object destructor
    3. deleting destructor
    4. trivial/non-trivial destructor

    Что из этого есть "обычный" деструктор?

    Здесь про деструкторы и псевдо-код порядка их вызовов. Здесь -- про общее устройство виртуальной таблицы.

    что на самом деле означает `vbase destructor`, в каких случаях он вызывается
    Есть предположение, что это имя экспортируемого complete object destructor для класса, базовым классом которого является класс с виртуальным деструктором. То есть, он выполняет часть процесса цепочки деструкторов, которая помимо вызова base object destructor, вызывает также все деструкторы для всех базовых виртуальных классов. Но при этом ещё не вызван deleting destructor, который собственно вызывает operator delete. Т.е. получается, что complete object destructorпо включённому в него списку действий, как бы "наследуется" от base object destructor. В свою очередь, deleting destructor "наследуется" от complete object destructor.

    Предполагаю, что вызывается автоматически в замыканиях. Но что на самом деле означает `default constructor closure'
    Для чего он может вызываться в замыканиях, просто чтоб было?

    Моё же предположение, что это замыкание -- некий адаптер-костыль чтоб привести нетривиальные параметры конструктора в удобоваримую ABI-форму, и вызывается когда default constructor имеет default non-trivial parameters, для которых надо сначала вызвать конструктор, либо когда это variadic конструктор, которому нужно привести список аргументов к Сишному `va_arg`, чтобы переслать их через границу ABI. Вот в этом случае он вызывается, как я понимаю.

    Один ценный никому не нужный совет: тебе НЕ НУЖНО в этом разбираться. Брось эту затею и возьми сишный API.
    Ответ написан
    3 комментария
  • Как проверить тип прокси?

    TrueBers
    @TrueBers
    Гуглю за еду
    Отправить заголовок \x05\x01 и метод аутентификации \x00-\x02
    Если в ответ придёт \x05 и код переданного метода аутентификации или \xFF -- значит это сокс5.

    Либо сделать HTTP запрос CONNECT. Если придёт ответ, значит это, внезапно, http-прокси.
    Ответ написан
    Комментировать
  • Звонки в приложениях(веб, мобилка), какие способы реализации?

    TrueBers
    @TrueBers
    Гуглю за еду
    Подавляющее большинство звонилок написано на WebRTC. Что-то вы, видимо, делали не так.

    Беда с выводом звука на айос, и всякого рода проблемы на всех платформах.

    Вывод звука никак не связан с технологией, а лишь с упорством её подпиливания под свою задачу.
    Ответ написан
    Комментировать
  • Как в C++ создать процесс с именем Load.txt?

    TrueBers
    @TrueBers
    Гуглю за еду
    В стандарте С++ нет понятния процесса.
    Ответ написан
    Комментировать
  • Как Определить SSL Сертификат Android приложения?

    TrueBers
    @TrueBers
    Гуглю за еду
    Отреверсить приложение и посмотреть.

    Здесь собрана солянка из различных популярных методов пининга.

    С 90% вероятностью, твой пиннинг там есть.
    А остальные 10% -- пининг зашит в недрах нативной либы.
    Ответ написан
    2 комментария
  • Какую книгу прочитать по C?

    TrueBers
    @TrueBers
    Гуглю за еду
    Спецификация Стандарта C18 -- 540 страниц.
    Спецификация Стандарта С++20 -- 1900 страниц.

    Разница есть? :-D
    Ответ написан
    Комментировать