• Есть ли хорошие книги по OpenGL без программирования?

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

    OpenGL —это графическое API (Application Programming Interface). Как можно учить programming interface без самого programming?

    Может, вы путаете OpenGL с общим понятием графики вообще?

    Если вы уверены, что не путаете, ответ — такого не бывает. Без примеров, проб и ошибок ничего не учится...

    Ну, а классика среди книг по OpenGL — OpenGL Programming Guide (9th Edition)
    Ответ написан
    Комментировать
  • Как определять ответственность функций?

    TrueBers
    @TrueBers
    Гуглю за еду
    По своему опыту могу сказать:
    Всё это бесполезный треш, все эти описания как надо, как правильно, как делают гуру, как делают в НАСА, солиды, банды четырёх, десяти, трёхсот спартанцев и т. д. Но, ровно до того времени, пока вы сами до этого не дойдёте. А дойти до этого можно только с опытом. Когда вы пишете что-то относительно не крупное, эти все вещи можно опускать. А когда приходите к огромному проекту, всё идёт само по себе, ибо иначе вы просто не можете с этим взаимодействовать, либо если система уже достаточно хорошо спроектирована, вам приходится писать правильно, т. к. по-другому либо не получится, либо вам дадут по шапке ревьюверы.

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

    Рецепт прост: пробовать, делать, строить, ломать, перестраивать, ошибаться, снова перестраивать. Тупо взять и прочитать, как кто-то там сделал и у него получилось, не прокатит. У него звёзды сошлись, а у вас, у меня, или у неё не сойдутся точно в такой же последовательности. Используйте разные языки программирования, разные парадигмы, фреймворки. Это даёт прекрасное понимание о существовании различных архитектурных решений, которое не даст ни однин теоретический паттерн.

    Я не хочу сказать, что все эти гофы и солиды не имеют смысла, они созданы для того, чтобы для начала просто с ними ознакомиться, отложить в подсознание и... благополучно забыть! Но потом, когда вдруг что-то писал и внезапно осенило: Да это же паттерн медиатор/обсервер/репозиторий/anyPattern! Вот тут и пригодится та самая книга трёх танкистов и собаки, которая просто направит в нужное русло, объяснит остальное, что не успел понять сам, и т. п.

    Всё это моё понимание, работает для меня, может не работать для кого-то другого, кто, например, запоминает 95% прочитанной книги и может уже сразу же адекватно оценить где какой подход использовать, где нужно будет масштабироваться и т.д.

    Но, я пока что таких людей не видел...
    Ответ написан
    3 комментария
  • Как лучше поставить Visual Studio 2017?

    TrueBers
    @TrueBers
    Гуглю за еду
    Как вы её поверх накатить собрались? Она ж рядом ставится просто, хоть все версии можно поставить одновременно, в чём проблема то?
    Ответ написан
    4 комментария
  • Как прочитать указатель из памяти чужого процесса?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хватит плодить вопросы. Ответ на них не поместится на десяток страниц. Почитай лучше про адресацию памяти, что такое абсолютный адрес, относительный, что такое базовый адрес процесса, что такое рандомизация базового адреса. Просто так взять и прочитать память не получится.

    1. Этот адрес работает только для текущего процесса.
    2. Во-вторых, он будет другим при каждом запуске и выделении памяти из кучи.
    3. Он так же может меняться из-за ASLR

    Чтобы докопаться до реальной структуры данных с информацией о персонаже, нужно найти то место в коде, где эта структура выделяется на куче. Т. е. там должно быть что-то типа
    CharInfo info = new CharInfo();
    (_thiscall) CharInfo::CharInfo(info)

    Вот этот кусок кода тебе нужно найти, только так ты сможешь определить статическое место, откуда потом уже будешь плясать. Для поиска кода нужно знать хотя бы основы Ассемблера. Поможет в этом декомпилятор IDA Pro с плагином Hex-Rays.
    Но и этих мест может быть не одно, а десятки и сотни в случае с шаблонными классами и функциями. Тут уже нужен отладчик, чтобы поставить точки останова на чтение или запись памяти, и от них уже отталкиваться.

    Обычным чтением из памяти ты ничего не добьёшься, чтобы пойти по цепочке вызовов с необходимым адресом, тебе нужно самому внедрять свой код в клиент игры, либо пользоваться фреймворками для динамической инструментации, например, DynamoRIO, Intel PIN, Frida.

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

    Начать можно, кстати, с курса Рикардо Нарвахи "Введение в крекинг с нуля, используя OllyDbg". Это огромный курс статей, в которых разбирается всё, что нужно для понимания основ. Там 50 с чем-то глав различной сложности, погугли. Есть ещё на ютубе целый плейлист с видео-разборами этого курса.
    Ответ написан
    Комментировать
  • Работа с памятью процесса как работать с динамическими адресами?

    TrueBers
    @TrueBers
    Гуглю за еду
    Если вам нужно быстро и просто, не вдаваясь в дизассемблеры и реверс-инжиниринг, то пройдите туториал утилиты Cheat Engine. Там отлично и просто рассказано, как искать такие адреса.
    А дальше уже напишете свой сканер под это дело, если нужно.
    Ответ написан
    Комментировать
  • Как сделать смену форм через кнопку далее?

    TrueBers
    @TrueBers
    Гуглю за еду
    Если у вас много разных окон, и хотите сделать по уму, а не как попало, то нужно реализовывать это в виде конечного автомата. Сначала смоделируйте сколько у вас окон, какое из какого умеет открываться, какие могут вместе открываться и т. д., а потом каждое из этих состояний реализовывается и добавляется в общий менеджер состояний, и при клике на кнопку автомат переходит в новое состояние, для которого открываются заранее определённые для него окна.

    Ну, так делают чтобы было удобнее, проще добавлять окна, состояния и т. д. А если у вас 2 окна, то можете сделать в лоб: одно закрывать, другое тут же открывать.
    Ответ написан
  • Как привязать свой домен к сайту работающему на VPS (AWS)?

    TrueBers
    @TrueBers
    Гуглю за еду
    На чём у вас сайт, вообще не важно. Его может и не быть даже. Нужно просто указать адрес вашего инстанса у dns-хостера, у которого вы хостите свой домен.
    Ответ написан
    3 комментария
  • Почему btrfs сжимает не все?

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

    А свободные/занятые данные разве не показывают команды btrfs fi du / и btrfs fi df /?
    Ответ написан
    1 комментарий
  • Как решить проблему Кодировки в Atom?

    TrueBers
    @TrueBers
    Гуглю за еду
    Сохранить исходник в UTF8
    Ответ написан
  • Программы C++, скомпилированные в TDM-GCC, кроссплатформенные?

    TrueBers
    @TrueBers
    Гуглю за еду
    Не бывает кроссплатформенной компиляции, если у языка нет виртуальной машины. Форматы исполняемых файлов у линукса и винды абсолютно разные, рантайм у них тоже разный.

    Кроссплатформенным бывает код, который можно собирать под разные системы.

    На сайте этого тулчейна написано же:
    A compiler suite for 32- and 64-bit Windows based on the GNU toolchain

    Значит, что он умеет только винду.
    Ответ написан
    Комментировать
  • Что то по лучше чем TimeTracker в Upwork?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вам в шарады играть или работать? Что значит "кто до чего додумался"?
    Либо вы получаете по трекеру за час работы, либо фикс прайс, либо недельная/месячная ставка, которую некоторые тоже считают почасовкой, типа ты назвал ставку в $40 в час, у тебя заказчик тупо выкупает 30-40 часов в неделю, в итоге платит 1200-1600 в неделю, как договоритесь. До чего тут ещё можно додуматься?

    Если вам есть, что скрывать или читерить, то лучше не стоит даже начинать, раскроется всё равно, забанят по самые помидоры.
    Ответ написан
    5 комментариев
  • Как исправить неправильное отображение кириллицы в Visual Studio Code?

    TrueBers
    @TrueBers
    Гуглю за еду
    На русском никто в 2017-м году и здравом уме не документирует, только, может, одинэсники. Документируйте на английском, заодно, и вы и препод, язык подтянете :D

    А чтобы русский отображался, сначала сохраните исходник в UTF8, а не в непонятной русской кодировке. Тогда он будет открываться везде, хоть с китайским, хоть с греческим.
    Ответ написан
    2 комментария
  • Как писать кроссплатформенные приложения на C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Кроссплатформенно можно писать на чём угодно. Графические приложения сейчас — это от силы 10 процентов всего, что пишется. Всё уходит в веб, если хотите хороший гуй и быстро, берите Chromium Engine Framework, верстайте дизайн на коленке, и всё быстро и круто получается, на нём сейчас пишут подавляющее большинство графических потребительских приложений.
    Мало того, приличное количество последних популярных сред разработки, всяких редакторов, написано на... JavaScript! На Node.js и платформе Electron. Тупо, быстрее сверстать отдельно фронтенд, какую-то модель, бекенд, сразу видеть изменения, чем сидеть ждать, пока перекомпилируется Qt, выкинет ошибку, которая оказывается багом, который не хотят чинить, и т.п.
    Вижуал студия очень хреново подходит для кроссплатформенной разработки, не как среда, а как компилятор, у неё своё представление о стандарте языка, базовые вещи могут не поддерживаться, либо поддерживаться в своём, очень странном виде.
    Сначала нужно определиться, что вы хотите писать и нужен ли вообще графический интерфейс для этого.
    Ответ написан
    5 комментариев
  • Как разогнать openvpn из-за nat?

    TrueBers
    @TrueBers
    Гуглю за еду
    Ответ написан
    Комментировать
  • Почему Android Studio не видит R?

    TrueBers
    @TrueBers
    Гуглю за еду
    import имя_вашего_пакета_из_манифеста.R
    или нажать Alt+Enter, само всё найдёт
    Ответ написан
    Комментировать
  • Как открыть проект VS 2015?

    TrueBers
    @TrueBers
    Гуглю за еду
    Так студия же пишет логи и делает бекап, когда конвертирует. Вот их и смотрите.
    Ответ написан
    1 комментарий
  • Qemu грузит процессор?

    TrueBers
    @TrueBers
    Гуглю за еду
    Попробуйте такие параметры:
    -cpu host,kvm=off,hv_vapic,hv_time,hv_relaxed,hv_spinlocks=0x1fff,hv_vendor_id=NVfix
    -machine q35,accel=kvm,mem-merge=off,kernel_irqchip=on
    Ответ написан
    5 комментариев
  • Как UTF-8 помещается в char?

    TrueBers
    @TrueBers
    Гуглю за еду
    А никак не помещается.
    Потому что Си не поддерживает обработку строк в UTF-8. Для этого нужны сторонние библиотеки, которые умеют делать нормализацию, считать длину строки в абстрактных символах, а не кодпоинтах, и т. д. Поддержки этого всего у Си и C++ из коробки нет.
    Ну, вы можете, конечно, запихнуть UTF-8 поток в массив char'ов, но ни одна нативная функция для работы со строками не будет с ним работать правильно. Даже длину строки никогда не сможет посчитать.

    Поэтому, ответ прост: в C/C++ для работы с UTF8 используйте стороннюю библиотеку.
    И да, никогда не используйте wchar_t нигде, где не можете этого избежать, например, в апи сторонних библиотек. wchar_t это тупо костыль в дизайне языка, который признали даже создатели этих языков.
    Ответ написан
  • Подводные камни замены оперативной памяти?

    TrueBers
    @TrueBers
    Гуглю за еду
    Частота у памяти — последнее, что вы заметите в скорости работы, если вы не разгоняете её в 2 раза. Главное — это объём. От него и свопов меньше, и меньше лишних телодвижений. Вон, у самого висят по 2 недели, запущенные в фоне программы, с которыми давно уже не работал. Памяти то навалом, они не такая уж и дорогая, как профит от неё.
    А энергопотребление... ну, ддр3 и так самая энергоэффективная относительно скорости. Этот L снижает потребление на какие-то такие, копейки (около одного ватта), которые можно даже не учитывать.
    Ответ написан
    Комментировать