@dlangru

Страница 288 из 719
Pavel
15.10.2017
15:26:21
Консольный редактор это вы сами написали?

Ievgenii
15.10.2017
15:27:08
Ты описываешь правила для конфигов (сам разработчик), а уже наш агент, имея набор правил даёт админу установить возможные значения

Оверинженеринг, не?
Конфиг в открытом виде лежит

Google
Pavel
15.10.2017
15:27:53
> Ты описываешь правила для конфигов Ну вот как-то конфиг подразумевает в себе ручное редактирование. Иначе это уже не конфиг, а структура данных для программы.

Ievgenii
15.10.2017
15:27:54
Ручное редактирование - потенциальное место для ошибок!

Мы от этого ушли

Pavel
15.10.2017
15:28:36
Конфиг это что-то, что ты лезешь подправить ручками перед запуском программы, чтобы показать ей как правильно запускаться.

Ievgenii
15.10.2017
15:28:58
Так и есть, но мы не даём редачить его руками

Pavel
15.10.2017
15:29:05
Ручное редактирование - потенциальное место для ошибок!
Ну да но писать утилиту для редактирования конфига под каждую программу это много больше затрат.

Ievgenii
15.10.2017
15:29:44
Ты запускаешь или консольную утилиту и говоришь что именно ты хочешь редачить, а он тебе говорит, какие ты туда можешь подставить значения

Или UI, а в нем тоже самое, только в браузере

Pavel
15.10.2017
15:30:05
Чем-то похоже на xml

Там же тоже есть XSD схема, которая определяет формат конфига, а по ней уже можно с автоподстановкой писать реальный xml конфиг

Ievgenii
15.10.2017
15:30:43
Ну да но писать утилиту для редактирования конфига под каждую программу это много больше затрат.
Не под каждую, а один! А под каждую прогу пишутся только набор правил

Andrey
15.10.2017
15:30:56
конфиг андронного коллайдера?

Google
Pavel
15.10.2017
15:31:19
https://habrahabr.ru/post/90696/

Ievgenii
15.10.2017
15:33:10
А чем тогда это вообще отличается от xml? =)
Тем, что в простом конфига, можно задать что угодно и валидаторов просто нет

А в нашем случае, прежде чем поменять и сохранить значение - оно валидируется

И это решение себя оправдало

Ошибок конфига просто нет

Подменить его тоже не выйдет

Работает на ура

Хранит в json, чтобы можно было зайти и посмотреть, если сильно хочется. Но вот редачить не выйдет. Отредачишь - он будет не валидный

Можно реализовать и другой драйвер, тогда будет хранить в чем угодно

Мы храним же всегда в json в файле или в консуле...

Pavel
15.10.2017
15:38:50
При такой энтерпрайзной системе вам вообще нет разницы в чем хранить) хоть в binary json, хоть в своем кастомном формате.

Тогда вообще не совсем корректно говорить что вы храните в json, т.к. это только маленькая деталь имплементации вашего механизма конфигов.

Oleg
15.10.2017
15:41:49
Работает на ура
Правильно ли я понимаю, что это просто конфиг? Это не настройка программы, которая выполняется пользователем?

Тоесть это пользуют именно разработчики

И есть сомнение в их внимательности или квалификации

Ievgenii
15.10.2017
15:43:12
Тогда вообще не совсем корректно говорить что вы храните в json, т.к. это только маленькая деталь имплементации вашего механизма конфигов.
Тут речь шла о формате! А не о системе его редактирования и тому подобное. Я привел наш пример, где в самом формате нам нужны исключительно данные, без комментариев и валидации разметки

Доступ к БД

Логер

Google
Ievgenii
15.10.2017
15:44:20
Активность модулей

Pavel
15.10.2017
15:44:27
У простых смертных утилит все эти проблемы с конфигами стоят. И с читаемостью и с корректностью, и с ручным редактированием, и с комментированием.

И с понятностью и с переносимостью.

Andrey
15.10.2017
15:45:01
подобные конфиги - база, логгер и тд, есть у каждого первого, и жалоб на ошибки в конфигах как то не переполняют интернет)

Oleg
15.10.2017
15:45:01
Так что дело именно в формате данных

Ievgenii
15.10.2017
15:47:41
Исключительный случай, как я понял многим нужны комментарии и приятный синтаксис
Комментарии и описание есть в самом "редакторе", а в файле их нет и, имхо, не должно быть

Pavel
15.10.2017
15:49:03
А где тогда хранятся комментарии?

В редакторе в базе?

Oleg
15.10.2017
15:49:19
Комментарии и описание есть в самом "редакторе", а в файле их нет и, имхо, не должно быть
У вас используется целая система над файлом конфига, для многих случаев это излишне

А где тогда хранятся комментарии?
В конфигурации конфигурации

=)

Pavel
15.10.2017
15:50:02
А визуальный редактор для редактирования конфигов редактора для редактипрования конфигов вы писали?

Oleg
15.10.2017
16:01:16
И, кстати, имхо проверку конфига должна выполнять программа, иначе получается 2 места, которые содержат информацию о формате и валидации в той или иной мере (ограничения и правила конфига и сам код программы)

Google
Pavel
15.10.2017
16:02:32
Если проект большой и сложный, на составление конфига может быть хоть отдельный сервис и команда разработки быть выделенным =)

Ievgenii
15.10.2017
16:07:19
Она проверяет валидность конфига, по его хэшу

Т.к. система отдачи конфига в системе вообще не знает, что именно а нем хранится

И не должна, т.к. система постоянно развивается и конфиг расширяется

Pavel
15.10.2017
16:09:05
Вот всякие nginx, postgres, php, postfix, redis, и куча других утилит используют свои велосипеды, кто как справляется.

Ievgenii
15.10.2017
16:09:09
А сам модуль, отвечающий за конфиг, у нас уже давно (года 2) не меняется.

Pavel
15.10.2017
16:10:05
Близко все )

Только пхп в ini файлах старается хранить

Admin
ERROR: S client not available

Pavel
15.10.2017
16:10:31
Да и то fpm имеет свой формат какой-то, поверх стандартных конфигов

Dmitry
15.10.2017
16:11:40
Так, а как правильнее API спроектировать. Мне надо чтобы по запросу на урл были следующие методы: - добавить, удалить, проверить, получить список речь про получение списка email'ов {"add": "vasia@mail.ru"} ? И так для всех остальных?

или это криво?

Pavel
15.10.2017
16:13:25
Это ты описал REST по сути

Dmitry
15.10.2017
16:13:49
Только методов болше надо...

Pavel
15.10.2017
16:14:06
Так добавь сколько тебе нужно

GET /entity/42/check

Ievgenii
15.10.2017
16:14:25
Мы от места ушли... Надоел

Dmitry
15.10.2017
16:15:15
Так, а если просто как я написал сделать в виде json и POST запроса?

Google
Ievgenii
15.10.2017
16:15:39
Можно для каждой сущности ввести отдельный URI, типа /device/, /user/

А можно все на входном пакете разрулить

Pavel
15.10.2017
16:16:11
Так, а если просто как я написал сделать в виде json и POST запроса?
POST запросы для получения данных не очень хорошо делать. Лучше GET

А так, можно с телом json, не принципиально

Ievgenii
15.10.2017
16:16:25
Так, а если просто как я написал сделать в виде json и POST запроса?
Так тоже можно, но в этом случаи входной пакет будет чуть больше инфы нести

Pavel
15.10.2017
16:16:57
А проверку сущности можно делать через какой-нибудь HEAD

Pavel
15.10.2017
16:17:20
Субъективное мнение
Почему ты все время все оспариваешь и выискиваешь какие-то крайние случаи? =)

Ievgenii
15.10.2017
16:17:45
Зачем смешивать протокол http и свой прикладной? Вы ещё предложите ошибки http кодами отдавайть

Pavel
15.10.2017
16:19:00
Он уходит потому что есть потребность в этом. Которой у Дмитрия нету.

И Дмитрий не размером с фейсбук, и потребности и масштабы у него другие.

Субъективное мнение
По поводу этого обосную - POST запросы не кешируются на промежуточных серверах, а GET могут кешироваться, что экономит трафик. GET идемпотентный, POST нет.

Pavel
15.10.2017
16:23:26
https://stackoverflow.com/questions/39386001/can-i-use-post-method-to-get-data-and-get-method-to-post-data в RFC все описано, где тут субъективное мнение?

Ievgenii
15.10.2017
16:23:50
Т.к. кешировать ответы API сторонними серверами - имхо мувитон

Почему ты все время все оспариваешь и выискиваешь какие-то крайние случаи? =)
Потому, что имею большой опыт в построении публичных апи.

И сразу вижу те места, через которые лично проходил

Вот и все

Pavel
15.10.2017
16:25:51
Потому, что имею большой опыт в построении публичных апи.
И что этот опыт говорит что в RFC описан бред?

Oleg
15.10.2017
16:26:38
Сама программа не проверяет валидность отдельных его полей
Прямым образом программа содержит информацию о структуре конфига, а косвенным имеет возможность проверить валидность (пример: имя файла sqlite базы - наличие такого файла)

Ievgenii
15.10.2017
16:26:39
То же рест накрывается тазом, как только приложение выростает и переходишь на постоянные соединения, ну или добавляется второй агент, который работает через xmpp, или вебсокеты

Страница 288 из 719