Задать вопрос
  • Как измерить площадь объекта по фотографии?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Белый фон. Контрастная с цветом шкуры сетка на фоне. Сверху шкура.
    Анализируем картинку, считаем количество квадратиков которые закрывает шкура.
    Если нужна повышенная точность - отдельно анализируем частично закрытые квадраты.
    Ответ написан
  • Как закрыть доступ ко всему кроме одной программы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    1. Напишите приказ и подпишите у директора, что на данном компьютере разрешено исключительно просмотр системы видеонаблюдения.
    2. Зарежьте юзеру права по максимуму.
    3. Поменяйте ему шелл на вашу программу, чтобы рабочий стол вообще не запускался
    4. Запретите вызов диспетчера задач этому пользователю через политики.
    Ответ написан
    Комментировать
  • Как сбилдить релиз версию приложения на Qt?

    1) идёте в папку с собранным *.exe файлом.
    2) копируете путь не к файлу, а к папке, где находится этот файл из п.1
    3) запускаете "командную строку Qt (с нужным вам компилятором.. там их может быть несколько)" через меню "Пуск".
    4) с помощью команды cd /d <путь из п.2> в открывшейся консоли переходите в папку с собранным *.exe
    5) выполняете windeployqt.exe .
    6) готово. Все нужные *.dll скопируются в папку с исполняемым файлом.
    Ответ написан
    1 комментарий
  • Почему не подключается библиотека в clion?

    @syrov
    пишу программы до 99 строк
    Необходимо прилинковать библиотеку, заголовка не достаточно. Посмотрите target_link_libraries, find_package, в общем не ленитесь запускать поисковик. И clion тут не при делах, ему все равно.
    Ответ написан
    1 комментарий
  • Умные указатели?

    Nipheris
    @Nipheris Куратор тега C++
    Вы, возможно, еще недостаточно освоили ОО-возможности языка C++. Тогда ваш вопрос более чем логичен.

    Видите ли, в языке, где есть какая-либо ОО-модель, неизбежно будут выделяться две категории типов данных - типы данных, экзмепляры которых ведут себя как значения (values), и типы данных, экземпляры которых ведут себя как переменные/объекты (если тут непонятно, опишу подробнее).

    Отличительной особенностью объекта с теоретической точки зрения является identity - некий ключ или признак, с помощью которого этот объект уникальным образом идентифицируется. В ОО базах данных в качестве identity используется т.н. OID. В C++ в качестве identity объектов используются указатели. Это удобно, т.к. место объекта в памяти однозначно идентифицирует его (тут как раз и прослеживается тот факт, что объекты в C++ - это суть переменные, изменять состояние которых можно только строго определенным образом).

    Хотя язык C++ позволяет в теории работать с любым типом как "по значению", так и посредством указателей, реальные классы обычно проектируются так, чтобы подчеркнуть их семантику значение/объект. Например, для типов которые ведут себя как "значения" пишется конструктор копирования и разрешаются операции присвоения. Для типов-"объектов" наоборот, операция присвоения и конструктор копирования запрещаются. Конечно, ничто не мешает превратить указатель в ссылку и работать по ссылке, однако использование ссылки "прячет" от нас информацию об identity объекта. Например, для сравнения одинаковости двух объектов (если это именно "объекты", а не "значения") достаточно сравнить лишь их identity, в терминах C++ - указатели. Если вы превратили их в ссылки, вам придется использовать операцию взятия адреса: &a == &b, что менее логично и удобно, чем сравнить обычные указатели: a == b. Кроме того, важным отличием указателя является то, что одним из его допустимых значений является nullptr, что также может быть удобным (а может и нет).

    Однако, обычные указатели хоть и являются удобным способом моделирования понятия identity, они не предоставляют какой-либо помощи для управления жизненным циклом динамических переменных (коими являются большинство объектов). В результате, программисту гораздо менее удобно использовать динамические переменные, нежели автоматические. И чтобы убить двух зайцев сразу - иметь динамические переменные-объекты с гибким временем жизни и с уникальным identity, и управлять ими удобным способом - придумали умные указатели. По сути эти указатели привязывают тем или иным образом время жизни динамической переменной к структуре программы и к местам использования этих переменных путем реализации концепций владения переменной.
    Ответ написан
    Комментировать
  • Какую выбрать среду для написания кода на С++?

    @res2001
    Developer, ex-admin
    А отлаживать то же в notepad++ будешь? А контекстная справка и прочие плюшки?
    У микрософта всегда была хорошая среда разработки. Не так уж там все и сложно.
    Из других вариантов: NetBeans, Eclips. Но по мне для винды VS лучше.
    Ответ написан
    Комментировать
  • Наследование интерфейсов С++?

    petermzg
    @petermzg
    Самый лучший программист
    Так компилятор прав. Нельзя создать инстанс абстрактного класса.
    Определите все методы, что есть в интерфейсе и все заработает.
    class TcpSocket: public ITcpSocket
    {
    public:
        void start(void)
        {
            cout << "start" << endl;
        }
       void load(void)
       {
       }
    };
    Ответ написан
    3 комментария
  • Arduino. Как сделать мелодию для двух и более пьезоизлучателей?

    "Воспроизводиться одновременно может только один сигнал. Если сигнал уже воспроизводится на одном порту, то вызов Tone() с номером другого порта в качестве параметра ни к чему не приведет, если же Tone() будет вызвана с тем же номером порта, то будет установлена новая частота сигнала."

    Походу средствами Arduino никак.

    "Генерирует на порту вход/выхода сигнал — прямоугольную "волну", заданной частоты и с 50% рабочим циклом. Длительность может быть задана параметром, в противном случае сигнал генерируется пока не будет вызвана функция noTone(). К порту вход/выхода может быть подключен к пьезо или другой динамик для воспроизведения сигнала.
    Использование функции Tone() помешает использовать ШИМ на портах вход/выхода 3 и 11 (кроме платы Arduino Mega)."

    Из этого следует, что реализован он на таймере.
    А таймеров на Уне 3шт, на меге 4шт, если не ошибаюсь. Нулевой затронет задержку (delay), его лучше не трогать.

    Так что вам надо идти к тем, кто программирует Atmel'ы, а не ардуины и спросить, как сделать меандр на x Герц на Си/Ассемблере на несколько пинов с разной частотой.

    Либо если функционал минимален, попробовать просто включать выключать порт с задержками в миллисекунды, впихнуть в это функцию и радоваться жизни. Но это будет сильно нагружать МК, если делать в лоб.

    Ну или найти что-то, что будет генерировать меандр заданной частоты и управляться от МК.
    Ответ написан
    31 комментарий
  • Есть ли проекты на С++, исходники которых стоят внимания, а то есть проекты написаны качественно и там есть чему поучиться?

    Nipheris
    @Nipheris Куратор тега C++
    JSON Spirit (на гитхабе оригинала нету, только зеркала от других разработчиков)
    SOCI
    cpp-netlib
    Драйвер Монги для C++
    mapbox-gl-native

    По поводу сборки: сейчас в плюсах без CMake никуда. Если хотите собирать чужие проекты и разрабатывать свои - стоит познакомиться. Из перечисленного списка почти все умеют им собираться. В более старых проектах популярны autotools и классические make-файлы, еще можно встретить SConstruct.
    Ответ написан
    Комментировать
  • LoadPicture to Console?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    Нельзя. Можно только взломать cmd.exe
    Ответ написан
    Комментировать
  • Как роботизировать, реализовать видеонаблюдение?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Купите камеру с возможностью вращения и оптическим зумом. Это проще и надежнее, чем изобретать двумерного робота.
    Ответ написан
    Комментировать
  • Какой наиболее близкий вариант кросcплатформенной разработки с компонентами аналогичными Devexpress?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Выбросить паскаль. Перестать программировать мышкой, начать программировать головой.
    Взять Qt. Там работа с таблицами сделана правильно.
    Ответ написан
    Комментировать
  • Идея сервиса и приложения для удобства населения. Как реализовать?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Уже давно надо понять, что идея сама по себе ничего не стоит.
    Ответ написан
    2 комментария
  • Идея сервиса и приложения для удобства населения. Как реализовать?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Тут таких "уникальных" и "оригинальных", боящихся что сопрут их идеи, по 5 штук на дню. Почему люди должны работать с вами за вашу идею? Вы ничем не отличаетесь от остальной массы "изобретателей".
    Ответ написан
    1 комментарий
  • Как найти значение цвета в hex файле?

    @nirvimel
    Ваш roboto-icons.rp - это ZIP-архив. Распакуйте его, разберитесь со структурой каталогов, найдите ваши стили, подредактируйте, запакуйте все обратно и верните архиву расширение .rp.
    Ответ написан
    7 комментариев
  • Как объединить и разъединить byte[]?

    Я бы сделал это при помощи сериализации (класс BinaryFormatter).

    Создаём класс, который содержит картинку и текст, пихаем туда твою картинку и текст, сериализуем всё это при помощи BinaryFormatter.Serialize( ) в MemoryStream, получаем из него массив байт.

    При получении массива байт, создаём MemoryStream из массива, десериализуем из него при помощи BinaryFormatter.Deserialize( ) - получаем класс с нашей картинкой и текстом
    Ответ написан
    Комментировать
  • Как организовать login page с кнопкой для входа в интернет?

    mourr
    @mourr
    Passionate JS developer
    Это называется Capative Portal, гуглите в эту сторону. Решений полно готовых
    www.dd-wrt.com/wiki/index.php/Captive_Portal
    Ответ написан
    Комментировать
  • Можно ли у ТВ вместо монитора установить больше разрешение чем заявлено?

    Stalker_RED
    @Stalker_RED
    Даже если сможете, лишние физические пиксели в мониторе не появятся. Даже если монитор примет такой сигнал, ему придется ресайзнуть картинку до 1366x768.

    Попробуйте поменять DPI www.pcworld.com/article/2953978/displays/use-windo...
    К сожалению, в возможность настраивать DPI для отдельного монитора появилась только в десятке.
    Ответ написан
  • Почему Python multiprocessing нестабилен?

    @nirvimel
    Хорошо, что вы указали в тегах Windows, это все объясняет. Под Windows нет простого способа "раздвоиться" процессу при вызове multiprocessing.Process, поэтому осуществляется очень сложная эмуляция этого поведения. При этом функция target выдирается из модуля, запускается в отдельном интерпретаторе, а все параметры сереализуются передаются и десереализуются перед вызовом target, при этом инициализация модуля в новом интерпретаторе выполняется частично (инициализируется только глобальный контекс). Подробнее об этом, например, тут, есть еще одна очень хорошая статья где подробно рассмотрен этот механизм, но сейчас не найду ссылку.

    Коротко о том, как готовить multiprocessing под Windows:
    1. Разделять процессы (вызов multiprocessing.Process()) как можно раньше в коде.
    2. По возможности избегать инициализации любых ресурсов и глобальных переменных до разделения. Учитывайте, что этот код выполняется во всех процессах независимо и может давать кучу сторонних эффектов.
    3. Не передавать через args никаких сложных объектов с "поведением" (кроме объектов из самого multiprocessing, он сам знает как их правильно передавать), только голые данные (примитивы или объекты состоящие только из примитивов), которые сериализуются без сторонних эффектов.
    4. Создавать дочерние процессы один раз, и на протяжении всего времени работать с ними посредством обмена сообщениями через Pipe/Queue. Не порождать новые процессы в цикле вычислений в момент "когда понадобятся".
    5. Queue при попытке записи/чтения может блокировать процесс, если при этом происходит запись/чтения в/из нее в другом процессе. (Думаю, именно это и происходит в коде в вопросе).
    6. Лучше использовать Pipe, который в худшем случае блокирует один процесс, а не все, как Queue.
    7. При создании процесса можно передавать ему два Pipe (input одного + output другого), в вызывающем процессе хранить соответствующие им коннекторы и только при помощи их общаться с дочерним процессом.
    8. Можно не делать process.join(), а просто читать результаты из output Pipe, они прочтутся только после того как попадут туда, что дальше будет происходить с процессом уже не важно (можно поставить return после записи в Pipe в дочернем процессе).
    Ответ написан
    4 комментария