• Виртуальная машина - для чего нужна при разработке?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    1) Ставим НУЖНУЮ ОС, в нее софт ВНЕЗАПНОЙ версии, тестим НЕОЖИДАННЫЕЕ баги.
    2) Ставим НУЖНУЮ ОС, в ней собираем из исходников НЕОБХОДИМЫЙ софт.
    3) Ставим НУЖНУЮ ОС ИНТЕРЕСУЮЩЕЙ версии, ТЕСТИМ, УЧИМСЯ, ПОВЫШАЕМ квалификацию.
    4) Создаем НУЖНОЕ число виртулок, ставим в них НУЖНЫЕ версии ОС и софта, ОРГАНИЗУЕМ из них НЕОБХОДИМЫЙ стенд и ТЕСТИМ, УЧИМСЯ, ОТТАЧИВАЕМ навыки.
    5) Создаем виртуалки, ДАЕМ УДАЛЕННЫЙ ДОСТУП разрабам, разрабы довольны и могут моделировать что хотят.
    6) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ДЕЛИМСЯ готовой виртуалкой с другими людьми.
    7) Поднимаем НУЖНЫЙ софт НУЖНЫЙХ версий, накатываем НЕОБХОДИМЫЕ конфиги, ЗАБЫВАЕМ проблемы если сдох сервер т.к. можем куда угодно перенести готовую виртуалки и без телодвижений запустить ее.
    8) ЗАНИМАЕМСЯ исследованием безопасности софта\ос в виртуалке или вирусов.
    9) СМОТРИМ порно\лук\i2p\... в виртуалке, не паримся за оставленные следы на компе.
    10) ПОДНИМАЕМ какие угодно, каких угодно версий версий не переживая за основную ОС.
    ...) ....
    1005000....) каждый находит свое применение.
    Ответ написан
    Комментировать
  • Что выполняют эти функции в коде?

    @Mercury13
    Программист на «си с крестами» и не только
    1. Найти «в лоб» НОД и похѣрить его.
    2. Найти «в лоб» НОК и отправить его туда же.
    Повторяю, обе функции крайне неэффективны, а их результат идёт в никуда. Как только управление пересечёт точку с запятой, переменная исчезнет.
    Ответ написан
    Комментировать
  • Где поискать опенсорс проекты на С++?

    Nipheris
    @Nipheris Куратор тега C++
    А как вы искали, если не секрет? Я хочу узнать, как искать так, чтобы ничего не найти.

    Запрос "c++ open source projects" даёт первой же ссылкой набирающие популярность C++-проекты на гитхабе, среди которых TensorFlow, биткоин, OpenCV, Электрон, Solidity и прочие монстры индустрии. Время поиска - ~20 секунд.
    Ответ написан
    1 комментарий
  • Являются ли эти видео фейком?

    @Fixid Куратор тега Железо
    images?q=tbn:ANd9GcTG5oEN--AnH-yD9OdMiQa

    Просто посмотрите на катушки Qi зарядки. Это ради 1А 5В на сверх короткое расстояние.
    2526348957.jpg

    Хотя люминесцентная лампа хорошо горит под ЛЭП. Но подумайте какое там электромагнитного поле. Хотя опять же если положить ее на изолированный от земли стол, то она светиться не будет.
    4085.jpg
    Ответ написан
    2 комментария
  • Как на java делать моды для игр?

    profesor08
    @profesor08
    Присасываешься к процессу, хукаешь адреса и перехватываешься вызовы.

    Для КС есть SourceMod.
    Ответ написан
    Комментировать
  • Как итерируется ranged for?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Советую зайти в документацию и прочитать про типы итераторов и что это такое.
    Ответ написан
    Комментировать
  • Как коректно переобразовать тип wchar_t в string?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Тип WCHAR зависит от настроек проекта и может быть как псевдонимом char, так и wchar_t. Широкое использование этого типа во всем проекте не рекомендуется, т.к. повсеместно вносит неопределенность.

    Для хранения Unicode строк (у тебя же 2017 студия и c++17 по умолчанию) уже давно существует сразу несколько типов строк: std::wstring, std::u16string и std::u32string.

    Тип std::wstring хранит символы типа wchar_t, который, в зависимости от настроек компилятора, может занимать 2 или 4 бйта. Это делает тип std::wstring столь же неоднозначным, как и WCHAR. Поэтому и были созданы типы со строгим размером символа: std::u16string и std::u32string. Сейчас рекомендуется пользоваться ими вместе с std::string.

    Сам твой вопрос заключается не в преобразовании типа, т.к. это легко сделать с помощью std::transform и лямбды, а в преобразовании однобайтовой (std::string) кодировки в Unicode и обратно.

    Для этого в стандартной библиотеке уже тоже есть всё нужное.
    Пример кода
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::string& source_string, std::basic_string<TCharType, TCharTraits, TStringAllocator>& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.from_bytes( source_string );
    }
    
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::basic_string<TCharType, TCharTraits, TStringAllocator>& source_string, std::string& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.to_bytes( source_string );
    }


    А помимо стандартной библиотеки все нужное есть еще и в WinAPI, и в C Run-Time Library.
    Ответ написан
    2 комментария
  • Как сгенерировать красивую раскладку плитки?

    longclaps
    @longclaps
    just for fun:
    1. придумываешь "потенциальную энергию" для выкладки:
      • одинаковые плитки отталкиваются обратно пропорционально квадрату расстояния между ними
      • разные плитки друг друга игнорируют
      • но если 2 любые плитки попали в одну ячейку - очень сильно отталкиваются, ну прям 100500 ньютон
    2. находишь минимум энергии (например, методом отжига)
    3. чтобы не париться с границами области, считаешь её поверхностью бублика
    Ответ написан
    Комментировать
  • Почему игровые движки пишут на C++?

    1) Java а уж тем более python (даже pypy) сосут по производительности, т.к. у них большие накладные расходы. И речь тут даже не о виртуальной машине или интерпретаторе, а об явной возможности располагать объекты на стеке. Выделить память на стеке это одна машинная команда в один такт, а в куче это большая цепочка вызовов, в худшем случае доходящая до пространства ядра.

    К сожалению java и python не имеют средств для ручного управления памятью. Хотя для scala есть проект offheap, правда он немного заглох.
    Одна из самых популярных библиотек для Python - NumPy. И она написана на Си.

    Но есть золотая середина: движок написан на C++, но имеет API для другого языка. Пример тому Unity, который сам написан на C++, но логика реализовывается на C#.

    А почти все перечисленные вами движки живут на передовой графических технологий. Зачастую даже мощнейших процессоров и видеокарт им не хватает. Вспомните шутки про Крайзис.

    2) Сборка мусора может блокировать все потоки приложения. Из-за этого у вас будут постоянные фризы.
    Ответ написан
    2 комментария
  • Почему sizeof показывает фактический размер массива хотя по сути имя массива это указатель на первый элемент?

    @Mercury13
    Программист на «си с крестами» и не только
    Несмотря на то, что массив часто отождествляют с указателем, массив — это НЕ указатель. У него, например, другие операции приводят к неопределённому поведению.

    И самое противное в Си — это то, что в коде
    void sort(int x[5]);
    x — это не массив, а именно что указатель. Чтобы был массив, надо Си++
    void sort(int (&x)[5]);
    И компилятор даже подсвечивает, что параметр функции, отмеченный как массив — всегда указатель.
    typedef int Arr[SIZE];
    int sum(Arr arr, int n)
    // warning: 'sizeof' on array function parameter 'arr' will return size of 'int *' [-Wsizeof-array-argument]|
    Ответ написан
    Комментировать
  • СИ и С++. Чем они так опасны, если их использовать вместе?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Если люди, от которых вы это слышали не могут объяснить чем они опасны, то не слушайте этих людей.
    Ответ написан
    Комментировать
  • Как сделать несколько условий в if и чтобы они все выполнялись?

    Самое логичное - вынести
    функционал который нужно исполнить в обеих независимо от результата
    из этих функций. Вы же так себе сайд эффекты делаете, из-за которых потом страдать будете.
    Ответ написан
    Комментировать
  • Ошибка std::bad_alloc - C++?

    Nipheris
    @Nipheris Куратор тега C++
    Судя по всему, у вас проезд по памяти - вы в первом цикле вылезли за границы массива s и повредили внутреннее состояние вектора v1, после чего он не может вести себя адекватно.
    Ответ написан
    Комментировать
  • Как сделать перегрузку конструктора без расширения типа?

    @Alexander1705
    Происходит это из-за расширения типа bool до int

    Это не так. int может быть приведён как к bool, так и к uint32_t. И компилятор не знает что именно вы имеете в виду. Достаточно явно привести аргумент к нужному типу, чтобы можно было однозначно определить, какой конструктор вы вызываете.

    CAttribute("name", (uint32_t)index, "value");
    Ответ написан
    Комментировать
  • Ресурсы по современному C++?

    Самое очевидное — en.cppreference.com/w
    Ответ написан
    Комментировать
  • Почему вызывается исключение???

    @Alexander1705
    Вы не инициализируете контекст OpenGL, поэтому ваша программа падает при первом же использовании функции OpenGL. Для инициализации вам нужно использовать GLEW.

    Так же не понятно, зачем вы подключаете GLUT и GLFW одновременно...

    Посмотрите этот туториал по OpenGL. В конце статьи есть код, который делает как раз то, что вам нужно.

    P. S. Исключение, как собственно и написано, вызывается, когда программа разыменовывает (использует) указатель, который указывает на память за пределами адресного пространства приложения. Например, неинициализированный указатель.
    Ответ написан
    2 комментария
  • Есть две коробки сканеров штрихкодов. Как их лучше всего продать? Может пределать во что полезное? Есть идеи?

    NeiroNx
    @NeiroNx
    Программист
    Звучит как - "У меня два ящика тактических ракет, думаю отломать им стабилизаторы и выложить из них дорожку на даче."
    Продай на почту - а то недавно ходил - они там номера ручками вбивают. Сказали сканер сломался...
    Ответ написан
    1 комментарий
  • И как это понимать 0_о?

    xomachine
    @xomachine
    Так с плавающей точкой, а не плавающей запятой.

    В языках программирования (да и в английском языке) дробную часть принято отделять точкой.
    Ответ написан
    5 комментариев
  • Как архивировать файлы c++?

    longclaps
    @longclaps
    Вообще-то можно, но раз терпение кончилось - тогда нельзя.
    Ответ написан
    Комментировать
  • С чего начать изучать математику?

    @mirosas
    Русский язык тоже не лишне бы подучить.

    Школьного курса математики для большинства задач будет достаточно. Купите учебники с 1 по 11 класс и изучайте.

    Как определитесь в сфере, там уже будете дальше копать (если молоды, то можно просто пойти в вуз из верхних 20% по РФ). В топ-вузах, на it-факультетах 2 года почти только тем и занимаются, что учат математику. Если не знаете зачем оно вам – лучше не теряйте времени больше, чем требуется для школьной программы. Быстро вы математику все-равно не изучите, поскольку cмысл изучения математики в трансформации мозга, что небыстрый процесс, хотя с другой стороны процесс этот лучше проходит в возрасте до 21 года. Поэтому если возраст ваш до 19 лет, то лучшие вузы страны по it-направлению ждут вас. Если вы ощутимо старше, или не тянете поступления в хороший вуз, то не стоит без прозрачной необходимости изучать дальше школьной программы. Но школьную программу по математике знать определенно стоит.
    Ответ написан
    4 комментария