История изменений
Исправление ls-h, (текущая версия) :
Так что и реестр бинарный запилят
Можно подумать, что это в принципе что-то плохое, а текстовые конфиги это рай на земле. Не обязательно делать один в один, как в винде.
Я тут всё контейнерами балуюсь последнее время. И возникла задача поправить во всех контейнерах конфиги у разных софтин. Так это просто праздник какой-то, что у всех свой текстовый формат. Где-то они ini-образные, где-то секции обозначаются через «{}», у других вообще вместо секций «ifndef». Красота! Как это автоматизировать? Чтобы админу было не скучно, можно поразвлекаться с sed, awk, grep и т.п. А ещё у баша чудестный синтаксис. Конечно, можно взять любой нормальный ЯП. Но! Всё равно надо написать маленький парсер, чтобы просто внести несколько изменений.
Теперь представим сферический реестр в вакууме:
# registry --host=container.lxc addString /soft/softName/section/subSection paramName "str value"
# registry --host=container.lxc help /soft/softName/section/subSection
И баш скриптами можно ворочить, если захочется:
list=`registry list /soft/softName/section/subSection`
for l in list
do
registry getAsText /soft/softName/section/subSection/$l|grep bla-bla-bla...
done
Исходная версия ls-h, :
Так что и реестр бинарный запилят
Можно подумать, что это в принципе что-то плохое, а текстовые конфиги это рай на земле. Не обязательно делать один в один, как в винде.
Я тут всё контейнерами балуюсь последнее время. И возникла задача поправить во всех контейнерах конфиги у разных софтин. Так это просто праздник какой-то, что у всех свой текстовый формат. Где-то они ini-образные, где-то секции обозначаются через «{}», у других вообще вместо секций «ifndef». Красота! Как это автоматизировать? Чтобы админу было не скучно, можно поразвлекаться с sed, awk, grep и т.п. А ещё у баша чудестный синтаксис. Конечно, можно взять любой нормальный ЯП. Но! Всё равно надо написать маленький парсер, чтобы просто внести несколько изменений.
Теперь представим сферический реестр в вакууме:
# registry --host=container.lxc addString /soft/softName/section/subSection paramName "str value"
Не обязательно, как в винде, все ветви разных софтин пихать в один файл. Вполне может быть несколько файлов, с подгрузкой при первом обращении. А ещё могут быть схемы для проверки корректности. Например, после выполнения команды выше, выводится ответ: «String paramName too long». И ты понимаешь, что надо поправить конфиг без перезапуска демонов. Что очень удобно, если они в данный момент используются. Можно с мануалом подружить:
# registry --host=container.lxc help /soft/softName/section/subSection
А оно тебе открывают справку на нужном месте.
И баш скриптами можно ворочить, если захочется:
list=`registry list /soft/softName/section/subSection`
for l in list
do
registry getAsText /soft/softName/section/subSection/$l|grep bla-bla-bla...
done
Бинарный формат? Ну, будет какая-то утилита для редактирования. Слышу возгласы: «Вот! Утилита! Без неё не отредактировать!». А без текстового редактора текстовый файл тоже не отредактировать. Ещё орут: «Бинарный формат - плохо! При ошибках ФС его починить сложнее!». А что мешает добавить туда избыточной информации для восстановления? Кроме того, концепция реестра (с некоторыми ограничениями) ложится на файловую систему, поэтому можно использовать и привычные echo, cat, etc.