|
|
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin, можно порассуждать на тему - зачем вообще нужны конфиги. Если у нас есть язык который будет над-множеством грамматики над конфигами - тогда теряется различие между кодом и данными. С этой точки зрения кусок кода на lisp (только для примера) Код: javascript 1. 2. 3. 4. можно толковать как код и как DSL. Разница только в том через какой инструмент мы на него посмотрим. ... Что мы пытаемся кому-то доказать создавая умные конфигурации? Нет-ли в этом ловушки или парадокса? Конфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 11:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominКонфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. Опишите процесс редактирования такого конфига с точки зрения онбордера. Что он делает шаг за шагом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 13:20 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
mayton, вы совершенно правильно выше написали. Есть опасность, что эта тема вообще не нужна в грамотном процессе производства ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 14:56 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
добавлю. ...или в эксплуатации ПО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 14:58 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Partisan MAlexey TominЯ могу ошибиться в имени и не заметить этого- IDEA часто не видит использования проперти... А что вместо? А например kotlin-script. Пользоваться IDEA вообще нецелосообразно (это коммерческое IDE хуже бесплатных), поэтому отдельные его недостатки несущественны. Но совсем неправильно предлагать идеи для их исправления. Это на руку новым русским - "хозяевам" фирмы JetBrains (идиотское название, ну не буду сейчас насмехаться). Эти личности плохо себя ведут: скрывают российское происхождение фирмы, ничего не сделали для российских пользователей: ни скидки не дали для своих, ни интерфейс не русифицировали. Как-то выпустили книгу по IDEA 4.5... как раз перед выходом 5. Потом я видел жалобу одного из авторов книги: её экземпляр авторам не подарили, а предложили купить. Эти новые русские просто обезумели от жадности. Помогать им - себя не уважать. Не знакомился с Kotlin и не буду: отталкивает непристойное происхождение от этой фирмы. Вы можете взять idea comminity edition. Она бесплатна и вы не поверите ... У неё достаточно возможностей Для ентерппрайз. По крайней мере на одном из проектов картографии для известного авто концерна Мы её использовали. Пс. Сорян за опечатки. Пишу с моб. Девайса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 16:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey TominКонфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. Опишите процесс редактирования такого конфига с точки зрения онбордера. Что он делает шаг за шагом? 1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 18:15 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. Еще больше непонятно. В отдельной ветке? Речь идет о репозитарии исходного кода? К исходному коду должны иметь доступ только компетентные люди. Или-же компетентные должны делать code-review в обязательном порядке. И еще непонятно что такое consul. Вобщем гоняйте модульные тесты по конфигам и проверяйте типы. Если у вас интеллектуальный конфиг который не парсится а исполняется - то исполняйте его в тест-енвайронмент mandatory каждый раз на сборку (коммит или деплой). A фокус с 1.3е10 в современной IDE не проходит. Подсветка хайлайтит там где буква не латинская. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 01:13 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. Еще больше непонятно. В отдельной ветке? Речь идет о репозитарии исходного кода? Да. maytonК исходному коду должны иметь доступ только компетентные люди. Или-же компетентные должны делать code-review в обязательном порядке. Конечно, ревью делают разработчики. maytonИ еще непонятно что такое consul. Вот оно. maytonВобщем гоняйте модульные тесты по конфигам и проверяйте типы. Если у вас интеллектуальный конфиг который не парсится а исполняется - то исполняйте его в тест-енвайронмент mandatory каждый раз на сборку (коммит или деплой). A фокус с 1.3е10 в современной IDE не проходит. Подсветка хайлайтит там где буква не латинская. Лучше, если ошибку нельзя сделать, а не ловить её тестами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 14:14 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin Вот оно. Вместо того чтобы просто нормально ответить - вы меня тыкаете носом в google? Зачем вы это делаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 16:25 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin Вот оно. Вместо того чтобы просто нормально ответить - вы меня тыкаете носом в google? Зачем вы это делаете? Ну реально же первы две ссылки- на сайт и описание на хабре . В общем- это отличный способ настраивать сервер "по быстрому" без правки файлов (что криминал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 20:11 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Дарю идею :) конфигурация описывается как интерфейс Код: java 1. 2. 3. 4. 5. 6. А потом биндится системой из источника (файл/база/сеть) через прокси объект, реализующий этот интерфейс Тут и статическая типизация и прочие прелести. P.S. А реализацию можно подсмотреть в компоненте ConfigAdmin подробнее есть тут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 23:17 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Spring + @ConfigProperties. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 00:27 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Читаю и ошизеваю. Выдумать несуществующую проблему и доблестно ее решать. У кого нибудь в реальности были проблемы с конфигами pn site, пусть даже с текстовыми? Когда синтаксис мог бы существенно помочь в решении проблемы? Конфиги должны быть простыми, тупыми, кондовыми и надежными. На реальных серверах, мне вообще пришлось vi освоить, что бы конфиги править. Где там взять Idea, Eclipse, java или разбираться с какими-то экзотическими языками. Работал с yaml, IMHO идея задавать иерархию как отступы пробелов, в голову разработчиков могла придти только в середине 2000-х годов. До этого времени, такие идеи просто посчитали бы признаком белой горячки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:03 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Правда есть первичный вопрос, что называть "конфигами". Прикладное решение на 1C тоже вроде называется "конфигурация", но язык 1C я бы к subj относить бы не стал ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:09 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Вот вполне себе годный Spring-конфиг который читает системное свойство user.region и использует его дальше. Код: xml 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:35 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevидея задавать иерархию как отступы пробеловPython-style конфиги (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 04:42 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Про сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Leonid KudryavtsevНа реальных серверах, мне вообще пришлось vi освоить, что бы конфиги править. Где там взять Idea, Eclipse, java или разбираться с какими-то экзотическими языками. При миграции в mesos приходётся забыть и о vi. Как вообщее о правке файлов. В любой момент конкретная нода может испариться бесследно, или возникнуть 10 новых (нагрузка выросла). Так что все конфиги- в распределённой БД, типа consul. Leonid KudryavtsevРаботал с yaml, IMHO идея задавать иерархию как отступы пробелов, в голову разработчиков могла придти только в середине 2000-х годов. До этого времени, такие идеи просто посчитали бы признаком белой горячки. Да пофиг. Просто yaml используется в gitlab-ci, который всё одно используется. PS: "размышления"- это не "завтра делать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:08 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevПравда есть первичный вопрос, что называть "конфигами". перечень констант характеризующий заказчика_А от заказчикк_Б Leonid KudryavtsevПрикладное решение на 1C тоже вроде называется "конфигурация" мало ли что они у себя называют. И конфигурация не равна конфигу. Буквы разные. Они как бы вообще не программисты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:39 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominПро сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:45 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominПро сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Код: java 1. 2. Это слишком простой случай. Может оказаться, что в имени кампнии что-то. Мало ли что они там придумают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 10:33 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominМало ли что они там придумают. если придумают, то это БЛ. Вы выносите аддон или ещё какой кусок кода за пределы ядра ИС. Это сложно назвать конфигами. Это расширение ИС. У вас Модель должна предусматривать простые входные параметры конфига в виде констант. Не надо усложнять простые решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 10:43 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Вам нужно реализовать собственный сервис конфигураций ! Плюсы: - Сервис - не скрипт, который может править кто угодно - Учетные записи (для каждого проекта/модуля/... своя учетка) - Валидация (обычная проверка входных данных и по шаблону - URL'ы и пр. экзотика) - Возможность создания различных профилей конфигов (напр., клонирование) - итэдэ Минусы: - придется написать плагины для Gradle и Maven, как минимум для Maven ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 11:37 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominPetro123пропущено... Код: java 1. 2. Это слишком простой случай. Может оказаться, что в имени кампнии что-то. Мало ли что они там придумают. Думаю, для таких задач первым делом надо рассмотреть Business Rules Management, тот же Drools. И со статической валидацией там вроде всё в порядке, и поддержка IDE есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 14:15 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Давайте разделим конфиги по степени конфиговасти ))) 1. Системная информация которая нужна для запуска и минимальной работы приложения - обычно настраивается инсталятором (если есть) или простейшими текстовыми конфигами/параметрами окружениями/параметрами JVM 2. Базовая бизнес информация уровня название заказчика, какие нибудь другие базовые характеристики - вполне может настраиваться или через инсталятор или через GUI системы 3. Метаописание системы под конкретного заказчика - знаю системы KAMIS, Oracle Utilities Customer Care & Billing где метоописаниями задаются экранные формы, порядок прохождения документов и так далее. Т.е. система это скорее FrameWork для рисования GUI + заточенность под конректный класс учетных задач. 4. Если нужно кодировать логику (например правила валидации полей, какие-то простейшие IF...THEN...ELSE), то добавляют какой-то язык. В KAMIS'е в ряде мест настройки используются свой простейшими формулами (больше заточен под бизнес), CC&B использовать Java, OeBS PL/SQL, Java. ну и то, что конфигами в здравом уме назвать сложно, но в принципе, та же конфигурация: 5. Отчеты ! А что? Это тоже "конфиги" и при этом обычно отличающиеся для разных заказчиков 6. Справочника. Аналогичные "конфиги" но которые часто правятся Если взять крупные ERP системы, например OeBS, то так же огромное кол-во галочек настройки / конфигурации бизнес-логики + возможность подключать свои модули (формы, отчеты). Ну или 1C. Возникла такая мысль- все эти properties (даже если они yaml) - это костыль. С этим сложно не согласиться. Т.к. в современных программах принято делать инсталяторы и GUI. Все текстовые конфиги - это костыль. Необходимый при отсутствии инсталятора и GUI администрирования. И необязательно в виде файлов. Частую ситуацию, когда текстовые конфиги правятся быстрее/удобнее, чем то же через GUI администрирования, рассматривать не будем. Это и так всем понятно. Т.ч. удобнее, что бы было и то и то. Или если конфиги хранятся в БД, удобный способ их копи-пастить И деплоить разным клиентам. Системы которые лично я видел: KAMIS 2000 - метаописания хранятся в БД. Аналогично свой генератор отчетов работающий по метаописанию (сбор данных) + RTF шаблон загруженный в БД. Для людей занимающихся настройкой, сделаны простейшие формы, которые начинались от просто "табличке" созданной wizardom, но на протяжении жизни усложнялись. Весь метаязык, простейшие формулы (когда нужны IF'и) и свой парсер + вроде выполнения кусочков формул передачей его в SELECT'ы. Простейшие - т.е. десятки символов максимум. Был компонент - генерация HTML-каталогов, где был свой язык. Внедрение данных и кода в HTML + интерпретатор + IF, FOR, переменные и так далее. Типа JSP (его еще в то время не было). Предполагалось, что его смогут использовать заказчики, но для них и это оказалось очень сложно. Хорошо если цвет фона, буковок в HTML найдут и смогут кастомизировать ))). Для инсталяции - сделан инсталятор (вот там уже простейший текстовый конфиг ))), банальное уникальное имя/код/название_схемы_в_ БД + несколько галочек, какие компоненты для него требуются + положенный dump Oracle). Вся необходимая настроечная информация - фактически содержится в ИКОНКЕ запуска. Путь к установленному Forms'у, путь к директорию с программой, строка соединения с БД. Все остальное (включая актуальный код приложения для обновления) - в БД. Для формирования обновлений (и ведения БД, своего рода репозиторий версий) - в какой-то момент сделана форма, генератор Update'ов. Сами update - просто bat'ник + sql скрипты (код и файлы необходимые для клиента тоже хранится в БД и обновляются через БД) Экранные формы (FMB,FMX) строятся системой в момент первого запуска клиентского места (или если клиентское место увидело, что нужно обновится), аналогично обновляются остальные клиентские файлы (PLL, DLL, EXE и т.д.) и так далее. по ситуации на начало 2000-х годов Oracle Utilities Customer Care and Billing Более переусложненной системы я не видел. Метаописания в БД, которые артифакт-генератором преобразуются в анотации и код Java ))), для компиляции которых требуется Eclipse со специальными плагинами, компилируется в class'ы и XML пакуется в JAR и деплоится; аннотации преобразуются в XML, которые подгружаются при загрузке приложения и управляют маппингом Java объекты - Json - JScript Это еще не говоря о Copy Book'ах. Я наивно думал, что код Copy Book'ов сделан автоматически генератором кода. Нифига! Там ошибки! Его писали вручную. Нафига ? Почему было не сделать генератор кода Copy Book'ов по элементарному метаописанию. Манильцев много - напишут. В общем, п....ц. Зато Hibernate используют )))) JavaScript формирует JSON, который по настроечным XML преврашается в XML с данными, который приход в CC&B объект-сервис, который отображает это на Hibernate объект, который (в некоторых случаях) через Copy Book'и передается в Cobol, который выполняет запись/чтение в БД. При этом тексты запросов хранятся и в БД и в виде Cobol приложения. Я предлагал отправить меня в командировку в Лос-Анжелес с оплатой ночных клубов за счет фирмы, найти там их архитектора (компания Oracle имя архитектора и его секс предпочтения в тайне не хранила) и популярно объяснить ему, что половина всей этой хренотени в системе даром не нужна. Но начальство оплатить поездку отказалось ))). В общем, если бы не SPL WG (сейчас Oracle), безработность в Маниле была бы повыше ))) Oracle e-Business Suite - конфиги и справочники также в БД. Возможность документированно добавлять свои модули и отчеты. Порядок прохождения документов и утверждений задается настройкой в БД + Oracle Workflow. То же замечательный пример, когда попытка создать специализированное средство, можно признать неудачным. Oracle Workflow - попытка рисовать процессы.... Ну я не видел ни одного разработчика, который бы это освоил. При возможности решить задачу через Pl/SQL и через Workflow, всегда выбирали PL/SQL. Oracle Scripting - сам не сталкивался,. По описаниям людей, тихий ужас. Продукт наверное сам по себе и ничего, но осмысленности в нем мало. Т.к. программисту проще задачу решить на PL/SQL, а консультант/аналитик/пользователь все равно не освоит. 1C - я так понимаю, в БД + текст приложения конфигурации Petro123перечень констант характеризующий заказчика_А от заказчикк_Б Констант? Тут еще не прошлой страницы (в первом же сообщении) до кода и лямбд дошли. AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:04 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevТут еще не прошлой страницы (в первом же сообщении) до кода и лямбд дошли. я и отвечал что не понял что это такое и зачем)). Есть много любителей сделать очень гибкую систему, чтобы ВСЁ конфигурировалось. Получается монстр. Т.к. Модель это _упрощённое_ описание реального мира предметки. Если необходимы формулы в Модели значит надо делать табличку с полем Формула. ... Я подозреваю откуда топик вырос). Из микросервисов. А теперь не знают как связать эти микросервисы. Модели то нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39427802&tid=2123029]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 430ms |

| 0 / 0 |
