Ответы пользователя по тегу C++
  • Как на OpenCl работать с изображением?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Данный пример с чтением png - неудачный.
    Дело в том что декодирование png не параллелится. Оно будет выполнено на 1 ядре процессора. И это займет 80% времени. Я так думаю. А уже декорированную матрицу RGB - да можно процессить на Opencl разбивая картинку на строки или на фреймы. Но преимущества opencl будут потеряны. Ведь мы уже львиную часть времени простояли ожидая декодирования.
    Ответ написан
    Комментировать
  • Доступ к приватным полям через арифметику указателей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Формально, с точки зрения ООП так делать нельзя. Я не знаю продуктовых задач где такой злостный хак имел бы место.

    А преподавателю который это придумал - надо оторвать яйца.
    Ответ написан
    6 комментариев
  • Как написать видео редактор?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор ты взялся за самое безнадежное и неблагодарное дело. Во первых - поддержка видео-форматов или видео-кодеков. С нуля с этим ты просидишь до седой бороды. Никому не нужна будет разработка через 70 лет.

    Посмотри исходники из опенсорцных
    - VirtualDub (там оконное приложение и фильтры)
    - ffmpeg кодекеи
    - VLC (плеер и кодеки)

    По поводу математики и моделей. Видеоредактор должен уметь склеивать видосы разных разрешений и разных fps. Тебе нужна единая внутреняя модель представления видео и звука во времени. И ты должен написать API для работы с этим всем.

    Не спеши кодить. Просто нарисуй на бумажке диаграмму или модель компонент твоего приложения. Я думаю что уже на этом этапе ты должен сильно охладать к разработке или думать как нанять бригаду кодеров и платить им всем сразу и долго.
    Ответ написан
    2 комментария
  • Как найти в строке 16-ричные числа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут могут быть подводные камни.

    В произвольном английском тексте есть одельные независимые слова которые покрывают
    диапазон 0x0..0xF и будут ложные срабатывания на артиклях: "a" и вообще коротких
    словах таких как "cafe" которые технически воспринимаются как хекс-число.

    Поищите все слова что покрывают abcdef.
    Ответ написан
  • Как совместить python и С++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я-бы делал наоборот. Высокоуровневые вещи. Формочки. Мышко-клики. Действия пользователя я-бы делал на Питоне. А тайм-критичные вещи (работа с файлами и сетью и бизнес-логикой) - на С++.

    Тот факт что у С++ есть Qt с формочками ни о чем не говорит. Это - как редкое исключение из правил. Всё равно что на примере падения метеорита доказать что в небе есть железо и надо срочно добывать его в космосе.
    Ответ написан
    Комментировать
  • Как найти часто встречающиеся тексте последовательности?

    mayton2019
    @mayton2019
    Bigdata Engineer
    120 гигабайт - это размер еще не Биг-дата но уже близкий к выходу за рамки оперативной памяти. Если исходный материал побит на файлы (небольшого размера) то я-бы предложил решать эту задачу через map-reduce.

    Если удасться это сделать то реализация написанная на Python может работать быстрее во много раз за счет параллелизма. Я не говорю что на С++ не надо делать. Я просто акцентирую внимание что задача имеет специфику распаралелливания. Грубо говоря задача тяготеет к big-data и шаблонам паралельного процессинга для которых язык не особо важен а важна имеено эта опция.

    По алгоритму. Ну я +1 к Антону.
    Ответ написан
    Комментировать
  • C++ или Java, что выбрать первым?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    C++ остается сильным направлением только в геймдеве. Во всем остальном он уже не рулит. Изучай Java если хочешь бабло зарабатывать. С++ выучишь потом для души.
    Ответ написан
    8 комментариев
  • Как узнать, по какому адресу загружена библиотека и какой её размер в байтах, что бы можно было сделать memmove?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.
    - Задача противоречит базовым принципам защиты информации в много-процессной ОС. Если ее рассматривать с разных углов то можно видеть и анти-вирусную угрозу и просто краш системы если она будет работать от супер-пользователя. Эти пункты надо проговорить.
    - Реализация будет сильно зависеть не от С++ а от ОС (Windows/Linux)
    - Очень полезно понять мотивы зачем этого хочет автор. Тогда и можно придумать эффективное решение. Тоесть не просто сделать memmove, сделать ДЛЯ КАКИХ_ТО целей.
    Ответ написан
    Комментировать
  • Поможет ли вынос работы с крэшащейся библиотекой в отдельный поток от крэша всего приложения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тема выходит за границы чистого С++. Автор расскажи что у тебя Windows или Linux.
    Ответ написан
    Комментировать
  • Не актуально не актуально?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Делаешь с рекурсией. Но дополнительно задаешь параметр level. При входе в рекурсию увеличиваешь его на +1.
    И если больше 1 то не погружаешся дальше.
    Ответ написан
    1 комментарий
  • Как в RC6 вводятся текст и ключ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Схема при которой пользователь вводит НЕЧТО с клавиатуры и это нечто расматривается как ключ шифрования - очень слабая схема и не выдерживает атак. Пользоватль ленив и глуп. И всегда будет стараться вводить пароли и ключи по 1-2 символа. С этим ничего не поделать. Поэтому если автор заинтересован чтобы поле ключей было более сложным - надо использовать во первых SALT в совокупности с паролем. И использовать функцию хеширования наподобие SHA1 чтобы получить более-менее сложый ключ. В некоторых случаях (сеансовые ключи) можно получить энтропию из внешнего мира (часы в микросекундах и текущее положение мышки на экрасне).

    Тоесть само наличие в схеме алгоритма RC5 еще не гарантирует что у тебя система надежна. Нужно чтобы ее использование было чистым и лишенным человеческого фактора.
    Ответ написан
  • Почему шарик застревает в стене?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно корркетировать не только вектор скорости но и координату. Это спасёт шарик от сингулярностей.

    if(x + 64 > 320.0) {
      dx = -dx;
      x = 320.0;
    } else if (x < 0.0) {
      dx = -dx;
      x = 0.0;
    }
    
    if (y ... e.t.c.
    Ответ написан
    Комментировать
  • Алгоритм поворота динамического массива без доп памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно эту прямоугольную "колбасу" вообще не поворачивать. А хранить вектор повернутости. И перегрузить оператор индекса чтобы доступ вел себя по правилам аффинных преобразований.
    Ответ написан
    Комментировать
  • Как сделать дизайн (GUI) на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос звучит неправильно. Сам по себе С++ не имеет никаких встроенных в себя технологий для отрисовки графики. Это уже - задача библиотек которые будут зависеть от ОС или оконного менеджера.

    И здесь Qt, Gnome, KDE, WTL просто производные от ОС.
    Ответ написан
    Комментировать
  • Как передавать много сообщений через Socket?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор пытается построить свой прикладной протокол поверх сокетов. Этого не надо делать т.к такие протоколы уже созданы. Ключевые слова: jms, mq, apache-mq, kafka, rabbitmq, ibmmq.
    Ответ написан
    Комментировать
  • Java или C++ для сложных задач, проектов и computer science?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    C++ сегодня очень сложен как язык. Порог вхождения высок и новички часто обламывают об него зубы доходя лишь до арифметики указателей. Там - половина ньюкамеров можно выносить ногами вперед. Скорость разработки прикладного ПО под backend на Java значительно выше. Да и облачные технологии такие как Google Clound , Amazon AWS поддерживают все языки кроме С++. Вобщем если автор хочет быстрых денег - то лучше Java.
    В С++ надо вырасти до седых волос чтобы представлять что-то серъезное потому-что стек С++ плотно уходит в операционную систему и железо. Невозможно знать просто С++. Надо быть немного сисадмином и железячником. Иначе в С++ делать нечего.
    Ответ написан
    Комментировать
  • Из-за чего debug assertion failed?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Предположительно ругается стандартная библиотека CRT из за нечетного размера буфера.
    _O_U16TEXT предполагает что символы двухбайтные хотя где-то идёт попытка использовать четное число байт как аргумент.
    Ответ написан
    2 комментария
  • Можно ли и имеет ли смысл этот код перенести на OpenCL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего параллелизм ничего не даст. Дело в том что параллелятся задачи когда
    1) Shared nothing. Есть множество процессов и они работают со своими массивами данных а потом сливают результат в некий итог.
    2) Шарятся данные но при этом они иммутабельные.
    В твоём случае используются операции такие std::reverse, QVector::mid. Они ломают общий снапшот данных и не дают выполится пункту (2).

    Вобщем надо серъезно сломать алгоритм чтобы получить ползу от параллелизма.
    Ответ написан
    1 комментарий
  • Работать с файлом word из программы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если docx то можно. Это zip-архив внутри которого xml-документы. И если внутрь поместить заранее свои
    плейсхолдеры (такие уникальные строки) то можно их строковой заменой найти.

    Решение - так себе. На троечку но иногда работает когда под рукой нет парсеров.
    Ответ написан
    Комментировать
  • Время работы куска кода в миллисекундах?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Значит до того как автор начал что-то мерять. Обычно такая задача ставиться в поиске узких мест в приложении. В данном конкретном случае - узкое место это работа с cout. Ее надо устранить и заменить на работу с файлами. Или просто уменьшить объем трафика который пройдет через cout. Вообще нет особого смысла так часто печатать что-то на консоль. Всё равно человек глазами так быстро не видит. Бешеный скрол экрана не имеет смысла кроме того еще и потребляет ценные мега-флопы.
    Ответ написан