LINUX.ORG.RU

В каком формате лучше хранить конфиги?

 ,


1

2

Сижу, втупляю..
Не хочу велосипедить. Не могу решить в каком формате хранить, генерировать и парсить конфиги своего поделия.

Подробнее: Основной конфиг — иерархия, 3-4 уровня. Затем еще два вида саб-конфигов, разная структура, иерархия, 2-3 уровня.

Условия:

1) текстовый формат;
2) хуман реадабля, и чем реадаблее, тем лучше;
3) минимум зависимостей.

Варианты:

1) *.ini — хуман реадабля 146%, либ как собак нерезаных, да и вообще реализация проста, можно самому навелосипедить и обойтись вообще без зависимостей;
2) JSON — похуже первого в плане читаемости, зато структуру иначе чем написано не распарсишь, либы есть, но что-то они крупноваты по размеру, написать свою ниасилю по времени, придется зависеть от -lfoobar;
3) XML — читается лучше второго, но, зависимость, хотя, libxml уж точно будет стоять на 99% линуксомашин;
4) что-то я такое видел интересное в dovecot'е, похожее на JSON, но читаемее, что это?
5) Еще варианты?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от deep-purple

Это уже проблема недоделанных библиотек. В стандарте JSON ничего не заставляет ограничиваться ASCII. Более того — вообще непонятно, какие могут быть причины это делать: UTF-8 в разы компактней, чем такой escaping.

Legioner ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

ini это вообще не формат, как и csv, например. Это скорее набор принципов, по которым каждый ваяет свой формат, несовместимый с другими. Лучше его избегать, чтобы не увеличивать степень бардака в мире и использовать более чётко определённые форматы.

Legioner ★★★★★
()

Ini. Самое читаемое. В QSettings как-то ухитрялись иерархию прикрутить, можешь посмотреть на результат, если оно тебе (иерархия, в смысле) надо

XMs ★★★★★
()

Когда я был юн, для конфигов на сяхкопипастили кусок первого апача, там удобно было. Сейчас хипстота признает только gconfig и т.п.

Shadow ★★★★★
()
Ответ на: комментарий от deep-purple

php говнякает json, поэтому я напишу парсер/генератор своей версии INI на всех используемых мною языках. Студента звали Альберт )

makoven ★★★★★
()
Ответ на: комментарий от Manhunt

У Луа тот недостаток, что он гораздо слабее других форматов защищен от дурака.

Ничто ведь не мешает перед тем как делать loadstring() etc проверить прочитанный конфиг на что угодно средствами самой Lua

alx777 ★★
()
Ответ на: комментарий от makoven

Проще написать свой огороженый формат, чем парсить луа-скрипт своими силами

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

alx777 ★★
()

JSON

Если ты так любишь это говно, то jsmn можешь статически влинковать в свое приложение.

XML
читается лучше

Если насчет чтения еще можно похоливарить, то вот правки такого добра — это какой-то ад. Имей в виду, что libxml2 — весьма пухлая штуковина, однозначно не рекомендую в условиях ограниченности ресурсов.

Еще варианты?

YAML, но это откровенная параша. Не понимаю, зачем ты ищешь что-то новое, когда уже есть ini?

kawaii_neko ★★★★
()
Ответ на: комментарий от cherry-pick

Еще скриптики на lua/scheme можно в качестве конфигов юзать.

cherry-pick
()

Google protobuf / FB thrift. Test format is very readable, fast serialization/deserialziation. Cons: needs protobuf library. Google has one for Python, C++, Java.

idemura
()
Ответ на: комментарий от Frost

конечно найдёт

только не очень большой по объёму.

anonymous
()

2) хуман реадабля, и чем реадаблее, тем лучше;

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

at ★★
()

Не указанны следующие данные: кто пишет конфиг, насколько часто его нужно читать (сиправлять) человеку и т.д.

2) JSON — похуже первого в плане читаемости, зато структуру иначе чем написано не распарсишь, либы есть, но что-то они крупноваты по размеру, написать свою ниасилю по времени, придется зависеть от -lfoobar;

3) XML — читается лучше второго, но, зависимость, хотя, libxml уж точно будет стоять на 99% линуксомашин;

Откуда грибы?

at ★★
()
Ответ на: комментарий от deep-purple

вручную

Разумеется. Читаемость и удобство - это разные вещи. Впрочем, я голосую за TOML.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.