powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте DSLS для конфигов
25 сообщений из 35, страница 1 из 2
Посоветуйте DSLS для конфигов
    #39288324
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Есть коробочный продукт, который работает с разными серверами от разных вендоров, но решающих примерно одну задачу. Реализация в коде довольно хаотичная и есть задача вынести всё что относится к конкретному вендору в файлы конфигурации.
Файлы конфигурации будут писаться, скорее всего, вручную.

Изначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.

Подумал на счет JSON, но уперся в то что он не поддерживает комментариев. Да, и вездесущие кавычки раздражают.

Groovy, вроде бы, не плохой вариант. Но надо на нем же писать обработку DSLS, да ещё и рантайм +5-10Мб к продукту. С другой стороны скрипты могут пригодиться. Для некоторых вендоров реализован Java код. Можно было бы унести его в конфиг.

JavaScript? Хорош тем что уже встроен в JRE. Но опыта нет чтобы предвидеть подводные камни.
Может YAML?

Посоветуйте что выбрать. Спасибо.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288329
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

А простые файлы properties не подойдут?
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288331
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulА простые файлы properties не подойдут?
Подойдут при должном усердии, но ничем не лучше XML будет.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288375
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Предлагаю смесь: в xml внедряем json.
Я так делаю в springe, пример:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<bean class="view.report.excel.ReportView">
	<property name="heights">
	<!-- [длина строки, высота] Д.Б. отсортировано по возрастанию -->
		<value>{"Objects":[[28,32],[40,43],[50,54],[60,65]]}</value>
	</property>
	<property name="style">
		<value>{"Objects":{"style":"s155","isNULL":0,"cells":[1,5,6,7,8]}}</value>
	</property>
	<property name="source">
		<bean p:nameReport="ф.INV-1 отчет.xml" class="view.report.ReportViewFile">
			<property name="fileName" value="/WEB-INF/project/INV-1_Template.xml"/>
		</bean>
	</property>
</bean>
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288386
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa,

Ну, а польза тут от XML какая? Комментарии писать?
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288399
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я за XML. За YAML только как исследовательскую работу в рамках задачи).
BlazkowiczИзначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.
Возможно его делали не на атрибутах, а на нодах. Т.е. если больше использовать атрибуты, то вполне читабельно.
Код: xml
1.
2.
3.
4.
5.
<bindings>
    <binding ircEvent="PRIVMSG" method="newUri" regex="^http://.*" />
    <binding ircEvent="PRIVMSG" method="deleteUri" regex="^delete.*" />
    <binding ircEvent="PRIVMSG" method="randomUri" regex="^random.*" />
</bindings>


https://ru.wikipedia.org/wiki/YAML
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288412
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно не понимаю, чем JSON лучше XML'а.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, Leonid Kudryavtsev, спасибо. Дам XML второй шанс с более интенсивным использованием атрибутов.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288479
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИзначально предлагался XML. Идеальное решение во всём кроме того что он абсолютно не предназначен для чтения и писания вручную.

Это да

но если писать не в блокноте а в мальмальском редакторе то вполне ничего. в том же notepad++ есть к нему плагины.
все что поддерживает автоформат как мимумум проверит базовый синтаксис.

Я обычно сразу прикручиваю схему к XML и тогда Idea сразу подсвечивает ошибки.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288500
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, посмотри на HOCON .
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288509
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать http://json5.org/

Там вроде есть каменты.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288519
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подумайте все-таки о том, чтобы конфигурировать кодом, на основе билдеров. Принцип разбиения на файлы идентичен обычному конфигу - вместо файлов конфигурации пишутся классы, выдающие объекты, которые выдавал бы парсер конфига.

Из плюсов - самодокументируемость, гибкость, поддержка автокомплита в IDE, валидация на этапе компиляции.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288583
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfПодумайте все-таки о том, чтобы конфигурировать кодом, на основе билдеров. Принцип разбиения на файлы идентичен обычному конфигу - вместо файлов конфигурации пишутся классы, выдающие объекты, которые выдавал бы парсер конфига.

Из плюсов - самодокументируемость, гибкость, поддержка автокомплита в IDE, валидация на этапе компиляции.

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

xml самое то, можно в принципе описать структуру на Java и затем ее через xstream сериализовать в xml и по нему xsd шаблон прикрутить.


как вариант можно разбить xml на две части первую дефолтовую с полным описанием конфигов и вторую которая переопределяет дефолтовую. тогда можно просто копирование и правкой дефолтовой ограничиться.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288593
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

изменение "тяжелого" конфига без редеплоя приложения встречается очень редко.

В самых продвинутых компаниях либо полностью автоматизируют деплоймент, либо релизят приложение и его конфиг как два независимых артефакта с независимым деплойментом.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288599
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGroovy, вроде бы, не плохой вариант. Но надо на нем же писать обработку DSLS, да ещё и рантайм +5-10Мб к продукту. С другой стороны скрипты могут пригодиться. Для некоторых вендоров реализован Java код. Можно было бы унести его в конфиг.

Мы практически выбрали это, но у нас не коробочный продукт, а SaaS - нам проще. Тем более gradle постепенно завоёвывает мир.

Но на мой взгляд лучше писать всё на scala/kotlin и использовать тамошний DSL.

Правда у нас попытка использовать kotlin сломалась о плохую интеграцию с jacoco (он не хочет видеть unit-test'ы на kotlin), а времени разбираться нет.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288632
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,


Как-то выносил часть реализации во внешние скрипты, чтобы не писать сложный конфиг. В коде тупо интерфейсы и дефолтная реализация + при старте подхватывает файлы с BeanShell с альтернативной реализацией. Однако в данном случае нужет язык с хорошей интероперабельностью с Java, достаточной для реализации интерфейсов. Позже видел такое же решение в Bifit Ibank2.
Однако у такого подхода есть обратная медаль, когда часть бизнес-логики бесконтрольно перетекает в скрипты и поддерживать/отлаживать все это вместе становится сложновато.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288706
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Мы используем json. Только он редактируется программой а не вручную. Сущностей настолько много, что комментарии не помогли бы разобраться в структуре данных.

С уважением, Валентин
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39288714
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291788
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
+ И чем непонятнее, тем лучше - никто не полезет руками ломать править.
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291864
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,
согласен. Только админы думают наоборот. Работа у них такая - конфиги текстовые поюдавай).
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291869
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickPetro123Valentin Kolesnikov,
Если над файлом программа, тогда пофиг формат файла. Хоть бинарник.
+ И чем непонятнее, тем лучше - никто не полезет руками ломать править.

BlazkowiczФайлы конфигурации будут писаться, скорее всего, вручную.

цель сделать так чтобы самому себе было труднее сконфигурить систему?

если сделать формат непонятным то провидение обеспечит верную конфигурацию случайным юзером через UI ?
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291912
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ini files
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291926
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breathini files
нет вложенных свойств как в XML
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291937
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть
...
Рейтинг: 0 / 0
Посоветуйте DSLS для конфигов
    #39291942
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breathесть
делай
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Посоветуйте DSLS для конфигов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]