@spbpython

Страница 3 из 785
Serge
15.03.2016
09:25:23
и я согласен, любой формат можно использовать не по назначению и/или превратить его в кошмар;)

Pavel
15.03.2016
09:25:53
Ты привык извращаться? )

Serge
15.03.2016
09:26:03
Разные интерфейсы редактирования человеком. Не то же самое.
так ini для редактирования человеком, в том то и дело

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
так ini для редактирования человеком, в том то и дело
Мне, как человеку, хотелось плакать, конфигурируя что-то в ini. :)

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
Пример с головы: [blabla] admins = vasya А второй админ через запятую? Через пробел? Другой разделитель? А если я не угадаю, то моего админа будут звать "vasya,petya".
можешь и через пробел и через запятую, такой ini но это мелкая проблема формата, которая понятна и этому легко убучается даже девочка "убейти меня я дура", но вот json-у ее научить невозможно

надо смотреть со стороны пользователя, а не человека, который знает что такое bnf

Pavel
15.03.2016
09:43:53
Не, не могу. Потому что разработчик впилил value.split(" ").

Serge
15.03.2016
09:45:25
Не, не могу. Потому что разработчик впилил value.split(" ").
чо то мы разными configparser пользовались, похоже

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
А что оптимально?

При условии, что я как пользователь хочу точно знать, как не ошибиться.

Но можно для начала и без этого условия. )

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
а yaml – надмножество json, и я уже могу сказать, что вы предвзяты к json )
да по фигу кто чье множество. суть в том, что yaml руками редактирвоать проще

Pavel
15.03.2016
10:00:31
Любые ошибки после = в ini съедаются и обнаруживаются очень поздно.

Serge
15.03.2016
10:00:57
Любые ошибки после = в ini съедаются и обнаруживаются очень поздно.
в данном случае, я не понимаю что такое поздно.

Pavel
15.03.2016
10:01:06
Serge
15.03.2016
10:01:21
юзер стори: 1. написать конфиг 2. запустить программу 3. получить сообщение от программы что не так в конфиге

тут нету поздно или рано, оно одновременно

для пользователя

Pavel
15.03.2016
10:01:59
в данном случае, я не понимаю что такое поздно.
Поздно, это когда все развернул и увидел, что оно не работает правильно из-за своего кривого значения.

Pavel
15.03.2016
10:02:56
не понимаю по-русски
Сказано, что yaml редактировать проще. Отвечаю: yaml сложнее по определению.

Serge
15.03.2016
10:03:05
прелесть ini в том, что ты можешь юзеру точно сказать почему что-то не так, в терминах бизнес логики

Pavel
15.03.2016
10:03:18
см. юзерстори
Смотрю. Валидация не словит мою ошибку в разделителе.

И она вообще ничего не словит, ибо все значения в ini – строки.

Serge
15.03.2016
10:04:03
Сказано, что yaml редактировать проще. Отвечаю: yaml сложнее по определению.
не надо передергивать. yaml сложнее в смысле позволяет больше. и как раз благодаря этому его проще творить. он позволяет делать вид удобным для редактирвоания

Google
Pavel
15.03.2016
10:04:37
А я вообще писать уже написанное кем-то другим мало люблю. _

Serge
15.03.2016
10:04:51
ты валидируешь ini сам, в терминах логики приложения. еще раз. ini - это просто удобные параметры командной строки

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
конфиг и есть интерфейс, внезапно

Страница 3 из 785