May 21, 2022

[Страх программиста, Боязнь разработчика]

Вроде бы мелочь - данные хранятся в единственном числе, а теперь нужно, чтобы был массив.

Но сюда накладываются проблемы, типа:

  • перелопатить все функции, где это используется
  • добавить логику, что этот массив пустой
  • сохранить поддержку старого формата

Примеры:

  • (EmoDetect)
    Исходно: aнализируемый кадр содержит описание одного лица человека или его отсутствие.

    Лаконичная задача: поддержать обработку и трекинг нескольких лиц в кадре.

    Сложности: необходимо иметь наготове несколько тяжеловесных моделей, обрабатывающих изображение и умело тасовать их результаты, не давая использовать лица, которые обрабатываются другими моделями; старый формат результата был типовым табличным файлом, где есть временная метка и параметры лица (удобно открывается в Excel), новый формат - древовидный JSON, где у кадра есть массив параметром лица (в Excel не открывается).
  • (NeuroForsage)
    Исходно: тренинг содержит одну БОС-тренировку, состоит из слайдов. В каждом слайде есть фон, текст, сопровождающая речь.

    Задача: Несколько разных БОС-тренировок в одном тренинге, в слайде может быть несколько сопровождающих речей.

    Сложности: старый табличный формат хранения данных предполагал, что есть начало и конец БОС, теперь это массив, соответственно, необходимо поддержать и старые записи и новые, методом нахождения характеристических полей (параметра версии файла данных нет, так как это облачная MySQL база данных); для речи, опять же для поддержания старого формата, требуется аккуратно формировать новую структуру данных, содержащую элементы старой и новой.

    Осложнения: нельзя так просто в Safari взять и создать тучу непроигрываемых аудио элементов, активируемых в нужных момент - требуется использовать 2-3, которым изменять source, но требуется мониторить статус загрузки, так как, даже используя уже загруженный Blob в памяти, всё равно есть задержка ~10-100 мс до возможности начала произведения.