Serge
15.03.2016
09:25:23
и я согласен, любой формат можно использовать не по назначению и/или превратить его в кошмар;)
Pavel
15.03.2016
09:25:53
Ты привык извращаться? )
Serge
15.03.2016
09:26:03
Google
Serge
15.03.2016
09:26:22
Pavel
15.03.2016
09:27:02
Ага. Тогда, наверное, понимаешь, что извращаться sed'ом это не совсем по назначению.
Serge
15.03.2016
09:27:20
я вот только вчера сделал коммит sed-ом в мой рабочий проект за минуту. уверен, любое ide с его gui потребовалы больше времени
Pavel
15.03.2016
09:27:31
Serge
15.03.2016
09:27:39
это при том, что я код редактирую только в ide, без всяких ущербных редакторов
Pavel
15.03.2016
09:29:37
Пример с головы:
[blabla]
admins = vasya
А второй админ через запятую? Через пробел? Другой разделитель? А если я не угадаю, то моего админа будут звать "vasya,petya".
Используйте ущербные редакторы, они полезны и позволяют экономить время. )
Serge
15.03.2016
09:43:09
надо смотреть со стороны пользователя, а не человека, который знает что такое bnf
Pavel
15.03.2016
09:43:53
Не, не могу. Потому что разработчик впилил value.split(" ").
Serge
15.03.2016
09:45:25
Pavel
15.03.2016
09:46:50
https://docs.python.org/3/library/configparser.html#supported-datatypes
Google
Serge
15.03.2016
09:48:32
да, видимо я сам хачил;)
ну, значит не надо использовать ini уже для списков;)
но вот
{
"blabla": {
"admins": ["vasya"]
}
}
это перебор, имхо
Pavel
15.03.2016
09:53:09
А что оптимально?
При условии, что я как пользователь хочу точно знать, как не ошибиться.
Но можно для начала и без этого условия. )
Serge
15.03.2016
09:54:26
Pavel
15.03.2016
09:55:05
Ну это уже нечестное ведение диалога. )
Serge
15.03.2016
09:55:11
а если файлик, то дока и ini на пять строк. обычно достаточно
это для пользователя
чтобы не ошибиться в програмно легко читаемом формате, нужен валидатор, а это отдельная программа, которой в общем случае у пользователя нет
Dmitry
15.03.2016
09:57:09
на совпадение я использовал ини для список прямо вчера
там довольно очевидно что через запятую оно )
Pavel
15.03.2016
09:57:31
Где "там"?
Serge
15.03.2016
09:57:36
ну т.е. достаточно один раз это юзеру сказать
Dmitry
15.03.2016
09:57:38
http://dev.utek.pl/2013/ignoring-tables-in-alembic/
Serge
15.03.2016
09:57:59
а вот тебе это и сказали, в доке
:)
Pavel
15.03.2016
09:58:27
Еще раз: ini фиксирует формат только примитивных значений. Все остальное – полет фантазии разработчика. И прелесть вашего любимого ini в том, что любую ошибку он тихо схавает.
Dmitry
15.03.2016
09:58:47
в общем я за ини либо ямл (в зависимости от задачи)
Google
Serge
15.03.2016
09:58:55
ну да, а ты напишешь после валидации значений, у меня такого нет
Pavel
15.03.2016
09:59:32
а yaml – надмножество json, и я уже могу сказать, что вы предвзяты к json )
Serge
15.03.2016
09:59:36
Pavel
15.03.2016
09:59:56
Я о том же.
Serge
15.03.2016
10:00:10
Pavel
15.03.2016
10:00:31
Любые ошибки после = в ini съедаются и обнаруживаются очень поздно.
Serge
15.03.2016
10:00:57
Pavel
15.03.2016
10:01:06
Serge
15.03.2016
10:01:21
юзер стори:
1. написать конфиг
2. запустить программу
3. получить сообщение от программы что не так в конфиге
тут нету поздно или рано, оно одновременно
для пользователя
Pavel
15.03.2016
10:01:59
Serge
15.03.2016
10:02:05
Pavel
15.03.2016
10:02:56
Serge
15.03.2016
10:03:05
прелесть ini в том, что ты можешь юзеру точно сказать почему что-то не так, в терминах бизнес логики
Pavel
15.03.2016
10:03:18
см. юзерстори
Смотрю. Валидация не словит мою ошибку в разделителе.
И она вообще ничего не словит, ибо все значения в ini – строки.
Serge
15.03.2016
10:04:03
Google
Pavel
15.03.2016
10:04:37
А я вообще писать уже написанное кем-то другим мало люблю. _
Serge
15.03.2016
10:04:51
ты валидируешь ini сам, в терминах логики приложения. еще раз. ini - это просто удобные параметры командной строки
Pavel
15.03.2016
10:05:04
Serge
15.03.2016
10:05:08
Pavel
15.03.2016
10:06:28
Логику парсинга списков, приведения типов, whatever уже написали за меня авторы модуля json. Мне осталось проверить лишь бизнес-логику, а корректность описания вот этих вот строчек в ini.
*а не
Sergey
15.03.2016
10:06:47
людей ни то, ни другое не устраивает полностью
еще один вариант https://github.com/hashicorp/hcl (с описанием мотивации)
Pavel
15.03.2016
10:09:16
Конечно, если вам нравится снова и снова парсить все это – ваше право, если вам не запрещают. Но тогда: предусматривайте все возможные косяки в значениях и обучайте всех остальных любителей ini-файлов делать так же, чтобы люди не бились головой.
Serge
15.03.2016
10:09:56
еще раз, не хватает ini - не используй
Pavel
15.03.2016
10:10:03
Мне жалко времени на велосипедостроение.
Serge
15.03.2016
10:10:04
да, списки уже перебор
ноиногда лучше сделать сплит, чем мучить обезьянок json-ом
Pavel
15.03.2016
10:11:02
Так речь-то была о чем? Посмотрите выше, там было что-то про вложенные конфиги и что в ini конфигурить было бы лучше.
Serge
15.03.2016
10:11:15
не, там про yaml :)
Pavel
15.03.2016
10:11:34
Без нарушения общности. )
Serge
15.03.2016
10:11:38
ну и то что json для этого неудобен
просто вот он неудобен
хер с нми с ini
но json - это не формат для конфигов
он для этого не подходит.
Google
Serge
15.03.2016
10:12:06
.
:)
Pavel
15.03.2016
10:12:31
Это таки предубеждение. Если уже речь о том пошла – то плохо все.
Serge
15.03.2016
10:12:42
да, возможно:)
жизнь говно, так то
Pavel
15.03.2016
10:13:51
Yaml выносит мозг из-за очень похожих спецсимволов в разных конструкциях, а если он автосгенерирован, то в нем появляются все его прелести, от которых плакать хочется даже больше, чем от ini. )
Короче, все отстой, давайтн сделаем свой стандарт. :)
Serge
15.03.2016
10:14:59
возвращаемся к моим словам о хранении конфигурации и интерфейсе для пользователя
Pavel
15.03.2016
10:15:42
Ну не скажи. json.dumps(..., indent=2) или ConfigParser.save(...) еще вменяемы.
Чего не скажешь о том, что делает PyYAML.
Serge
15.03.2016
10:16:01
я не пробовал.
но вот знаю, что форматтер в Eclipse меня устраивает
у меня весь ansible проект им отформатирован
я тут программирую на yaml просто;)
Pavel
15.03.2016
10:18:49
Не, интерфейс, конечно, это хорошо. Если сервис уже знает, куда коннектиться, чтобы хранить настройки.
Serge
15.03.2016
10:19:44
Pavel
15.03.2016
10:20:08
Это намек, что интерфейса без конфига может вообще не быть.
Сервис просто не запуститься, так скажем.
*запустится
Serge
15.03.2016
10:20:44
конфиг и есть интерфейс, внезапно