LINUX.ORG.RU

С какими форматами конфигурационных файлов вам приятно работать как пользователю?

 


0

2

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

Опрос в контексте использования готового ПО, а не разработки.

  1. INI 334 (57%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. JSON 218 (37%)

    ****************************************************************************************************************************************************************************************************************

  3. YAML 215 (37%)

    *************************************************************************************************************************************************************************************************************

  4. TOML 102 (17%)

    *************************************************************************************************

  5. XML 87 (15%)

    ***********************************************************************************

  6. Самописные 67 (11%)

    ****************************************************************

  7. Никаких конфигов, только UI! 49 (8%)

    **********************************************

  8. Для этого должны быть CLI утилиты 43 (7%)

    *****************************************

  9. Свой вариант (укажите в комментариях) 27 (5%)

    *************************

  10. Реестр Windows 21 (4%)

    ********************

  11. SQLite (и другие embedded DB) 21 (4%)

    ********************

  12. Специализированные библиотеки (libConfuse, libconfig, etc) 20 (3%)

    *******************

Всего голосов: 1204, всего проголосовавших: 583

★★★

Проверено: Satori ()
Последнее исправление: hobbit (всего исправлений: 2)

как сторонник tab-ов я недолюбливаю yaml, потому что этот формат к хренам ломается при их использовании :-/. А так конечно формат годный.

XML при размере сложнее пары десяткой полей превращается в адский ад для ручного разбора, JSON в этом плане получше.

libConfuse неплох, но популярность его сильно низкая.

TOML видел всего пару раз издалека, пока мнения не составил.

INI - это прошлый век, но для простых случаев(или когда его использует более высокоуровневая прослойка, например QSettings) - пойдет.

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

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

libConfuse неплох, но популярность его сильно низкая.

Вот да. И очень жаль. Сейчас смотрю, есть ли смысл перехода на YAML для своих поделок.

Как тут оказался SQLite - вопрос очень интересный

Встречал в дикой природе десктопные приложения, которые хранили свои конфиги во встраиваемых БД (реляционных или key-value). Для мобильных приложений хранить свои настройки в базе данных - вовсе не редкость. ¯\_(ツ)_/¯

Pravorskyi ★★★
() автор топика
Последнее исправление: Pravorskyi (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

XML при размере сложнее пары десяткой полей превращается в адский ад для ручного разбора

Вспомнил как недавно пришлось лопатить пятнадцатимегабайтный(!) xml-файл… Брр! Спасибо хоть он был не однострочным, XML позволяет.

mord0d ★★★★★
()

Из готового мне нравится master.cf у Postfix и формат конфига syslog (ksyslogd)

Сам я обычно изобретаю конфиги как в syslog, если требуется что-то сложнее key-value. Парсеры тоже обычно пишу сам.

mord0d ★★★★★
()

Опрос в контексте использования готового ПО, а не разработки.

Специализированные библиотеки (libConfuse, libconfig, etc)

По-моему, здесь какое-то противоречие.

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

Речь о конечном формате конфига, который редактирует пользователь. Оный совсем не обязан знать программирование.

Pravorskyi ★★★
() автор топика
Ответ на: комментарий от mord0d

Кстати, ты пятнадцатимегабайтный DOM-ом парсил? Если да, то есть подозрение, что SAX и здесь способен существенно ускорить обработку.

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

Кстати, ты пятнадцатимегабайтный DOM-ом парсил?

Нет. Мне повезло, он оказался битым. А когда получил целый, в него уже лезть не надо было.

Я не люблю XML и стараюсь избегать. Лучше ковыряться в каком-нибудь CVS.

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

CVS хорош для линейных структур. Для иерархий это уже боль и мучение.

XML просто надо уметь готовить. Причём в первую очередь это касается даже не тех, кто его парсит, а тех, кто проектирует структуру данных. Она должна быть максимально приближена к предметной области. Соблазн «а давайте сделаем универсальную структуру, в которую можно запихать ВСЁ» надо душить, иначе получается монстр. Вот файлы .ui в Qt — это плохо читаемый монстр, к сожалению. (QML, кстати, тоже многословным получился, декларативный язык описания интерфейса можно было сделать намного лаконичнее).

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

CVS хорош для линейных структур. Для иерархий это уже боль и мучение.

Чем проще данные, тем проще парсить CVS, а XML он сразу монстр.

«а давайте сделаем универсальную структуру, в которую можно запихать ВСЁ»

Таких нужно сразу увольнять и больше не допускать к IT. Совсем.

Раньше программисты решали задачи, теперь соревнуются в "успешности". Поэтому я большше не работаю в IT, они не нуждаются в моих услугах.

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

Речь, наверное, всё же шла про CSV? :)

Да. CVS — система контроля версий.

Сегодня что-то мысли путаются.

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

ini и yaml.

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

самый лучший способ конфигурирования - наличие падавана, которому достаточно в устной форме сказать «сделай хорошо».

ergo ★★★
()

YAML это та ещё мерзость.

.ini. .conf и .json рулят!

Skullnet ★★★★★
()

Удивлён популярности XML.

XML при более чем 2-3 параметров становится уже нечитаемой кашей. А если проект живёт несколько лет, и в него добавляются всё новые возможности, то структура XML становится такой, что без бутылки в ней не разобраться.

emorozov
()
Ответ на: комментарий от Pinkbyte

tab-ов
формат к хренам ломается при их использовании

бля.
вот оно что ещё...а на вид выглядит по количеству пробелов ровно!!!

darkenshvein ★★★★★
()

ини, только ини.
это конечно устарело, и всё остальные форматы тоже,
всё, что не влезает в формат ини,(неудобно по размеру редактировать) должно храниться в БД.

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

самый лучший способ конфигурирования - наличие падавана, которому достаточно в устной форме сказать «сделай хорошо».

Вот, человек познал дзен :)

filosofia
()

ini для простых случаев ok, для ветвистых и более жирных пойдет XML.

P.S. Если у вас конфиг занимает 30 гигов, то сколько займут сами данные приложения?

necromant ★★
()

Зависит от программы: даже простой INI может быть написан так что хрен разберешь, а перегруженному XML будет радоваться глаз. А так ini, json. Мне еще нравятся скриптовые конфиги типа как у awesome, очень много возможностей.

Pups
()

Ini для простых конфигов, yaml для «программирования на ямл».

filosofia
()

Nix, конечно. Спасибо ему прекрасному, что, помимо всего прочего, ограждает меня от всех этих ужасов из шапки.

t184256 ★★★★★
()

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

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

С матами, инфа 100%. Самые сдержанные и привыкшие не комментировать ни конфиги, ни уродский JSON терпят до первого непринятия запятой перед фигурной скобкой, затем вполголоса присоединяются к общему вою.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)

А вообще будущее за всякими toml и dhall.

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

Если не ошибаюсь, в FreeBSD используется JSON-like формат, но с комментариями. Правда, строго говоря, это уже не JSON.

Конечно, никто не мешает заниматься извращениями типа:

{
    "#": "Это комментарий",
    "index": 1024,

    "#": "Ещё один комментарий",
    "message": "Please don't do this I'm begging you!"
}

— поскольку в описании формата JSON нет требования уникальности полей внутри объекта, однако многие парсеры могут это не прожевать, а при программном изменении — перемешать.

Rootlexx ★★★★★
()

Перерыл всё что можно, всё херня, многое вот вот почти, но нет. Так что самопальный, Для совсем уж простого обычный текстовый файл + scanf(); Для особых случаев когда нужна гибчайшая гибкость и что-бы можно было всё -> lua как конфигурационный формат лучше всех в мире вместе взятых.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от mord0d

Спасибо хоть он был не однострочным, XML позволяет.

xmllint позволяет красиво переформатировать любой xml

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

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

AVRS ★★
()

Если программа подразумевает необходимость редактирования вручную, то конечно же INI, потому что он наиболее интуитивно понятен. Более того, его удобно парсить даже костыльными средствами шелла.

Честно говоря даже апач иногда выбешивает когда выстраивает свой конфиг в этой его XMLьной пародии. Nginx куда читабельнее и аккуратнее выглядит.

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

windows10 ★★★★★
()

INI и TOML чем отличаются особо?

EXL ★★★★★
()

Если ini недостаточно, то это уже не конфиг.

Psilocybe ★★★★
()

Проголосовал за три пункта:

INI

Самый удобный вариант для ручной правки. XML и JSON, как мне кажется, избыточны.

Никаких конфигов, только UI!

Если можно что-то настроить мышкой, не куря маны, почему бы этого не сделать? В идеале изменения должны писаться в текстовые конфиги.

Для этого должны быть CLI утилиты

Желательно, чтобы были.

За YAML не голосовал, потому что никогда с ним не работал, но формат мне нравится.

Самописные, как мне кажется, в основном получаются похожими на INI.

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

как сторонник tab-ов я недолюбливаю yaml, потому что этот формат к хренам ломается при их использовании

Не ломается, если консистентно использовать табы во всём файле.

eternal_sorrow ★★★★★
()

хороший опрос: Мне нравится yaml для настроек, имхо лучшее что я видел для себя. Так же не плохи и иногда использую как более легковесное libconfig.

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

Реестр Windows - само собой штука отличная (исключая ту политику работы с ним в Windows, благодаря которой он засерается от продолжительной жизни ОС. т.е. историю в нём хранить плохо, но сама концепция шикарна)

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

bonta ★★★★★
()

Ini для простых случаев и какой-нибудь rc.lua для остального.

einhander ★★★★★
()

Всем, кто проголосовал за INI, необходимо познакомиться с TOML.

fulmar_lor
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.