Re[10]: Челендж - сделать версионированный конфиг
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 13.09.25 22:28
Оценка:
Здравствуйте, bnk, Вы писали:

M>>Текстовый формат в любом случае не подходит. Различные подсистемы хотят на старте получить указатель на свою двоичную структуру, чтобы потом во время работы туда напрямую писать.

M>>И конфиг хранится не во флеше, а епроме, там всего 16Кб

bnk>Так это тогда ни разу не "конфиг". RIFF (TLV) нормальный вариант, это работает десятилетиями, и проще сложно что-то придумать IMHO.


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

Да, мне уже подсказали, что надо копать в сторону TLV


bnk>В тэг можно тип struct-а писать (StructX structY, etc), и номер ее версии например (X1, Y1, ну и т.п.)

bnk>Чтобы проще парсить, я бы запретил изменения, только дополнения полей.

Сейчас думаю, как именам давать на автомате короткие стабильные идентификаторы. Хранить имена — слишком жирно — 10 структур по 10 полей, каждое 10 символов — это килобайт только на имена одной версии


bnk>Т.е. "Y2" это "Y1" с дополнительными полями.

bnk>Тогда код код который парсит Y1 можно использовать для парсинга Y2 тоже.
bnk>А если нужно поменять поле в структуре, заводишь новое.
bnk>Но в принципе опционально, просто код который это парсит должен быть сложнее.

Да по идее, удалять тоже не проблема, если в новой структуре нет поля, то из старой ничего не берётся просто.
Ну, и соответственно, менять местами тоже нет проблем.
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.