Ответы пользователя по тегу C++
  • Как шифровать заголовки/атрибуты файлов С++ в MFT?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Шифрование заголовков и MFT это слабая защита или даже вообще не защита. Софт который восстанавливает поверхность диска - умеет распознавать и реконструировать блоки файлов как паззл если файлы имеют известный формат и статистические свойства
    Ответ написан
  • Как организовать передачу данных с сетевого интерфейса приложению на C++ максимально быстро?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Вопрос поставлен неправильно.
    Чтоб оптимизировать odbc - надо 100% знать что именно он является узким местом. Я бы начал с анализа исполнения и извлечения данных локально на сервере. ДБА здесь поможет. И если ваша задаче связана с ETL - почитайте про техники. Может экспорт в csv файл с загрузкой в с++ приложение будет быстрее. Может репликация бд или миграция.
    Ответ написан
  • Скорость чистого перебора - как такое может быть?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Принты. Или наблюдения.
    1. Цикл где идет merge двух векторов - тривиален. Слабым местом может быть функция резерва памяти, которая по разному реализована в win/Linux. Я не утверждаю что в linux она плохая. Возможно просто звёзды сошлись так что page или другие свойства ос по отношению к аллокаций стали неблагоприятны.

    2. Что там с разрядностью 32/64? Надо проверить. Что с железом? Не пытается ли автор нас обхитрить, запуская все это на разном железе. Даже ничтожные различия в размере кешей L1 могли тут сработать.

    3. Версии STL. Автор использует не сырые указатели а итераторы. Причем хитрые. Какая там логика на инкремент и на разыменование под капотом.

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

    4. Опции GCC надо посмотреть. Оптимизацию подвигать. O1, O2.
    Ответ написан
  • Как грамотно посчитать значение комплексного выражения в C++?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Квадрат это умножение на самого себя.

    d3*=d3
    Ответ написан
  • Проблемы в реализации синтаксического анализатора?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Да тут не вопрос, а целое задание для фриланса. Не знаю чем автор занят, репостом ли чужих задач или решением своих но тут надо просто готовить котлету денег.

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

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    В программе имеется работа с сетевыми сокетами. Можно ли отделить чистый код шифрования от сетевых задач? Убежден что это поможет отвечающим сконцентрироваться на решении главного и отбросить вероятность того что автор ещё где то наделал других ошибок по стеку.

    Разделение кода на слои также является нужным скилом для c++ ника.
    Ответ написан
  • Как можно в c/c++ изменять значения ОЗУ?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Любое значение менять нельзя. Только те что принадлежат твоему процессу. Это - краеугольный камень инфо-безопасности для современных ос.

    Для своей памяти - это работа с указателем. Выделяешь себе кусочек памяти через mallox/new и меняешь что надо.
    Ответ написан
  • В чем смысл помешанности C++ на адресации и указателях?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Главная причина в том что C - это портабельный ассемблер который создавался с целью ускорить разработки Unix. И C++ унаследовал большую часть возможностей С в том числе и работу с адресной арифметикой. В современных языках платформерах таких как C#, Java адресная арфметика скрыта от прямого использования. И новичкам которые зашли в c++ сложно понять истинную пользу от игр с указателем. А чтоб это понять - надо писать либо тайм критичные приложения, либо просто low level драйверы.
    Ответ написан
  • TCP - как создать свой пакет?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    C TCP обычно не работают пакетами. Работают потоками или Streams. Это нормальный левел прикладного программиста. И я почти не знаю задач кроме студенческих лаб где кому-то вдруг понадобился пакет как таковой.

    Примеров полно. API: socket(), connect(), bind() ,listen().

    Поэтому может быть автору нужен принципиально другой протокол. Прикладной UDP. Или более системный IP но с последним сложнее работать т.к. операционки запрещают его напрямую. Через него легко устраивать различные Syn-Flood атаки. Нужно как-то повышать привилегии или пользовать сторонние либы.
    Ответ написан
  • Как правильно параллельно обрабатывать файлы на c++?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Это видимо учебная задача. Практического смысла параллелизма здесь мало.

    Обычная дисковая подсистема на домашнем ноутбуке состоит из 1 HDD/SDD. И он не параллелится. Тоесть это такое жлобское устройство которое в 1 момент времени может обслуживать чтение и запись 1 блока файловой системы (или сектора или кластера неважно). Поэтому параллелизм толком ничего не дает. Однако если у вас какие-то RAID массивы или сеть хранения данных то она может обеспечить такие действия.

    Что еще в задаче плохо.
    while(!InputFile.eof())
        {
          getline(InputFile, tmpString);
        }

    Непонятно что здесь происходит? Перемотка в конец файла? Почему так дорого? Почему мы должны каждый раз получать строки? Ведь нам нужна только последняя? Может надо было взять первую? Вобщем непонятно.

    Вот если-бы автор решал задачи наподобие map-reduce где работают с большими файлами тогда параллелизм был бы понятен. Там чтение блока файла чередуется в вычислениями.

    Здесь вычисления - мелкие. И большая часть процессорного времени зря сгорит в старт-стопах потоков и в финальном join потоков (которые я кстати не вижу).
    Ответ написан
  • TCP - как лучше передавать данные?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Лучше всего простой текстовый протокол.

    json при данной постановке - вторичен. Когда будет написана основная игровая логика то перейти на json будет не сложно.
    Ответ написан
  • FFmpeg. Как программно записать поток в реальном режиме?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Поскольку номер кадра для real-time не имеет смысла то надо поискать такую нумерация которая этот смысл принесет.

    Пиши текущий timestamp в качестве имени.
    Ответ написан
  • Как сделать реакцию на вызов метода у объекта?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Эта тема не про иерархию и ООП.

    А про алгоритмы и структуры данных. На их языке вопрос должен звучать так.

    - Дано дерево объектов {Car}/{Box}/{Bomb}
    - И при возникновении события в листовом уровне дерева - должна удаляться вся цепочка Parents вплоть до уровня Car.
    Ответ написан
  • Как передать два параметра в тред?

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Поскольку С++ - это объектный язык то обсуждение того как что-то передать надо вести в терминах объектов.
    Этож не ассеблер. Смотрите на шапку функции по созданию треда.
    HANDLE CreateThread(
      LPSECURITY_ATTRIBUTES   lpThreadAttributes,
      SIZE_T                  dwStackSize,
      LPTHREAD_START_ROUTINE  lpStartAddress,
      __drv_aliasesMem LPVOID lpParameter,
      DWORD                   dwCreationFlags,
      LPDWORD                 lpThreadId
    );


    В ней lpParameter должен быть указателем на структуру из вашего массива и длины. Или просто вектор целых чисел в терминологии STD (std::vector)
    Ответ написан
  • Как на OpenCl работать с изображением?

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

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

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

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

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

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

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

    @mayton2019
    Ent. Software engineer. Oracle. SQL. BigData.
    Тут могут быть подводные камни.

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

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

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

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

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

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

    По алгоритму. Ну я +1 к Антону.
    Ответ написан