|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Несколько раз я ходил вокруг этого формата. И облизывался. Я позиционировал его как замену Excel в бизнес - коммуникациях. Хотелось уйти от передачи маппингов в Excel к маппингу в csv/json/yaml. Последний стоял как десерт. Но к сожалению мне самому надо было понять подводные камни. А именно. - какие могут быть НЕОДНОЗНАЧНОСТИ (случайный пробел или табулятор слева) - какие сложности с парсером - композиции (когда внутрь одного документа заворачивают кусок другого (типа CDATA xml). И вопросы к аудитории - как вы применяете этот формат на производтсве? - какие есть pitfalls - какие либы (у меня только snakeyaml) - и самое последнее что меня сильно интересеует - кодогенерация и связи с трансляторами ЯП. В качестве примера. Дан некий софистический документ. Анкета некого Майка. Я сам его написал с изменениями по туториалу. Он - успешно проходит парсинг. Тоесть он - валиден. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Что интересно. Документ - читабелен для человека не из It. All is clear. Есть две формы представления array. Формат даты по ISO. Есть также некий relaxed-json/Hokoon, тоесть в некотром роде документ обратно совместим с небольшими изменениями с JSon. Есть также удобства по добавлению сырых данных в виде авто-подписи Майка. Вобщем докиньте свои 5 коп. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 11:52 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton замену Excel в бизнес - коммуникациях по моим наблюдениям excel это единственный формат, который понимает большинство эникейщиков и замены ему не предвидится, какими бы чудесными не были другие форматы. даже когда просишь сохранить в csv из того же excel, половина не понимает чего от них хотят. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 12:16 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton, А как же старый добрый key-value properties :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 12:31 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Я уже много лет подковёрно веду борьбу с Excel. Я выкашиваю его косой и вырубаю топором из проектов там где есть возможность. И у меня на то есть своя аргументация. Но топик не об этом. Топик вообще о том как согласовать бизнес требования и код. Современные Business Analysts - ребята очень грамотные. Знают не только Микросовт-Охвис. Они нормально оперируют R, Statistica, и скриптуют запросики в MSSQL. И от yaml нас отделяет только несколько брейнштормов и грумингов идей. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 12:32 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Если развернуть этот документ в дерево LinkedHashMap то вот такое получается. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Прикольно что дата распозналась именно как дата. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 13:56 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 13:58 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Попробовал посериализировать. Стили стали более унылые и плоские. Кто знает как управлять? Например я не хочу видеть JSon-like форматирование а хочу такое с bullets как в исходном документе. (в моём первом посту) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Код: python 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:18 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton как вы применяете этот формат на производтсве? Что значит на производстве? В DevOps скриптах деплоймента, мониторинга и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:47 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Нет. Девопс меня не интересует. Расскажите о НЕСТАНДАРТНОМ использовании Yaml. Меня интересует когда Yaml участвует в описании моделей данных. Энтитей. ДТО. ОРМ-маппинга. Всё что угодно кроме конфигов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 15:52 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Управление типизацией (snakeyaml). Я уже выкинул модульный тест. Сделал просто конвертер Yaml=>MOdel=>Yaml. Просто продолжаю обогащать анкету Майка и смотрю как работает этот pipeline. In: Код: python 1. 2. 3. 4. 5. 6. 7. 8.
Out: Код: python 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 18:23 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
А вот еще интереснее. Алиасы. У Майка есть брат-близнец Том. Я задаю его дату-рождения через алиасы. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Это похоже на XML entities. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 18:32 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Есть еще динамическое переопределение алиасов и merge структур. Но мне пока хватит фич. Остановлюсь на этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 18:38 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton Несколько раз я ходил вокруг этого формата. И облизывался. Я позиционировал его как замену Excel в бизнес - коммуникациях. Хотелось уйти от передачи маппингов в Excel к маппингу в csv/json/yaml. Последний стоял как десерт. Но к сожалению мне самому надо было понять подводные камни. А именно. - какие могут быть НЕОДНОЗНАЧНОСТИ (случайный пробел или табулятор слева) - какие сложности с парсером - композиции (когда внутрь одного документа заворачивают кусок другого (типа CDATA xml). И вопросы к аудитории - как вы применяете этот формат на производтсве? - какие есть pitfalls - какие либы (у меня только snakeyaml) - и самое последнее что меня сильно интересеует - кодогенерация и связи с трансляторами ЯП. В качестве примера. Дан некий софистический документ. Анкета некого Майка. Я сам его написал с изменениями по туториалу. Он - успешно проходит парсинг. Тоесть он - валиден. Код: python 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Что интересно. Документ - читабелен для человека не из It. All is clear. Есть две формы представления array. Формат даты по ISO. Есть также некий relaxed-json/Hokoon, тоесть в некотром роде документ обратно совместим с небольшими изменениями с JSon. Есть также удобства по добавлению сырых данных в виде авто-подписи Майка. Вобщем докиньте свои 5 коп. Есть преобразователь для четырёх типов файлов 22122936 . Мы в основном храним данные в xml и property файлах. Json для обмена данными между сервером и js кодом. Хорошего вам дня! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:52 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Valentin Kolesnikov, спасибо. Посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 19:53 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
У меня щас другая проблема. Я пробую продуктовые данные по бизнес-аналитике сохранять в Yaml. (раньше мы в Json хранили) и вот это горизональное-вертикальное форматирование коллекций - сильно мешает. Грубо говоря оно включается по искусственному интеллекту. Видимо следуя какой-то логике улучшения. Но мне надо его защёлкнуть только на горизонтальном. Вот это - неправильно. Код: java 1. 2. 3. 4. 5. 6.
И я пока не вижу выхода как делать кастомный сериализатор. Хотя не хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 20:03 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton Нет. Девопс меня не интересует. Расскажите о НЕСТАНДАРТНОМ использовании Yaml. Меня интересует когда Yaml участвует в описании моделей данных. Энтитей. ДТО. ОРМ-маппинга. Всё что угодно кроме конфигов. Для этого используем Json и XML ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 20:17 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton Несколько раз я ходил вокруг этого формата. И облизывался. mayton Вобщем докиньте свои 5 коп. Так себе формат. Чудовищно переусложнён. В следствие этого, нормальной полной поддержки последней версии формата YAML толком нигде нет. И даже если вы её найдёте/реализуете, пользы от этого мало. Ибо применение всех фишечек приведёт к нечитаемости и неупотребимости. YAML хорошо подходит именно для ручного использования, т.е. для конфигов. Для передачи данных лучше использовать JSON/BSON/XML. В общем, никакого профита, кроме как использования для конфига нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 06:55 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mayton Расскажите о НЕСТАНДАРТНОМ использовании Yaml. Меня интересует когда Yaml участвует в описании моделей данных. Энтитей. ДТО. ОРМ-маппинга. Для описания моделей данных и типизированного хранения данных всё же лучше XML ничего нет. Так как в XML можно указывать тип данных и любые другие мета-данные, которые ложатся как влитые. Что-то подобное делать в JSON/YAML -- это будут очередные кривые костыли, основанные на кривых соглашениях. Да и вообще, нафиг оно там не упёрлось. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 07:00 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
hVostt Для описания моделей данных и типизированного хранения данных всё же лучше XML ничего нет. Так как в XML можно указывать тип данных и любые другие мета-данные, которые ложатся как влитые. Тут я с вами поспорил. Т.к. xml/xsd не совсем однозначно может описывать данные/типы. Как минимум я регулярно сталкиваюсь с тем, что в зависимости от хинтов xjb можно сформировать разные классы. В этом плане json проще и надежнее. Три типа - объект, массив, строка. Их комбинация позволяет передавать любые данные . Но в нём проблемы с датами. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 07:57 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mad_nazgul Тут я с вами поспорил. Т.к. xml/xsd не совсем однозначно может описывать данные/типы. Как минимум я регулярно сталкиваюсь с тем, что в зависимости от хинтов xjb можно сформировать разные классы. В этом плане json проще и надежнее. Три типа - объект, массив, строка. Их комбинация позволяет передавать любые данные . Но в нём проблемы с датами. Сравните с количеством примитивов в XML 3.2.1 string 3.2.2 boolean 3.2.3 decimal 3.2.4 float 3.2.5 double 3.2.6 duration 3.2.7 dateTime 3.2.8 time 3.2.9 date 3.2.10 gYearMonth 3.2.11 gYear 3.2.12 gMonthDay 3.2.13 gDay 3.2.14 gMonth 3.2.15 hexBinary 3.2.16 base64Binary 3.2.17 anyURI 3.2.18 QName 3.2.19 NOTATION Т.е. XML может быть самодостаточен для передачи данных и типов данных. Плюс любое количество аннотаций. JSON не может быть надёжнее, так как информацию о типе не хранит. Но проще, так как примитивов меньше. По сути основное преимущество JSON в простоте и меньшем количестве оверхеда. Но это не забесплатно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 08:14 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
mad_nazgul Их комбинация позволяет передавать любые данные . Можно передавать только вот это: объект, строка, массив, число, bool и null. Никакие другие данные передавать нельзя. Т.е. если я вам пришлю какой-нибудь JSON и не расскажу что там лежит, не дам полное описание модели данных с описанием типов, вы не сможете правильно его интерпертировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 08:18 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
hVostt Сравните с количеством примитивов в XML 3.2.1 string 3.2.2 boolean 3.2.3 decimal 3.2.4 float 3.2.5 double 3.2.6 duration 3.2.7 dateTime 3.2.8 time 3.2.9 date 3.2.10 gYearMonth 3.2.11 gYear 3.2.12 gMonthDay 3.2.13 gDay 3.2.14 gMonth 3.2.15 hexBinary 3.2.16 base64Binary 3.2.17 anyURI 3.2.18 QName 3.2.19 NOTATION Т.е. XML может быть самодостаточен для передачи данных и типов данных. Плюс любое количество аннотаций. Я знаю. Вот только этим всем пользоваться тот еще гемор. Тут кстати еще нет Any и AnyType ;-) hVostt JSON не может быть надёжнее, так как информацию о типе не хранит. Но проще, так как примитивов меньше. По сути основное преимущество JSON в простоте и меньшем количестве оверхеда. Но это не забесплатно. В этом и прелесть json. Там всего три типа. И его всегда можно распарсить однозначно в "объект", "массив" или "строку". Далее строку уже можно парсить как угодно, по каким угодно правилам. Для передачи данных это более чем достаточно. С xml/xsd всегда танцы с бубном связанные с xsd. Одни и те же данные, с одними и теми же xsd в зависимости от используемого marshaller'а будут получаться разные xml. В отличии от json, где боле-менее будет одинаковый json. По мне так xml/xsd это глюкавый оверхед. Я пока не разбирался со схемами для json. Но, например, HateOS смотрится в первом приближении довольно мило. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 09:50 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
hVostt mad_nazgul Их комбинация позволяет передавать любые данные . Можно передавать только вот это: объект, строка, массив, число, bool и null. Никакие другие данные передавать нельзя. В Json по большому счету нету числа, bool и null. Это все строки. JavaScript может сделать предположение, что то или иное значение является числом или bool. На там куча странных "умолчаний", которые надо просто знать типа Код: javascript 1.
hVostt Т.е. если я вам пришлю какой-нибудь JSON и не расскажу что там лежит, не дам полное описание модели данных с описанием типов, вы не сможете правильно его интерпертировать. Согласен, т.к. JSON это schemaless. И это хорошо. Как минимум он не дает иллюзии, что у вас есть точное описание протокола передачи данных. Т.к. xsd это не точное описание, и для него иногда нужны хинты (xjb), которые подсказывают "как правильно" разбирать xsd. С Json обычно, просто прошу прислать их модель (классы) которые мне посылают. Обычно они довольно точно описывают, что ко мне прилетит в виде JSON. С xsd приходилось еще просить парочку примеров на xml, чтобы понять, что мне реально прилетит из несколько интерпретаций xsd-схемы. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 10:00 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
Zzz79 полностью поддерживаю. ямл для конфигов хорош а для хранения лучше json xml уже устарел Он не устарел. "То что мертво умереть не может" Просто xml во первых больше чем json при одинаковых данных. Во вторых xsd это сложный язык описания метаинформации, который дает не однозначный результат. Помню во времена хайпа soap java'исты отправляли лучи поноса в сторону MS и его подделий, за своеобразную интерпретацию стандартов SOAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 10:04 |
|
Семантика Yaml документа.
|
|||
---|---|---|---|
#18+
XML - это совершенно зрелая и завершенная технология. С большим количеством уровней абстракций. Прям как стек TCP. На базе нее можно построить все что угодно. К сожалению у нее есть один недостаток. Она - не human readable. Об этом можно сказать просто посмотрев на форматы офисных документов через текстовый редактор. Я-же искал технологию которая позволяет людям "от бизнеса" описывать метадатау в псевдо-текстовом формате. И далее мы можем такие документы обсуждать. Делать правки прямо в git И затаскивать в проект в этом первоисходном виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2020, 10:31 |
|
|
start [/forum/topic.php?fid=59&msg=39953182&tid=2120406]: |
0ms |
get settings: |
19ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
38ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
424ms |
get tp. blocked users: |
0ms |
others: | 16ms |
total: | 508ms |
0 / 0 |