Задать вопрос
  • Как сделать графику на fasm?

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

    Посмотри вот сюда. Там описаны фазы создания операционной системы. Согласно этому туториалу, графика это уже третья фаза. Так что тебе ещё первые две предстоит осилить, прежде чем приступать к графике.
    Ответ написан
    7 комментариев
  • Не работает дополнение кода vscode?

    TrueBers
    @TrueBers
    Гуглю за еду
    Поставь питон через pyenv.

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

    Питон в brew тоже довольно кривоват и нужно много с бубном плясать вокруг него, чтобы заставить адекватно работать с pip.
    Ответ написан
    Комментировать
  • Как идентифицировать target в build.rs?

    TrueBers
    @TrueBers
    Гуглю за еду
    А как оно будет работать, если build.exe для того и предназначен, чтобы запускаться самим тулчейном на хостовой системе, а не на таргете?

    Вот список переменных окружения, которые получаются через std::env::var в build.rs. Для target-triple тебе нужен TARGET.

    Чтобы получить host-triple, нужна переменная HOST.
    Ответ написан
    Комментировать
  • Как вызвать ядро со второго сектора дискеты из загрузчика на первом секторе дискетты?

    TrueBers
    @TrueBers
    Гуглю за еду
    Прочитать с диска в память и передать управление?

    Миллион статей в интернетах с девяностых годов же.
    https://wiki.osdev.org/Rolling_Your_Own_Bootloader хотя бы посмотри.

    Через int 13 читай следующий сектор и передавай управление через jump.
    Ответ написан
    3 комментария
  • Рекомендации по созданию приложения на C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Плюсы и гуй в 2024-м это уже не смешно.

    Графические интерфейсы на плюсах развиваются сейчас как полудолхая кляча. Баги по 15 лет не могут пофиксить в Кьюте, который тебе советуют. К тому же, Qt был на плюсах лет так 15 назад. Сейчас там всё на QML пишется и чистые плюсы самой компанией уже давно не поощряются. Нужно понять главное: каждой задаче -- свой инструмент. Если будешь писать такую программу на плюсах, будешь страдать. Много страдать. Не начало нулевых так-то, уже столько всего под эти задачи есть удобного, что стоило бы изучить эту сферу.

    Например, посмотри на Flutter. Очень приятный у шустрый фреймворк для создания графических приложений. Язык Dart учится с нуля за 2-3 дня. Написал на одном языке один раз, а работать это всё будет начиная от мобил и ПК, заканчивая вебом, Raspberry Pi, бортовым компьютером Теслы и Тойоты, телевизорами, фоторамками и прочими экзотическими устройствами.

    C++ сейчас учить нужно только для общего развития, писать на нём новые проекты не советую. Есть множество современных, куда более адекватных и не таких затратных по времени и силам языков, как Rust -- отличная замена C++, Zig -- крутая замена Си.
    Ответ написан
    Комментировать
  • Как заставить бота тг писать кириллицей?

    TrueBers
    @TrueBers
    Гуглю за еду
    Ну он же чёрным по белому пишет:
    Bad Request: strings must be encoded in UTF-8

    Кодируй строку в UTF-8 и отправляй.
    Ответ написан
  • Безопасно ли подключаться к Mikrotik'у через Winbox через интернет?

    TrueBers
    @TrueBers
    Гуглю за еду
    Самый адекватный способ использования сетевых устройств:
    Оставлять наружу только SSH, а через него пробрасывать локально необходимые порты хоть с шифрованием, хоть без него.
    Ответ написан
    Комментировать
  • Чем отличается выполнение программы на x86 процессорах 2003 и 2024 года выпуска?

    TrueBers
    @TrueBers
    Гуглю за еду
    Конечно разница есть. Не просто ж так вкладывают сотни миллиардов в исследования.
    Даже если взять 2 процессора одинаковой частоты и с одинаковым количеством ядер, будет множество отличий.

    1. Существует конвеер исполнения инструкций. Который состоит из портов выполнения. С каждым новым поколением процессора этот конвеер допиливают. Улучшают синхронизации кешей, меняют в целом принцип работы кешей и порядок выполнения инструкций. Добавляют новые порты. Перепиливают микрокод для инструкций, используя эти изменения.
    2. Переупорядочивание выполнения инструкций. Каждый новый проц что-то да делает с этим. Улучшают сам алгоритм переупорядочивания, избавления потоков выполнения от лишних зависимостей данных, увеличивают внутренние буферы, используемые для этих целей. В итоге растёт retired instruction per clock.
    3. Предсказатели переходов постоянно совершенствуются, меньше тупняков конвеера дают, меньше сбросов кеша.
    4. Декодер инструкций. Fetch-буфер растёт, буфер декодинга растёт, буфер переупорядочивания растёт.
    5. Интерфейсы взаимодействия с памятью тоже совершенствуются. Одноканальный DDR из 2003-го, который требует отдельного контроллера памяти на северном мосту, и мноканальный DDR6 из 2025-го -- мягко говоря, вещи из разных миров. Не только память должна быть быстрой, но и процессор должен уметь общаться с этой памятью. В конце нулевых контроллер памяти начали встраивать в сам процессор, это позволило снизить задержки доступа к памяти в разы.

    А ещё много-много тонкостей, которые не афишируются публично и держатся в коммерческой тайне.

    Компилятору конечно нужно это знать, помогать процессору хотя бы избавлять инструкции от зависимостей данных, чтобы процессору было проще и быстрее их спекулятивно исполнять и предсказывать переходы. Не критично, код работать скорее всего будет с любым компилятором, но намного медленнее.
    Ответ написан
    3 комментария
  • Как организовать оптимальную безопасность для своего онлайн мультиплеера на Android?

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

    Спроектируй стейт-машину на беке адекватную. Если всё правильно сделаешь, у клиента просто не будет возможности что-то подменить, если стейт-машина верная.

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

    TrueBers
    @TrueBers
    Гуглю за еду
    Есть 2 варианта:
    1) Реверсить игру, инжектиться в память, вытаскивать внутренние структуры и использовать их для бота.
    2) Писать на машинном зрении систему уровня автопилота Теслы.

    В первом варианте нужно потратить несколько тысяч человеко-часов на реверс игры, извлечение нужных ресурсов и написание самой системы. Нужно знать как работают ОС на низком уровне, отлично знать реверс-инжиниринг.

    Во втором: обмазаться лекциями каких-нибудь классических профессоров по этой тематике, тех же Andrew Ng и Sebastian Thrun. Изучить, как делается примитивный автопилот на машинном зрении, и пытаться применить его в боте.

    Второй вариант, конечно, круче, но потребует несколько лет изучения и экспериментов. Первый же вариант требует меньше знаний, но опять же уйму времени, чтобы ковыряться во внутренностях игры.
    Ответ написан
    Комментировать
  • Проблема изучения C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    К чёрту плюсы. Это гавно мамонта только на легаси поддержке сейчас остаётся у бородатых дедов. Учи Раст. На него переходит большинство адекватных команд. Язык в разы приятнее и эффективнее. Писать на нём в 5 раз быстрее, чем на плюсах. Спецификация не на 5 тысяч страниц, а от силы 500 не наберётся.

    У тебя другая проблема: язык это инструмент. Ты нашёл молоток и ищешь гвозди. А когда в руках молоток, всё кажется гвоздём.
    Сначала пойми, что тебе интересно. Какая сфера и область разработки. Пет-проекты нужно делать для себя. Никто за тебя их не придумает. Когда нет идей в голове, всё равно какой язык учить, если он не пригодится.
    Ответ написан
  • Можно ли использовать в wasm загрузку dll библиотеки?

    TrueBers
    @TrueBers
    Гуглю за еду
    В WebAssembly изначально изолированная среда для исполнения. Он ничего не знает про DLL и вообще что-то за пределами модулей.
    Браузеры тоже пишутся так, чтобы никакие левые дллки не могли вмешиваться в процесс их работы и делать, что хотят.

    Единственный вариант -- это тяжёлый реверс браузера и инжект дллки и кода в рантайм.
    Ответ написан
    Комментировать
  • Возможно написать авто бота или кликер на JavaScript под онлаин игры по типу WoW или Lineage 2?

    TrueBers
    @TrueBers
    Гуглю за еду
    JS -- встраиваемый язык. Ему нужна среда для запуска сначала какая-то. Вам нужно сначала написать системные низкоуровневые функции, а потом уже через рантайм встроить их в JS.
    Одни словом, это бесполезная трата времени и сил. Проще написать на нормальном, для этого предназначенном языке, а не городить из говна и палок.
    Ответ написан
    Комментировать
  • Почему не удается получить адрес функции?

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

    Если программа не обновляется никогда, то возьми да захардкодь RVA этой функции.

    Если программа твоя, то как у уже сказали остальные, просто сделай символ публичным плюс C abi через extern "C"
    Ответ написан
    Комментировать
  • Как из под Windows писать и отлаживать С++ код под Raspberry pi?

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

    Смотря для какого API вы писать хотите, для какой системы. Например, в Убунте тулчейны более древние, чем в Арче. Это накладывает весомый отпечаток на боль, которую придётся испытывать в разработке и отладке.

    при работе по SSH некорректно работают практически все функции glut
    При работе по ssh вообще сложно пробросить графический сервер, чтобы он работал адекватно. А ещё есть как минимум X и Wayland. У них разные методы удалённой отладки будут.

    Проще будет VNC поднять и отлаживать таким образом, чем городить костыли.
    И, как уже сказала копи-паста из бота, используйте GLFW или SDL, они намного проще собираются и отлаживаются, чем говно мамонта под названием GLUT.
    Ответ написан
    Комментировать
  • Ffmpeg ухудшает аудио при конвертации видео?

    TrueBers
    @TrueBers
    Гуглю за еду
    При конвертации видео, аудио-поток вообще не трогается, а остаётся тем же, максимум ремуксится. Значит вы неверный параметр передаёте.

    ощущение

    какое может быть ощущение, если у вас под рукой ffmpeg, который всю досконально информацию по потоку даст вместо ваших "ощущений"? Сравните характеристики потока до и после транскодирования и избавитесь от сомнительных ощущений.

    Банальный параметр -codec:a copy должен помочь в большинстве случаев.
    Ответ написан
  • Как работает виртуальная сеть?

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

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

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

    Ещё более продвинутая технология -- SR-IOV, которая честно поделит устройство между разными системами, но нужна так же поддержка технологии процессором, платой, сетевым адаптером и гипервизором.

    2. Технология NAT это просто подмена адреса и запоминание, какой поменялся на какой, чтобы потом при ответном пакете вернуть его обратно в нужную подсеть. В виртуалках он по умолчанию используется как простейший способ изоляции подсетей. Чтобы подсеть виртуалки не поломала основную сеть. А тем, кому нужны конкретные задачи, могут переключить режим NAT в какой-то другой, более "опасный" для сети режим, при этом понимая, что он делает.
    Ответ написан
    Комментировать
  • Как включить виртуализацию?

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

    Есть пара способов:
    Обновить прошивку платы.
    Обновить микрокод процессора.

    Если ни один из них не поможет, то вряд ли уже что-то поможет. Слишком экспериментальной ещё была виртуализация в те времена.
    Ответ написан
    Комментировать
  • Как увеличить виртуальную память?

    TrueBers
    @TrueBers
    Гуглю за еду
    Подкачка -- это только одна из частей понятия виртуальной памяти. Вы в целом не можете контролировать её. На то она и виртуальная.

    Она может включать в себя все общие замапленные DLL-ки, например. Которые по факту занимают память только один раз на всю систему, а учитываются как будто в каждом процессе что-то отъедают.
    Процесс может замапить себе хоть терабайт памяти виртуальной, но физические страницы будут выделены только по факту Copy-on-Write.

    Забейте на виртуальную, главное, чтобы физической хватало.
    Ответ написан
    Комментировать
  • Как конвертировать системный диск с Windows 10 с MBR в GPT?

    TrueBers
    @TrueBers
    Гуглю за еду
    Официальной утилитой от MS?

    Но там слишком много тонкостей и условий, чтобы всё сработало. Советую использовать крайне осторожно подобные утилиты, только в случае, если есть полное понимание того, как устроена дисковая разметка и в чём в принципе отличие MBR от GPT на низком уровне.

    Намного проще заново установить систему в режиме UEFI.
    Ответ написан
    Комментировать