Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: Семантика Yaml документа.  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 3452
Valentin Kolesnikov
hVostt
пропущено...


Что XML, что JSON, что YAML -- трекаются в CVS абсолютно одинаково эффективно.
У нас есть конфиги во всех этих трёх форматах.
Деплой YAML скрипты, JSON и XML конфиги приложений.

Всё очень хорошо трекается везде. Ни у кого никаких преимуществ нет.
Дифф изменений показывает строчки и изменения в строчках. Всё хорошо.


Ого, у вас ещё CVS.

CVS — централизованная система управления версиями, популярная в 1990-е — начале 2000-х годов. Хранит историю изменений определённого набора файлов, как правило, исходного кода программного обеспечения, и облегчает совместную работу группы людей над одним проектом. Распространяется на условиях лицензии GNU GPL.



Нет, у них не Concurrent Versions System.

Он пишет про абстрактную систему контроля/управлениями версиями (от англ. Control Version System, или Version Control System, или Revision Control System).
3 май 20, 15:00    [22126886]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
hVostt

Ну я уже приводил один главный аргумент. Что разработчику, что не-разработчику, даже обезьяне -- нужен самый простой инструмент, который будет помогать, а не мешать.

В настоящий момент у нас трекается Excel. А это ... как вы понимаете просто
изменения blob-ов которые трекать неудобно.

hVostt

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

В YAML лишний пробел меняет семантику, что является наихудшим сценарием.

Здесь - согласен. Я именно поэтому и поднял тему чтобы обсудить эти маргинальные
случае когда лишний пробел или запятая могут сломать билд.

Но у нас эта фаза на 99% покрыта тестами. Билд не соберется пока количественные
метрики не выйдут на ожидаемые. Например табличка содержит 500 полей. Эти
поля как-раз конфигурируются через Excel.

hVostt

XML вообще как язык разметки со схемой полностью валидирует всё, что ты вводишь при редактировании, плюс интеллисенс и подсказки.


Я уже более десятка лет пытаюсь уйти от XML а вы тащите меня обратно

Ну как вы думаете? Какова будет моя реакция?
3 май 20, 16:05    [22126903]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
dakeiras
Member

Откуда:
Сообщений: 444
говоря о YAML, есть одна важная деталь, которую никто не принимает во внимание. Безальтернативность реализации, по крайней мере на Java.

А именно, для Java я знаю только одну реализацию - Snake Yaml.

Её поддерживает один единственный человек (который её и создал изначально).

Так вот это риск. Формат сложный, реализация сложная.

Вот есть баг (при том важный), я вежливо зарепортил его человеку, но встретил довольно странную реакцию. При том причины не ясны до конца, и не хотелось бы их обдумывать даже.

https://bitbucket.org/asomov/snakeyaml/issues/440

В результате одна из важнейших фич YAML (блочный формат) не работает в Jackson и соотв. в Spring, т.к. они используют Snake Yaml, и альтернатив похоже нет.

PS: то что автор не переводит проект на гитхаб тоже concern.
3 май 20, 16:26    [22126910]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Почему безальтернативно?

Я много артефактов нашел https://mvnrepository.com/search?q=yaml

Я не все из них проверял. Но думаю что альтернативы есть.
3 май 20, 16:55    [22126916]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
По дефекту. Мне понадобилось блин 15 минут чтоб понять о чем это вообще?

Кто-ж так оформляет кейсы? Надо как-то чтоб нагляднее было. Хоть строка под строкой.
        String correct   = "this is some text with \"quotes\" abcd";
        String inCorrect = "this is some text with \"quotes\" abcd ";


По поводу статуса дефекта WontFix. Я хочу возмутиться вместе с вами но
мне надо сначала глубже вникнуть в текст стандарта.

Стандартны... такие стандарты. С разночтениями. Мдя...
3 май 20, 17:20    [22126929]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
dakeiras
Member

Откуда:
Сообщений: 444
mayton
...


А в общем мой опыт я Yaml такой:
- Удобен для человекочитаемости для документов среднего размера
- Для больших документов уже нужны подсветки тагов ({}), этого не хватает
- Удобен для человекописания маленьких документов
- Занимает меньше памяти, чем JSON
- Для меня самое важное - блочный формат, который позволяет не экранировать спец. символы:
Например можно выводить поле с тектом в виде JSON без экранирования.
3 май 20, 18:21    [22126941]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
По поводу XML.

Из опыта использования Apache Http Server. У меня нет слов выразить свою тоску и печаль по
поводу вот таких вот конфигов.

<Directory "/var/web/dir1">
    <Files "private.html">
        Require all denied
    </Files>
</Directory>


Этот псевдо-язык очевидно что похож на XML. Неясно чего хотели создатели. Возможно
они базировали конфигурации на HTML/SGML диалектах - но результат - ужасен во всех
своих проявлениях. И наиболее ужасно то что этот результат сохранился на много лет
и актуален и сейчас.

Не лучший вариант конфигов использует nginx. При большом уважении к Сысоеву.
Сам софт - отличный в своём роде но Json - подобный диалект в конфигах также
ломает мозг и порождает длинный вопрос - "Почему" ?
4 май 20, 11:13    [22127135]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
dakeiras
Member

Откуда:
Сообщений: 444
mayton
По поводу XML.

Из опыта использования Apache Http Server. У меня нет слов выразить свою тоску и печаль по
поводу вот таких вот конфигов.

<Directory "/var/web/dir1">
    <Files "private.html">
        Require all denied
    </Files>
</Directory>


Этот псевдо-язык очевидно что похож на XML. Неясно чего хотели создатели. Возможно
они базировали конфигурации на HTML/SGML диалектах - но результат - ужасен во всех
своих проявлениях. И наиболее ужасно то что этот результат сохранился на много лет
и актуален и сейчас.

Не лучший вариант конфигов использует nginx. При большом уважении к Сысоеву.
Сам софт - отличный в своём роде но Json - подобный диалект в конфигах также
ломает мозг и порождает длинный вопрос - "Почему" ?


Это декларативное XML/JSON программирование. В 2000х часто встречалось.

Особенно наши этим грешили. Типа пользователю нельзя давать никакие скрипты делать, пусть пишет XML конфиг))) Апасно!!))

Это то с чем боролась и победила Бобина в логировании.
4 май 20, 16:02    [22127267]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
И ты сюда свою Бобину затащил. Нет уж. Не будем обсуждать.

Брысь!
4 май 20, 18:05    [22127305]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Valentin Kolesnikov

Есть преобразователь для четырёх типов файлов 22122936.

Мы в основном храним данные в xml и property файлах.
Json для обмена данными между сервером и js кодом.

Хорошего вам дня!

Спасибо. Забрал себе ваш бинарник. Хорошая утилита.

XML to JSON, YAML or CSV/JSON to XML, YAML or CSV converter, version 2020-05-04
 -?,--help                                  This help text.
 -c,--config <arg>                          The file with config (it includes src, dest, mask, mode
                                            and format parameters).
 -d,--dest <arg>                            The destination file/directory for converted file(s).
 -de,--delimiter <arg>                      The delimiter for csv files(comma|semicolon|tab|space).
 -df,--dest-format <arg>                    The destination file format(unix|windows|mac).
 -f,--format <arg>                          The format type (2|3|4|tabs|compact).
 -m,--mask <arg>                            The file mask (json|xml|yml|csv|all) for source file(s).
 -mo,--mode <arg>                           The processing file mode (convert|format|check).
 -rm,--remove-minuses-and-convert-numbers   Convert xml to json without minuses.
 -rs,--replace-self-closing-with-null       Convert xml to json self-closing.
 -s,--src <arg>                             The source file/directory which should be converted into
                                            xml/json.
 -t,--type <arg>                            The output file(s) type (json|xml|yaml|csv).
 -w,--watch                                 Watch for directory changes.
 -wa,--without-attributes                   Convert xml to json without attributes.
 -wn,--without-namespaces                   Convert xml to json without namespaces.
For docs, license, tests, and downloads, see: http://javadev.github.io/underscore-java


Конечно мне не хватает управления стилями Yaml.

Под кат заглянут только параноики.
+

Для параноиков.
grant {
      permission java.io.FilePermission "*", "read,write,delete";
      permission java.util.PropertyPermission "user.dir", "read";
      permission java.util.PropertyPermission "java.runtime.name", "read";
};

4 май 20, 21:10    [22127383]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
Valentin Kolesnikov
Ого, у вас ещё CVS.


Ну можно было тупо сказать Git, просто не хотелось обижать SVN-щиков
4 май 20, 22:32    [22127416]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton
hVostt

Ну я уже приводил один главный аргумент. Что разработчику, что не-разработчику, даже обезьяне -- нужен самый простой инструмент, который будет помогать, а не мешать.

В настоящий момент у нас трекается Excel. А это ... как вы понимаете просто
изменения blob-ов которые трекать неудобно.


Вообще и его можно трекать, если хранить его в распакованном виде )))


mayton
Здесь - согласен. Я именно поэтому и поднял тему чтобы обсудить эти маргинальные
случае когда лишний пробел или запятая могут сломать билд.


Так в случае JSON у вас редактор скажет об ошибке. Но не в случае YAML.


mayton
Но у нас эта фаза на 99% покрыта тестами. Билд не соберется пока количественные
метрики не выйдут на ожидаемые. Например табличка содержит 500 полей. Эти
поля как-раз конфигурируются через Excel.


Одно не заменяет другое. Ваши тесты упадут в момент билда, когда агент будет свободен, когда (не)разраб закоммитит и запушит свои изменения. Короче, в тот момент, когда он увидит ошибку из-за лишнего пробела, он будет очень зол.

И материть тех, кто выбрал YAML ))


mayton
Я уже более десятка лет пытаюсь уйти от XML а вы тащите меня обратно

Ну как вы думаете? Какова будет моя реакция?


Да я не тащу. Я выдаю только контр-аргументы.
Против единственного вашего "смотрите как симпатишно!"

Это обманчивое впечатление.
4 май 20, 22:36    [22127417]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton,

Ещё пример списка на YAML:

SomeList:
  - this is first element
  - i'm secod
  - three: simle


Красиво выглядит? нее.... это вам всё сломает ))
4 май 20, 22:38    [22127418]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Кавычки...
4 май 20, 23:11    [22127438]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton
Кавычки...


В том-то и дело, друг.
Дьявол кроется в мелочах.
YAML формат отнюдь не простой.
Любому не-спецу проще выучить JSON с простейшими как тапок правилами, как бы по-уродстки он не выглядел в сравнении с YAML.

А ведь есть ещё JSON5, который совсем преимущества YAML нивелирует.

Поговаривают, что для девопсов YAML стал стандартом для конфигураций только по одной простой причине. Он похож на Python :)
4 май 20, 23:59    [22127452]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Да я совсем забыл про json5.

Ну что же . Будет ещё один вариант.
5 май 20, 08:18    [22127527]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3281
mayton
Valentin Kolesnikov

Есть преобразователь для четырёх типов файлов 22122936.

Мы в основном храним данные в xml и property файлах.
Json для обмена данными между сервером и js кодом.

Хорошего вам дня!

Спасибо. Забрал себе ваш бинарник. Хорошая утилита.

XML to JSON, YAML or CSV/JSON to XML, YAML or CSV converter, version 2020-05-04
 -?,--help                                  This help text.
 -c,--config <arg>                          The file with config (it includes src, dest, mask, mode
                                            and format parameters).
 -d,--dest <arg>                            The destination file/directory for converted file(s).
 -de,--delimiter <arg>                      The delimiter for csv files(comma|semicolon|tab|space).
 -df,--dest-format <arg>                    The destination file format(unix|windows|mac).
 -f,--format <arg>                          The format type (2|3|4|tabs|compact).
 -m,--mask <arg>                            The file mask (json|xml|yml|csv|all) for source file(s).
 -mo,--mode <arg>                           The processing file mode (convert|format|check).
 -rm,--remove-minuses-and-convert-numbers   Convert xml to json without minuses.
 -rs,--replace-self-closing-with-null       Convert xml to json self-closing.
 -s,--src <arg>                             The source file/directory which should be converted into
                                            xml/json.
 -t,--type <arg>                            The output file(s) type (json|xml|yaml|csv).
 -w,--watch                                 Watch for directory changes.
 -wa,--without-attributes                   Convert xml to json without attributes.
 -wn,--without-namespaces                   Convert xml to json without namespaces.
For docs, license, tests, and downloads, see: http://javadev.github.io/underscore-java


Конечно мне не хватает управления стилями Yaml.

Под кат заглянут только параноики.
+

Для параноиков.
grant {
      permission java.io.FilePermission "*", "read,write,delete";
      permission java.util.PropertyPermission "user.dir", "read";
      permission java.util.PropertyPermission "java.runtime.name", "read";
};



А где можно почитать про управление стилями Yaml?
5 май 20, 13:11    [22127635]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Я на 100% не уверен что это имеено стили.

Но в SnakeYaml есть DumperOptions
https://www.javadoc.io/doc/org.yaml/snakeyaml/1.19/org/yaml/snakeyaml/DumperOptions.html
и насколько я понимаю он влияет на способ сериализации.

Мне в основном интересно управлять форматированием арреев (горизонтально-вертикально)
и способом представления Maps. Причем задавать это выборочно для некоторых уровней
документа или тегов.
5 май 20, 13:15    [22127638]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Из программных продуктов которые юзают yaml и с которыми я сталкивался.

AWS CloudFormation
Apache Cassandra
Travis
Docker-compose
Spring (YamlConfig) - Теоретически. Тоесть я видел такие конфиги но не юзал.
Log4j 2.x

+все .properties теоретически можно рассматривать как подмножество Yaml.

+ некоторые продукты - опциональню. Тоесть например можно конфигурить AWS Cloud
через JSon или через Yaml как будет удобно.
6 май 20, 10:11    [22127991]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton,

Ну это же по сути формат. Если работа с конфигами/моделями/данными реализована через абстракцию, то YAML, JSON или что-то ещё, это всего лишь соответствующий провайдер.
6 май 20, 13:55    [22128142]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Начал потихоньку применять. В неком простом веб-сервере на базе Jetty у меня был справочник mime types
в формате Java-properties.

# images

gif  : image/gif
png  : image/png
jpg  : image/jpeg
jpeg : image/jpeg
svg  : image/svg+xml
webp : image/webp
ppm  : image/x-pordiv-pixmap
pgm  : image/x-pordiv-graymap
pnm  : image/x-pordiv-anymap

# documents

pdf : application/pdf
djvu : image/x-djvu
xls : application/x-msexcel
doc : application/msword
ppt : application/mspowerpoint

# Video

avi : video/avi
mp4 : video/mp4
mov : video/quicktime
flv : video/x-flv
wmv : video/x-ms-wmv
mkv : video/x-matroska

# sound

mp3 : audio/mpeg
ogg : audio/ogg
aac : audio/aac
wma : audio/x-ms-wma
wav : audio/vnd.wave
flac : audio/flac


Вот интересен после конвертации в Yaml. Я сгруппировал популярные префиксы image/, video/ в группы и получилось красиво.

# Images

image:
  - gif : [ gif ]
  - png : [ png ]
  - jpeg : [ jpeg, jpg ]
  - jp2 : [ jp2, j2k, jpf, jpm, jpg2, j2c jpc]
  - webp : [ webp ]
  - svg : [ svg+xml ]
  - quicktime : [ mov ]
  - x-pordiv-pixmap : [ ppm ]
  - x-pordiv-graymap : [pgm]
  - x-pordiv-anymap : [pnm]
  - x-djvu : [ image ]

# Video:

video:
  - avi : [ avi ]
  - mp4 : [ mp4,m4v ]
  - 3gpp : [ 3gpp, 3gp ]
  - webm : [ webm ]

# Audio

audio:
  - aac : [ aac ]
  - mpeg : [ mp3 ]
  - ogg : [ogg]
  - aac : [aac]
  - vnd.wave : [ wav ]
  - flac : [ flac ]
  - x-ms-wma : [ wma ]

# documents

pdf : application/pdf
xls : application/x-msexcel
doc : application/msword
ppt : application/mspowerpoint


Есть опция. Можно с целью обратной совместимости снова писать как properties.
+ Некоторые расширения дублировали mimetype. Я сделал их массивом.
23 май 20, 17:51    [22138239]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton
image:
  - gif : [ gif ]


Что ж тут красивого-то?

Красиво, это когда интуитивно понятно, семантически верно, очевидно и лаконично.


mayton
gif  : image/gif
png  : image/png
jpg  : image/jpeg


Вот тут всё понятно и очевидно, ничего лишнего.
24 май 20, 01:58    [22138404]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
hVostt

mayton
gif  : image/gif
png  : image/png
jpg  : image/jpeg


Вот тут всё понятно и очевидно, ничего лишнего.

Тут - больше букв.

Давай такой промежуточный вариант. Как улучшить дизайн Yaml-конфига чтобы было "понятно и очевидно" ?
Потому что твоё предложение - это возврат к .properties файлу.
24 май 20, 14:32    [22138542]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
hVostt
Member

Откуда:
Сообщений: 17476
mayton
Тут - больше букв.


Давно, когда я был молодым и зелёным, то был в восторге от разных трюков в С/C++, как можно десяток строчек кода сократить до одной.

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


mayton
Давай такой промежуточный вариант. Как улучшить дизайн Yaml-конфига чтобы было "понятно и очевидно" ?
Потому что твоё предложение - это возврат к .properties файлу.


Так зачем улучшать то, что итак хорошо?
Ну реально, давай лучше какой-то другой пример.

Потому что MIME-тип нельзя дербанить на части, он цельный. Именно в таком, цельном виде используется. И даже в шаблонах он цельный: "*/*", "image/*"..

В общем, другой пример нужен.
24 май 20, 17:26    [22138585]     Ответить | Цитировать Сообщить модератору
 Re: Семантика Yaml документа.  [new]
mayton
Member

Откуда: loopback
Сообщений: 46531
Хорошо. Я подумаю над другим примером. Но ты наверняка видел простыни пропертей вида.

application1.module1.form1.property1 = "FuckenValue1"
application1.module1.form1.property2 = "FuckenValue2"

application1.module2.form1.property1 = yes
application1.module2.form1.property2 = 1


Скажи честно. Разве тебя это не раздражало?
24 май 20, 20:32    [22138646]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Java Ответить