Задать вопрос
  • Аrmhf vs armel, разница?

    @SleepingLion
    armhf (hard float) код может выполняться только на процессорах с аппаратной поддержкой вычислений с плавающей точкой.
    armel (emulation) код включает в себя эмулятор соответствующих операций. Выполняется медленнее, но на большем количестве процессоров.
    armv7 по идее должен работать с armhf. Подробнее ищите по ключевым словам «ARM floating point»
    Ответ написан
    4 комментария
  • Как выбрать тип в runtime?

    std::any позволяет сохранить в себя объект любого типа, после чего через any_cast вытащить значение, если оно такого типа, как мы предполагаем. Проверка осуществляется через RTTI. Если поддерживается много конкретных типов, вы должны писать здоровенную цепочку if-else-if. В таком случае лучше уж идти через наследование.
    Ответ написан
    Комментировать
  • Как выбрать тип в runtime?

    @res2001
    Developer, ex-admin
    1.Вместе со значением передавайте информацию о типе в каком-нибудь виде
    2.Определяйте тип по содержимому, если это возможно.
    Ответ написан
    4 комментария
  • Можно ли вынести реализацию шаблонного класса в отдельный cpp файл?

    maaGames
    @maaGames
    Погроммирую программы
    Можно. Но при условии, что вручную будут инстанцированы шаблоны для каждого из используемых типов.
    Ответ написан
    Комментировать
  • Что такое git checkout?

    toxa82
    @toxa82
    Основная функция git checkout это перемещать указатель HEAD, т.е. то куда смотрит ваша локальная копия. Вы можете переместить его на вершину ветки: git checkout <branch> или на отдельный коммит: git checkout <sha>Ну а вспомогательные это создание веток:git checkout -b, отмена изменений в файле:git checkout -- <file>
    Ответ написан
    2 комментария
  • Kernel или core?

    Daemon23RUS
    @Daemon23RUS
    Kernel - относится больше к операционной системе.
    Сore - Применимо к прикладным программам, процессорам
    PS - тапками можете не кидаться, это мое личное мнение.
    Ответ написан
    4 комментария
  • Kernel или core?

    romy4
    @romy4
    Exception handler
    Yadro :)
    Ответ написан
    Комментировать
  • Источники для изучения работы с электронной почтой?

    akelsey
    @akelsey
    Google: "postfix. подробное руководство pdf"
    Первая ссылка ваша, на русском. Там всё с низов. Построите фундамент, поймёте принципы работы SMTP и любой почтовик ваш.
    Ответ написан
    Комментировать
  • Что не даёт на C++ писать кроссплатформенные приложения?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Да, как бы, ничего не мешает писать один С++ код для множества платформ. Почти весь мой трудовой стаж связан именно с разработкой кроссплатформенных игр. Я работал с несколькими (самодельными и не очень) движками и имею свое собственное детище, прекрасно и однозначно собирающееся на 5 целевых платформ (Win, Mac, Linux, ios, Android), к которым без труда можно добавить и консоли, и новые платформы.

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

    Кроссплатформенность подразумевает решение ряда вопросов, которые и выливаются в слой абстракции над операционной системой. Эти вопросы, зачастую, решать никто не хочет. Несколько раз встречал такое сам и еще мне рассказывали о том, как тот или иной движок сперва был только под конкретную ###, а потом решили портировать на @@@. Оказалось, что компилятор, которым всегда и собирали движок, нашпигован расширениями языка, которые конечно же все пользовали на 100%, и при смене компилятора ни один файл исходников не остался без доброй сотни ошибок. Т.е. переписывать надо было ВСЁ.

    Mercury13 хорошо рассказал про Unicode пути к файлам. Drakonoved правильно подметил про разделители путей к файлам. Максим Гришин очень хорошо напомнил про порядок следования байт. Это все и есть часть этого ряда вопросов.
    У каждой платформы есть свой API, которого не будет на другой платформе. Но на другой платформе будет свой API, со своими именами и схожей функциональностью. И работу с API надо абстрагировать от универсального кода.
    Еще, на одной платформе у тебя может быть разомкнутый главный цикл обработки сообщений (Win), а на другой - замкнутый (Android). Надо подстраиваться. GUI везде разный, надо подстраиваться. Сама структура приложения на одной платформе может быть монолитной, а на другой - композиционной. Графические и звуковые API могут быть и кроссплатформенными, однако простоты использования это им не прибавляет. Инициализация все равно будет платформозависимой.
    На самом деле даже в рамках работы на одной платформе надо соблюдать ряд правил, чтобы иметь возможность из одного кода получать и 32-битное приложение, и 64-битное тоже. Об этом неплохо написано на сайте разработчиков PVS-Studio.

    И все это решается. От части - с помощью архитектурных приемов. Один из таких я уже показывал в другом своем ответе.
    И еще эти вопросы можно не решать.
    ДубльГИС, например, уже давно работает на базе Qt, что сильно упростило им кроссплатформенную жизнь. Qt решает ряд проблем кроссплатформенности.
    Ответ написан
    11 комментариев
  • Какие есть хорошие книги по OpenCV?

    @xandox
    Сами по себе книги по OpenCV довольно бесполезны если ты не знаешь что делать. Все которые я видел сводились к описанию его апи (которое и так в докак можно найти). Я бы посоветовал тебе найти книги по комп зрению и их почитать (например Компьютерное зрение. Современный подход | Форсайт Дэвид, Понс Жан) и можно еще какой-нибудь курс пройти (например courses.graphics.cs.msu.ru/course/view.php?id=10)
    После того как поймешь, что и как делается - освоит opencv не составит сложности.
    Ответ написан
    1 комментарий
  • Какая математика используется в компьютерном зрении?

    @Elizavetta
    Matroid: gamedev/js-разработка
    Матан, линейная алгебра, численные методы, приближения, преобразование Фурье, функциональный анализ, ТВ, мат.статистика, статистический анализ, сигналы, мат. физика, но это неполный список.
    Внезапно может потребоваться почти вся математика университетского курса(+), так как одни разделы тянут за собой другие, если пытаться работать на уровне полного понимания происходящего.
    Ответ написан
    2 комментария
  • Какая математика используется в компьютерном зрении?

    @D3Nd3R
    Я рекомендую прочитать книгу: www.ozon.ru/context/detail/id/19898948 . В ней изложены основные методы ЦОИ и даны формулы.
    А математика зависит от конкретной задачи, но действительно очень многое из университетского курса высшей математике может понадобиться. Также следует обратить внимание на дискретную математику.
    Ответ написан
    Комментировать
  • Пришло ли письмо адресату?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Нормально, вас трекают в целях рекламы, вся почта валиться на 1 адрес и там уже разбирается
    Ответ написан
    2 комментария
  • Как создать исполняемый файл Qt в Linux?

    Вам необходимо задеплоить приложение, для этого я использую утилиту
    сqtdeployer

    Эта утилита сама собирает все необходимые зависимости вашего приложения, и вам не нужно тратить на это свое время, или вы можете автоматизировать этот процесс.

    Вы можете установить из github выпусков (Windows)

    или

    из snapstore(Linux)

    sudo snap install cqtdeployer

    Вы можете использовать следующим образом:

    * Windows:
    %cqtdeployer% -bin myApp.exe -qmake path/to/Qt/5.x.x/build/bin/qmake.exe -qmlDir path/to/my/qml/files/dir


    * Linux:
    cqtdeployer -bin myAppю -qmake path/to/Qt/5.x.x/build/bin/qmake -qmlDir path/to/my/qml/files/dir


    • path/to/Qt/5.x.x/build/bin/qmake- это путь к qmake с помощью которого было собранно ваше приложение. в сборках с cmake нужно так же указать путь к qmake того qt с которым вы собирались. Это связанно с тем что qmake отдает cqtdeployer-у необходимое для сборки окружение.
    • path/to/my/qml/files/dir - это путь непосредственно к вашим qml файлам (который вы написали).
    • -qmlDir path/to/my/qml/files/dir - данный флаг можно исключить если вы не используете qml.


    Запускать приложение нужно с помощью скрипта sh (Linux) или exe (Windows)

    Если вы будете использовать версию из оснастки, убедитесь, что у вас есть все разрешения.

    ALy01.png

    Если вам нужно использовать версию Windows, просто установите приложение из installer
    Ответ написан
    2 комментария
  • Си в качестве «первого» языка

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Мой совет начинать в таком порядке, свою карьеру программером:

    1) Плаксин.М «Тестирование_и_отладка_программ». Начните ковыряться с существующими программами, за основу можно взять calc.exe или еще что-либо. Умение тестировать дает возможность беспощадной работы со своим собственным кодом за который вы будете в ответе перед своими коллегами. Это очень полезный навык, пусть даже в минимальном объеме но программер должен уметь тестировать!

    2) Язык С среди компьютерных языков сейчас занимает туже роль что и Английский среди человеческих. Зная С вам легче будет понять другие!

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

    4) Алгоритмы, без них никуда! Чем больше вы их знаете и умете применять на практике и давать оценку по сложности, тем лучше!

    5) Паттерны, это имеет смысл когда у вас хоть какой-то опыт программирования. Хотя бы 20 программ напишите, потом поймете сразу что на практике вам встречалось, а что нет. Будете отчетливо понимать чем конкретно тот или иной паттерн может вам помочь.

    6) Будьте прагматичны! Любое действие должно Вас приводить к какой-либо ранее поставленной Вами цели.

    7) Почитайте «Мифический человеко-месяц» Брукса. То что изложено в книге нужно понимать для того чтобы знать какие конкретно задачи следует выполнять, а какие нет! Умение поправить руководителя правильно и корректно, причем аргументировано дает Вам возможность принести больше в программный проект и следовательно даст Вам преимущество перед коллегами.
    Ответ написан
    1 комментарий
  • Какие почитать учебники по алгоритмам?

    qmax
    @qmax
    программер
    В любом случае имеет смысл также приобрести и прочесть библию программирования Дональда Кнута:
    Том 1. Основные алгоритмы
    Том 2. Получисленные алгоритмы
    Том 3. Сортировка и поиск

    Если других книгах есть тоже, что и у Кнута - это ненужные книги.
    Если в других книгах есть то, чего нет у Кнута - это неправильные книги.
    Ответ написан
    4 комментария
  • Какие почитать учебники по алгоритмам?

    JSinga
    @JSinga
    Отличная книга по алгоритмам это Кормен `алгоритмы построение и анализ`.
    Лучшего не найти и не надо. На хабре была соответствующая статья
    Книга можно сказать основа:-)

    Кнут это конечно перебор:-) тем более у него не 3 тома, а 4 и делится на а, б и тд.
    Ответ написан
    1 комментарий
  • Как std::initializer_list определяет количество элементов в {списке}?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    В общем смысле, инициализация может быть выполнена тремя основными способами. std::initializer_list участвует в двух из трех.

    Foo bar = {...};
    Foo bar{...};


    В обоих случаях выполняется List Initialization, в первом - copy list-initialization, во втором - direct list-initialiaztion.

    Тут важно отметить что принятие решения о использовании std::initializer_list выполняются только на этапе трансляции. В обоих случаях сперва транслятор попробует придумать std::initializer_list. Если у аргументов типы разные (а приведение типов при такой записи не делается), то попробовать создать std::initializer_list у транслятора не получится. Но если получилось, то транслятор уже итак знает число аргументов, переданных в конструктор.

    Образно выражаясь, транслятор прямо перед вызовом конструктора объекта оформляет короткую область видимости, в рамках которой оформляется локальный массив неизменной длины. В этот локальный массив по своему значению складываются аргументы конструктора, далее этот массив обрамляется в std::initializer_list, с которым конструктор и вызывается.
    Сразу по завершении конструктора локальная область видимости закрывается и память массива аргументов конструктора освобождается. Поэтому std::initializer_list нельзя копировать, перемещать, сохранять в состоянии конструируемого объекта. std::initializer_list не владеет отображаемой памятью, он только дает к ней доступ.
    Ответ написан
    Комментировать
  • Какой парсер для математических выражений на Qt посоветуете?

    @Mercury13
    Программист на «си с крестами» и не только
    Egorithm, Отлично, теперь у вас есть файл библиотеки *.a, include-файлы *.h и разделяемая библиотека *.so.
    Задачи, в порядке приоритета.
    1. Заставить прогу компилироваться, для этого надо в проекте прописать доступ к include-файлам *.h.
    2. Заставить прогу линковаться, для этого надо в проекте прописать доступ к *.a (-lmuparser -L$$PWD).
    3. Заставить прогу запускаться, закинув куда надо *.so.
    Ответ написан
    1 комментарий
  • Как создать исполняемый файл Qt в Linux?

    Zoominger
    @Zoominger
    System Integrator
    Он в каталоге Release вашего проекта.

    UPD: И ещё вопрос, можно ли будет запускать этот файл на любом дистрибутиве Линукса?

    Да, если там установлены библиотеки Qt.
    Ответ написан
    7 комментариев