Задать вопрос
  • Как собрать glut под Windows используя mingw из под Linux?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вы уверены, что вам нужен оригинальный GLUT 3.7 1998 года выпуска? Может быть стоит использовать что-то посовременнее? Например, GLFW, FreeGLUT, SDL.
    Если уверены, то я сомневаюсь, что он адекватно соберётся современными тулкитами без напильника.
    Ответ написан
    2 комментария
  • Почему в более современных версиях Microsoft Visual Studio не поддерживается класс WindowsForm?

    TrueBers
    @TrueBers
    Гуглю за еду
    Вы в ланчере студии просто не выбрали этот компонент для установки.
    А лучше, используйте WPF.
    Ответ написан
    1 комментарий
  • Перебор дочерних компонентов в c++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хоть бы какие-то данные что ли представили... телепатов нету ж уже.

    Судя по слову "hwnd", будем считать, что вы используете WinAPI. Тогда есть же ГУГЛ, который первой же ссылкой выдает ответ на вопрос на StackOverflow. Вторая ссылка ведёт на саму функцию EnumChildWindows на MSDN.

    Если я правильно понял задачу, тогда в чём проблема?
    Ответ написан
    Комментировать
  • Как сделать дешёвые прокси?

    TrueBers
    @TrueBers
    Гуглю за еду
    Что значит, в одни руки?
    Вам этот адрес лично никто не отдаёт, этим же адресом может пользоваться ещё несколько тысяч человек одновременно с вами.

    И это совсем не дёшево. Можно ВПСку купить за 200р в месяц, она потянет, пусть 100 клиентов, по мегабиту каждому. Каждый клиент платит 100 рублей в месяц, получаем 100*100=10 000 рублей при затратах в 200р (очень грубо).

    Другое дело, что вам нужно держать ваши адреса более-менее белыми, чтобы не попадать в банлисты за рассылку спама, и т. д. В этом основная трудность, а поднять прокси — дело двух минут.
    Ответ написан
    3 комментария
  • Тихий и мощный комп для дома (сервер + билд-сервер): собирать самому или брать готовое?

    TrueBers
    @TrueBers
    Гуглю за еду
    Бюджет бы указали что ли... и что значит мощный в вашем понимании? Расскажу про своё понимание...

    Если бы советовал себе, то это был бы Xeon E5-2683 v3. 14 ядер, 28 потоков, 2ГГц в стоке, можно при желании разогнать до 3.1ГГц. Цена вопроса 20к рубелей на Ибее. Если бы сейчас смог в своём городе продать свои i7 5820 и мать, взял бы его. При возможности, можно взять двухпроцовую мать, 56 потоков... Будет действительно мощный сервер. В разгоне рвёт 6950X в многопоточности, а соответственно и билдить будет от души.
    Из тишины, наверно, придётся брать водянку и БП из верхнего сегмента, который не крутится без нагрузки, ибо все кулеры жужжат.
    Ответ написан
    Комментировать
  • Можно ли запускать топовые игры на Ubuntu?

    TrueBers
    @TrueBers
    Гуглю за еду
    Можно. Если процессор поддерживает полное ускорение виртуализации, можете поставить виртуальную машину на kvm, установить туда винду, пробросить видеокарту и играть.
    Ответ написан
  • Возможно ли заглушить wifi програмно?

    TrueBers
    @TrueBers
    Гуглю за еду
    Можно через ARP-spoofing объявить себя шлюзом, и тушить/подменять запросы. Или делать вот так, но это малоэффективно.
    Ответ написан
    Комментировать
  • Какую библиотеку под OpenGL выбрать?

    TrueBers
    @TrueBers
    Гуглю за еду
    Я ж уже отвечал на подобный вопрос.
    Есть отличный туториал. В нём всё подробно описано, какую учить, какая устарела, какая для чего предназначена и т. д.
    Ответ написан
    Комментировать
  • Как следить за состоянием SSD?

    TrueBers
    @TrueBers
    Гуглю за еду
    Хватит уже паниковать по поводу SSD. Они давным давно уже намного стабильнее и надёжнее, чем раньше. Сейчас они не сыпятся, ничего не глючит, циклов записи такое количество, что несколько лет можно подряд писать.
    Поставьте его в систему и забудьте, изредка поглядывая в SMART.
    Ответ написан
    3 комментария
  • Какой выбрать современный хороший учебник по C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    То есть сухое краткое структурированное изложение стандарта на русском

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

    Поменьше воды типа "в старом стандарте было иначе, а именно вот как".

    Без этого никак, новый стандарт никак не отменяет старый. Есть в языке такие фичи, которые добавили в 11 стандарте, а в 14-м уже объявили miss-conception и deprecated, а в 17-м вообще удалили. Поэтому знать, что было в старых стандартах просто необходимо для понимания, почему так происходит.

    Сейчас C++ в таком состоянии, что книги по нему не успевают выходить, как всё меняется. Сейчас столько источников информации, что каждый день выходит миллион статей от официальных лиц комитета. Подпишитесь на ютубе на официальные каналы, на RSS фиды, на блоги не последних людей комитета. Мне сейчас в RSS приходит каждый день столько, что, когда работал в офисе, успевал во время дороги в офис читать по-диагонали лишь основную мысль. Сейчас работаю дома, и ничего не успеваю. Подпишитесь на CppCon, BoostCon, ISOCpp, Скотта Мейерса, Андрея Александреску, Герба Саттера, Бьёрна Страуструпа. Библиотека Boost служит, по сути, испытательным полигоном для стандарта, так что советую и её начать использовать сразу же вместе с основным стандартом. Ознакомьтесь также с Core Guidelines, это как бы набор костылей для вещей, которых пока нет в стандарте, но которые всем необходимы и будут скоро добавлены.

    Книги же, по современному языку, рассчитаны, так или иначе, на тех, кто уже знает старый язык, бессмысленно писать новые книги с нуля, проще описать, что изменилось. Из более-менее полезного материала, читайте Скотта Мейерса Effective Modern C++: 42 Specific Ways to Improve ..., Anthony Williams C++ Concurrency in Action: Practical Multithreading, ну и вышеперечисленных.
    Ответ написан
    Комментировать
  • Матрицы и выполнение собственных операций с матрицами в OpenGL?

    TrueBers
    @TrueBers
    Гуглю за еду
    Во-первых, эта "суперкнига" устарела, как говно мамонта, ни в коем случае нельзя по ней учиться, она научит нехорошим древним костылям, которые давно уже не используются и удалены из стандарта в современных версиях! Прямо сейчас выкиньте/удалите/сожгите её и забудьте всё, что успели заучить из неё! В 2017-м году она не имеет никакой ценности. Сейчас в OpenGL всё по-другому.

    Во-вторых, эти функции давно официально объявлены устаревшими и категорически не рекомендуются к использованию, как и целиком весь immediate-mode rendering. Вместо immediate-mode сейчас используется Core Profile с программированием отдельных стадий графического конвеера, а вместо конкретно этих функций рекомендуется пользоваться библиотекой GLM.

    Современный OpenGL начинается с версии 3.3. По сути, он является основой, в которую добавляются разные фичи.

    Учиться советую по замечательным туториалам от Джоуи де Фриза, он там разбирает всё очень подробно и пошагово. Очень крутой туториал, крайне рекомендую!
    Ну и, конечно же, OpenGL Programming Guide (9th Edition) — топовая книга по OpenGL с полным фаршем последней версии. Но её лучше использовать как справочник, учить по ней, для новичка, будет довольно проблематично.
    Ответ написан
    Комментировать
  • Как пробивать НАТ?

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

    Есть несколько RFC на эту тему, сама процедура называется Interactive Connectivity Establishment. Самому писать реализацию крайне не советую, там столько тонкостей, что можно пару лет исследовать. Лучше взять что-то готовое.

    Если нужно из коробки на винде, из пакетов на линуксе, и, вроде бы как, кто-то портировал на Андроид — используйте Teredo/Miredo. Там всё довольно просто, в современных версиях пробиваются все типы ната. В случае симметричного, трафик идёт через релей, реализации которого тоже есть в виде демона. Единственное, что может не устраивать из коробки — там IPv6, если нужен v4, придётся реализовывать маппинг.

    Более тяжёлая артиллерия — это реализация от гугла. Сейчас она входит в кодовую базу Хромиум, в реализацию стандарта WebRTC. Там всё довольно сильно завязано на фреймворк хрома, очень тяжеловесно, довольно долго собирается, используется непривычная терминология из RFC. Зато эта библиотека самая действенная, огромный опыт гугла даёт о себе знать, демоны релеев (TURN) также есть, за вас написан reliable транспортный протокол, может взаимодействовать с браузерами через WebRTC Data Channel и прочие плюшки.

    Есть ещё, конечно, много других библиотек, но они что-то у меня не взлетали, сильно глючили, не всегда правильно тип НАТа определяли и т. п.
    Ответ написан
    Комментировать
  • Есть ли хорошие книги по 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 комментария