Задать вопрос
  • [OpengGL] Почему вращается ось, а не фигура?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Потому что вы сначала повернули, а потом стали задавать координаты. Поворот всегда поворачивает все пространство относительно нуля.

    Если хотите вращать только фигуру, то сначала через glTranslate перенесите ее центр в ноль, потом вращайте и задавайте координаты вершин (относительно центра!).
    Ответ написан
    9 комментариев
  • Как практиковать ООП?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Только опыт и практика.
    Пиши как можно больше.
    Со временем будешь понимать, что год назад ты писал плохо и можно переписать намного лучше с применением ООП и шаблонов проектирования, которые освоил.
    Других советов нет.
    Никаких курсов и уроков.
    Ответ написан
    1 комментарий
  • Как замаскировать эмулированные движения мыши и нажатия клавиш?

    @Catt96
    курить люблю пипец...
    Берёшь МК поддерживающий работу как HID(какая нибудь Arduino Leonardo или подобные). Пишешь под неё клиент, а у себя на компе разводишь сервак который будет слать в дуину данные. Реализовываешь работу с большими алгоритмами и вычислениями на своём сервере. Всё просто и легко! Но анти-чит может знать об этом так что не гарантирую 100% работоспособности. Надеюсь я вам помог!
    Ответ написан
    Комментировать
  • Зачем освобождать память в C?

    Vamp
    @Vamp
    Потому что неосвобождённая память остаётся занятой даже после выхода указателя за пределы области видимости. В итоге если вы будете только аллоцировать память, но не освобождать её, то рано или поздно программа сожрёт всю память в системе.
    Ответ написан
    1 комментарий
  • Почему Rust нужна хэш-функция для реализации объектов, а JS такое не использует?

    vabka
    @vabka Куратор тега Rust
    Вообще объекты в JS - это тоже hashmap, и в этой структуре есть защита от коллизий:
    Если вдруг два разных ключа получили один и тот же хеш, то они складываются в одну корзину, и при попытке получить значение по ключу - придётся ещё пройтись по всем парам ключ-значение в этой корзине, чтобы найти нужный ключ, уже используя Eq.
    Ответ написан
    Комментировать
  • Зачем нужна база данных если можно хранить данные в json файлах?

    @deliro
    1. JSON нельзя отредактировать где-то посередине. Сложность такой операции O(n)
    2. По JSON нельзя эффективно делать выборку, например, получить юзера с id=123 — сложность O(n)
    3. Удаление тоже самое — перезаписывать весь файл
    4. Нет транзакций
    5. Нет целостности данных
    6. Миллион других причин, все из которых перечислены в "фичах" любой БД
    Ответ написан
    1 комментарий
  • Как изучить Go? Курсы или есть достаточные бесплатные ресурсы?

    @deliro
    Знаю Java, Ruby, PHP

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Курсы не нужны. Нужен учебник и пет-проект.
    Ответ написан
    Комментировать
  • Существует ли формула позволяющая определить какое из двух чисел является самым большим?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Максимум:

    ( a + b + sqrt(  ( a - b ) * ( a - b ) ) ) 
    ___________________________________________
                         2


    Чтобы получить минимум, надо перевернуть знак перед корнем:

    ( a + b - sqrt(  ( a - b ) * ( a - b ) ) ) 
    ___________________________________________
                         2


    Где SQRT - взятие корня квадратного

    Код на плюсиках:
    int32_t TheMadMax( const int32_t a, const int32_t b ) 
    {
        const int32_t alpha = ( a - b );
        const int32_t beta  = alpha >> 31;
        const int32_t gamma = ( alpha ^ beta ) - beta;
        return ( a + b + gamma ) >> 1;
    }


    Референс
    Ответ написан
  • Что находится в .text секции?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    В .text Находится исполняемый код.

    6kb там не зря. Там куча вспомогательного кода, чтобы взаимодействовать с операционной системой. Начиная от загрузки всяких внутренностей libc, до настройки консоли.
    Ответ написан
    Комментировать
  • Как писать код С++ на Линукс?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Установите компилятор (clang сейчас считается более популярным, чем gcc) и среду разработки (QtCreator, CLion). Этого будет достаточно.
    Ответ написан
    Комментировать
  • Что значит, что алгоритм работает...?

    @dmshar
    В любом нормальном курсе теории алгоритмов (или в соответствующей книге) с первых страниц объясняется, что нотация O() НЕ показывает зависимость времени выполнения алгоритма от количества элементов, поскольку не в состоянии учесть кучу факторов - от языка реализации до стиля написания кода программистом и даже архитектуры hardware вашего компьютера. Все что эта нотация показывает по сути - это как зависит время выполнения алгоритма от роста количества элементов в наборе - линейно, квадратично, логарифмично и пр. И этого в общем-то достаточно, что-бы уметь сравнивать алгоритмы между собой - для чего эта метрика и вводится.
    Ответ написан
    Комментировать
  • Что значит, что алгоритм работает...?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Константа вылезает из деталей реализации операций. Вот сортировка пузырьком делает ровно n(n-1)/2 сравнения и помен в худшем случае. Еще столько же операций инкремента счетчика индекса, столько же проверок на конец цикла. Плюс еще n операций для внешнего цикла. И все это O(n^2). Хотя там есть есть /2 и операций четыре типа. И они еще разное время занимают. Скажем, проверки занимают 10 тактов, а инкрименты - 1. Но вся эта мишура не влияет на скорость роста и прячется в константе. Если все сложить. То будет C*n^2 +C2*n+C3 тактов на алгоритм.
    Ответ написан
    Комментировать
  • Какую версию assembler учить (MASM или FASM)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    MASM и FASM - это компиляторы, а не языки. Различия в коде для MASM и FASM только на уровне директив и макросов. У языка Ассемблера есть два основных диалекта - синтаксис Intel и синтаксис AT&T, а также различный набор инструкций для различных архитектур процессоров. Я рекомендую начать с эмулятора 8086 в реальном режиме и только освоив в должной мере основы, выбирать компилятор.
    Ответ написан
    Комментировать
  • Зачем нужен signed в Си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    по умолчанию int является signed

    А вот о char этого сказать нельзя, знаковость char зависит от реализации. Вдобавок, в стандарте есть следующая сноска (https://www.open-std.org/JTC1/SC22/WG14/www/docs/n... 6.2.5:15):
    Irrespective of the choice made, char is a separate type from the 
    other two and is not compatible with either.


    signed char -- это, пожалуй, единственное не вызывающее вопросов применение ключевого слова signed в C-коде написанном человеком. В остальных случаях роль signed -- чисто декоративная.
    Ответ написан
    Комментировать
  • Не работает def?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    IndentationError: unexpected indent
    Что в фразе "неожиданный отступ" вам непонятно?
    Ответ написан
    2 комментария
  • Указатели в языке Си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему программа завершилась? Вмешалась ОС? Но если так, то почему?

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

    Почему я не могу поменять значение самого указателя (ведь указатель - это всего лишь ссылка на адрес памяти, а не на значение).

    Значение указателя ты поменять можешь, но это не то, что было написано в коде. В коде было написано поменять значение на которое указатель указывает. Поменять указатель было бы a = (int *)10;

    могу ли я указателю дать ссылку на конкретную ячейку в памяти?

    Можешь, но под ОС с виртуальной памятью это в большинстве случаев не имеет смысла. API в таких ОС обычно устроены так, что ты просишь выделить область памяти с заданными характеристиками, а ОС выполняет выделение и возвращает тебе адрес выделенного участка.

    получаю ошибку, ведь вряд ли адрес памяти у указателя хранится в виде 16-ричного целочисленного литерала.

    В памяти всё хранится как последовательность байтов. Любую последовательность байтов можно проинтерпретировать как указатель. Но чтобы компилятор С понял что ты имеешь в виду, ему надо явно сказать, что ты хочешь проинтерпретировать целое число как адрес: int *a = (int *)0x0061FF18;
    Ответ написан
    Комментировать
  • Что означает -'0' на C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Это вычитание значения '0' из значения str[j]. И то и другое - символы, они же char. В языке Cи, это целочисленный тип. Просто каждому символу дается его ascii код.

    Тут это используется для получения численнного значения цифры из ее символьного значения, ведь символы '0'-'9' в ascii идут подряд в натуральном порядке.
    Ответ написан
    Комментировать