Челендж - сделать версионированный конфиг
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 13.09.25 14:25
Оценка: :)
Здравствуйте!

Есть развесистые вложенные структуры. Хранится, допустим, просто в файле, как снимок памяти с корневой структурой. Всё структуры состоят из примитивных типов, вроде даже float'ов нет. Есть массивы, в тч и структур, исключительно фиксированного размера.

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

В общем, такое вот, историческое легаси.

Требуется придумать какой-то механизм, который позволяет вычитать старую версию конфига, всё, что можно — перенести в новый конфиг, если чего-то в старом конфиге нет — установить значение по умолчанию.

Вроде бы, protobuf что-то умеет в версионность, но: нам нужно уметь для каждого поля любой структуры получить его смещение относительно начала файла, чтобы писать непоредственно по этому смещению.

Как вам такое?


ЗЫ Задача со звёздочкой — сделать на чистейшей сишечке.

ЗЫЫ Внешние инструменты не очень приветствуются, но можно попробовать написать что-то на питоне, и к питону наверное даже можно доустановить каких-то библиотек, помимо того, что идёт в базе, если это не слишком гемморно.
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.