|
jdk17
|
|||
---|---|---|---|
#18+
Добрый всем день) кто то пробовал на 17ю перевести проект? я тут попробовал локально наш основой - какие то тонны конфликтов ,градл с ума сходит - говорит у вас 17я джава,дайте мне 16ю дал ему 16ю - все вообще развалилось мейн класс не видит - пытаюсь прям из мейна запутиться тоже не видит какая то жесть из 2017 ,когда на чистом спринге писали и пытались все библы подружуть - тут что то похожее если был опыт поделетитес плиз - ибо нужно срочно свитчиться на 17ю ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 21:41 |
|
jdk17
|
|||
---|---|---|---|
#18+
Сейчас в процессе перехода. Gradle 7.2.0 + пришлось версии спринга бампнуть - как итог - пайпланы зелёные. Не думаю что дальше проблемы влезут. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 22:14 |
|
jdk17
|
|||
---|---|---|---|
#18+
pavel_nv Сейчас в процессе перехода. Gradle 7.2.0 + пришлось версии спринга бампнуть - как итог - пайпланы зелёные. Не думаю что дальше проблемы влезут. бут какую версию поставили? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 22:29 |
|
jdk17
|
|||
---|---|---|---|
#18+
pavel_nv Сейчас в процессе перехода. Gradle 7.2.0 + пришлось версии спринга бампнуть - как итог - пайпланы зелёные. Не думаю что дальше проблемы влезут. 7.2.0 у нас не видит Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 22:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
spring boot 2.5.5 да, с версией я немного промахнулся) Код: java 1.
но у нас в докере собирается - а там он доступен как и 7.2.0 Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 22:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
pavel_nv, ВРОДЕ как началася сборка и при компиляции упало Код: sql 1.
ломбок самый свежий- я хз что еще не хватает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 23:18 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080, у меня после обновления до 1.18.20 такая ошибка пропала. Но это все гуглится за пару минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 23:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
у меня есть проект jdk17, maven, spring boot 2, lombok. работает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 23:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080 pavel_nv, ВРОДЕ как началася сборка и при компиляции упало Код: sql 1.
ломбок самый свежий- я хз что еще не хватает ИМХО, Lombok - извращенное порождение карго-культа инкапсуляции и в проектах на Spring Boot бесполезен чуть более чем полностью, и даже вреден. Для DTO все поля можно объявить как public, а для объектов с поведением зависимости обычно инъектятся через конструктор. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 10:04 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov localhost8080 pavel_nv, ВРОДЕ как началася сборка и при компиляции упало Код: sql 1.
ломбок самый свежий- я хз что еще не хватает ИМХО, Lombok - извращенное порождение карго-культа инкапсуляции и в проектах на Spring Boot бесполезен чуть более чем полностью, и даже вреден. Для DTO все поля можно объявить как public, а для объектов с поведением зависимости обычно инъектятся через конструктор. Хорошо, что Вы написали "ИМХО". Не пишите таких глупостей, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 10:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит, Понимаю, что слегка порвал вам шаблон и оскорбил чувства верующего. Но уверен, что логичных объяснений обоснования применения Lombok вы привести не сможете. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Большой Синий Кит, Понимаю, что слегка порвал вам шаблон и оскорбил чувства верующего. Но уверен, что логичных объяснений обоснования применения Lombok вы привести не сможете. То, что Вы используете его только в том виде, что указали сами, уже доказывает, что мне ничего доказывать или обосновывать не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:06 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Roman Osipov Большой Синий Кит, Понимаю, что слегка порвал вам шаблон и оскорбил чувства верующего. Но уверен, что логичных объяснений обоснования применения Lombok вы привести не сможете. То, что Вы используете его только в том виде, что указали сами, уже доказывает, что мне ничего доказывать или обосновывать не нужно. В общем-то типичный ответ верующего, как и ожидалось. Вера, конечно, в доказательствах не нуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:09 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov, Вас заело на вере. Как сказал Эйнштейн: "Есть две бесконечные вещи — Вселенная и человеческая глупость. Впрочем, насчёт Вселенной я не уверен." Продолжайте использовать Дто с паблик полями и конструктором, пишите об этом всем, но всегда, пожалуйста, *всегда* добавляйте "ИМХО", "мне так кажется", "у меня малый опыт работы, особенно с ломбок", "я писал только CRUD микро-сервисы на спрингбут" и т.д. и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:18 |
|
jdk17
|
|||
---|---|---|---|
#18+
P.S. Извините, модератор, по глупости зашел в ява-ветку на форуме и по глупости ответил на глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:19 |
|
jdk17
|
|||
---|---|---|---|
#18+
Тоже не понимаю зачем тащить Lombok в проект. Если много bolierplate-кода, то проще или в явном виде использовать какие-нибудь кодогенераторы, или в принципе что-то изменить в архитектуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Roman Osipov, Вас заело на вере. Как сказал Эйнштейн: "Есть две бесконечные вещи — Вселенная и человеческая глупость. Впрочем, насчёт Вселенной я не уверен." Продолжайте использовать Дто с паблик полями и конструктором, пишите об этом всем, но всегда, пожалуйста, *всегда* добавляйте "ИМХО", "мне так кажется", "у меня малый опыт работы, особенно с ломбок", "я писал только CRUD микро-сервисы на спрингбут" и т.д. и т.п. Вы не правы - все мимо. Я работал с Lombok и знаю его возможности. Я разрабатываю распределенные высоконагруженные отказоустойчивые решения в большом диапазоне Java-технологий, в том числе с распределенными кэшами и брокерами. Опыт кодирования - более 30 лет. Т.ч. про глупость - это к вам скорее высказывание относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Вы не правы - все мимо. Я работал с Lombok и знаю его возможности. Я разрабатываю распределенные высоконагруженные отказоустойчивые решения в большом диапазоне Java-технологий, в том числе с распределенными кэшами и брокерами. Опыт кодирования - более 30 лет. Т.ч. про глупость - это к вам скорее высказывание относится. Это мало о чем говорит. Некоторые люди просто стареют. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:28 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит, Будет что сказать-то по сути вопроса? Почему Lombok не бесполезен? Хоть одну конкретную вещь? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:34 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov, Хорошо, есть java 8, есть лист объектов с 10 пропертями - этот лист нужно обойти, и, при определенном условии изменить изменить 1 или 2 поля объекта, и собрать обратно в коллекцию. Объект должен быть immutable, с правильным hashCode, equals, красивым toString() (включающий parent), наследоваться от другого ParentData, причем менять проперти нужно и те, что в парент. Напишите это, пожалуйста. class ParentData class Data extends ParentData var parentData = property1 var data = property2, property3 var dataList = List<Data> // process data list and update property1 and property3, get immutable collection of immutable objects. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
P.S. Вы сказали, что пишете разные высоконагруженные приложения, а это *стандартный* кейс ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:39 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Roman Osipov, Хорошо, есть java 8, есть лист объектов с 10 пропертями - этот лист нужно обойти, и, при определенном условии изменить изменить 1 или 2 поля объекта, и собрать обратно в коллекцию. Объект должен быть immutable, с правильным hashCode, equals, красивым toString() (включающий parent), наследоваться от другого ParentData, причем менять проперти нужно и те, что в парент. Напишите это, пожалуйста. class ParentData class Data extends ParentData var parentData = property1 var data = property2, property3 var dataList = List<Data> // process data list and update property1 and property3, get immutable collection of immutable objects. Ближе к коду! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:46 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит, Начнем с того, что условия - Объект должен быть immutable, с правильным hashCode, equals неактуальны для абсолютного большинства кастомных объектов. Не делают DTO immutable и не определяют для них hashCode, equals, если они не используются где-то как ключи. А для объектов с поведением тем более. Так что это надуманные требования, приведенные может быть из-за недостатка реального опыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:47 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Большой Синий Кит, Начнем с того, что условия - Объект должен быть immutable, с правильным hashCode, equals неактуальны для абсолютного большинства кастомных объектов. Не делают DTO immutable и не определяют для них hashCode, equals, если они не используются где-то как ключи. А для объектов с поведением тем более. Так что это надуманные требования, приведенные может быть из-за недостатка реального опыта. Да причем тут дто? Еще раз говорю - может Вы "разрабатываю распределенные высоконагруженные отказоустойчивые решения в большом диапазоне Java-технологий, в том числе с распределенными кэшами и брокерами. Опыт кодирования - более 30 лет. ", но либо: 1) Вы врете 2) Вы пишете говнокод. Уж простите. Еще раз повторяю, кейс *абсолютно* реальный. Такой кейс нужен для реальной обработки стримов данных, причем эти данные должны быть готовы для использования в других хеш-ориентированных коллекциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:51 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Большой Синий Кит, Начнем с того, что условия - Объект должен быть immutable, с правильным hashCode, equals неактуальны для абсолютного большинства кастомных объектов. Не делают DTO immutable и не определяют для них hashCode, equals, если они не используются где-то как ключи. А для объектов с поведением тем более. Так что это надуманные требования, приведенные может быть из-за недостатка реального опыта. Я написал для Вас задание. Еще раз повторяю - этот кейс абсолютно реален в серьезных приложения, где используются не только DTO, далеко не только они. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:53 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Большой Синий Кит Roman Osipov, Хорошо, есть java 8, есть лист объектов с 10 пропертями - этот лист нужно обойти, и, при определенном условии изменить изменить 1 или 2 поля объекта, и собрать обратно в коллекцию. Объект должен быть immutable, с правильным hashCode, equals, красивым toString() (включающий parent), наследоваться от другого ParentData, причем менять проперти нужно и те, что в парент. Напишите это, пожалуйста. class ParentData class Data extends ParentData var parentData = property1 var data = property2, property3 var dataList = List<Data> // process data list and update property1 and property3, get immutable collection of immutable objects. Ближе к коду! Да я уже написал это. Тут минута нужна, но товарищ, видимо, не может Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Все. Ждем товарища. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит, Для реальной обработки стримов данных обычно достаточно того, что объект сериализуется/десериализуется. Хэш код тут ни при чем. Еще раз повторяю - только в небольшом количестве случаев объекту реально надо прописывать хэш-код. Есть объекты с поведением, есть DTO - какой еще тип объектов можете назвать, который обширно используется в приложениях? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 11:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov Большой Синий Кит, Для реальной обработки стримов данных обычно достаточно того, что объект сериализуется/десериализуется. Хэш код тут ни при чем. Еще раз повторяю - только в небольшом количестве случаев объекту реально надо прописывать хэш-код. Есть объекты с поведением, есть DTO - какой еще тип объектов можете назвать, который обширно используется в приложениях? Короче, разработчик *распределенных* /и/ высоконагруженных приложений с 30-ти летним опытом, я тут ликбез по полной устраивать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Без Lombok этот код не написать что ли? Если речь о двух классах с тремя свойствами, то в чём проблема написать все эти getter/setter вручную? Если у вас сотни или тыщи таких классов с десятками свойств, ну в IDE обычно есть средства автоматизации, которые за вас напишут этот boilerplate-код. Либо эта схема данных должна описываться в виде модели или на DSL, из которых нужный код может генериться. Не понимаю почему эта задача должна решаться именно Lombok'ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:39 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Без Lombok этот код не написать что ли? Если речь о двух классах с тремя свойствами, то в чём проблема написать все эти getter/setter вручную? Если у вас сотни или тыщи таких классов с десятками свойств, ну в IDE обычно есть средства автоматизации, которые за вас напишут этот boilerplate-код. Либо эта схема данных должна описываться в виде модели или на DSL, из которых нужный код может генериться. Не понимаю почему эта задача должна решаться именно Lombok'ом. Послушайте, Вы притворяетесь, что ли? Дааааа.. видимо, правду пишут, что (как минимум) Java форум помер. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb двух классах с тремя свойствами Ares_ekb вас сотни или тыщи таких классов с десятками свойств Вы сами показываете какой то максимализм. Либо три либо миллион. Дак сколько соток копать лопатой? 3 или гектар? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:50 |
|
jdk17
|
|||
---|---|---|---|
#18+
Эта задачка слишком тривиальная. Сделайте мне допустим редактор ER моделей с помощью Lombok. Нужно чтобы модели, которые рисуют пользователи хранились в базе на сервере, чтобы было API для работы с моделями, чтобы сам редактор моделей был на клиенте в браузере. Для этого нужно дофига кода: 1) Код для работы с базой (например, Hibernate'овые Entity-классы) 2) DTO для передачи на клиент 3) Мапинги между 1 и 2 в обе стороны 4) REST API или что-то такое 5) Клиентский код (JavaScript-классы) Причём, если в этот редактор моделей я хочу добавить какие-то новые типы объектов (пусть это будет редактор каких-нибудь расширенных ER моделей или вообще других моделей), то мне нужно обновить код по всем этим 5 пунктам. Толку от того, что Lombok избавит меня от написания getter/setter, создания билдеров и т.п. Мне нужно на порядок больше boilerplate-кода, совершенно разного. Один из вариантов - это описать схему данных в виде какой-нибудь Ecore-метамодели и сгенерить из неё весь этот код. В Lombok функциональность мизерная, но проблем со сборкой и т.п. он добавляет порядком, вечно что-то отваливается. Если, уж, нужно упрощать разработку, то использовать нормальные решения, а не урезанные костыли, которые больше проблем добавляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:56 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я полностью за автоматизацию разработки, но Lombok - это автоматизация на таких минималках, что толку от неё вообще не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 12:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Вы перепутали ветки форума. По умолчанию в java и особенно в ОРМ говорят о CRUD приложениях. А потом уже о ГИС, Редакторах и ERP ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Я полностью за автоматизацию разработки, но Lombok - это автоматизация на таких минималках, что толку от неё вообще не видно. - назовите линейку продуктов - чел выше наехал на либу не уточняя минималки ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Нет-нет, это слишком тривиальная задача. Я пока еще не придумал, что конкретно попросить Вас мне тут сделать, но Вы обязательно сделайте. С ломбоком или нет - не важно. Главное, что-нибудь поумнее, с пунктами и подпунктами. Можно любое приложение, но не тривиальное, и чтобы функциональность была не мизерная.... или даже мизерная, не суть - просто я уверен, тут все наслаждаются Вашим умом в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. Ну вот и выяснили, какой Вы специалист. Это все очень печально. Более комментировать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:10 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp Roman Osipov, Код будет? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Как и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. авторКак и говорил ранее, хэш/эквалс в большинстве случаев не нужен. А когда нужен без проблем вставляется вызов Appache Commons HashCodeBuilder. Что там, что там - одна строка. У меня лучше: Код: java 1.
+ Стримы тоже не нужны, проперти обновлять не надо, объекты иммутабл не надо, классы тоже, да вообще, выходит, что ничего не надо, все тлен - что так, что этак с точки зрения вечности это все глупая трата времени... Но при желании, можно вставить весь Apache Commons, можно и Apache Spark - не суть. А давайте вообще все вставим? Ну просто, ради интереса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Уууууууууууууу Я рад, что Blazkowicz и Mayton продолжают присутствовать на этом форуме. Честно говоря, не знаю, как они это выдерживают. Говорю без всякой иронии. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:26 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Blazkowicz ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
А почему я должен что-то "выдерживать" или не выдерживать? Единсвтенное что меня печалит - это вялая активность всего форума. Мы выдержали Луговского, Дедала и Студентика. А сегодняшний трафик - это просто капающая вода из крана. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 13:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
да, тоже интересно, есть на форуме еще кто-то моложе 40, засирающий код геттерами, сеттерами, билдерами вручную ? в чем бонус ручной работы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, в разных проектах использовали разные инструменты и подходы. Обычно схема такая. 1) Если есть много типового кода, значит можно его описывать в виде графической модели или придумать для этого специальный DSL, что позволит не писать лишнее. Хоть для графических моделей, хоть для DSL нужно разработать метамодель. Метамодель описывает семантическую, смысловую составляющую нашего языка. Например, мы делаем какую-нибудь учетно-аналитическую систему и в ней полно совершенно типовых формочек, типового API для доступа к данным, типовых DTO-классов, Entity-классов и т.п. Соответственно в нашей метамодели мы описываем бизнес-сущности, которые нам нужны: формочка, поле формочки, визард (последовательность формочек), правило валидации и т.д. Описать всё это можно в любой нотации: на языке UML, в виде ER модели, в табличке в Excel перечислить сущности и атрибуты - вообще без разницы. Очень часто для этого используется язык Ecore . В статье последняя картинка это как-раз пример Ecore-метамодели. В нашем случае была бы метамодель описывающая атрибуты и связи между такими сущностями как формочка, поле, визард и т.п. 2) Затем для этой метамодели нужно разработать конкретный синтаксис: либо сделать редактор диаграмм ( раз , два ), на котором люди смогут описывать уже конкретные формы, либо описать синтаксис DSL ( раз , два ), чтобы они всё это делали в текстовом виде. Для создания редакторов диаграмм можно использовать Sirius . По ссылке можно посмотреть много примеров разных нотаций для моделей. Для создания DSL раньше можно было использовать EMFText (он у меня в статьях описывается). Сейчас в основном используют Xtext , там смысл тот же. На этом этапе у нас есть инструмент с помощью которого пользователи системы или разработчики могут описывать формочки или что там ещё им нужно. 3) Теперь из этих моделей можно что-то генерить. Для генерации кода из моделей можно использовать Xtend . Сейчас ощущение, что его забросили. У него было две ключевые особенности. Он позиционировался как улучшенная Java, но с появлением Kotlin и улучшением самой Java это потеряло актуальность. И второй момент: на нём очень удобно писать кодогенераторы - для этого он и сейчас продолжает использоваться. Можно тупо писать кодогенераторы на Java, и часто так делают, но мне не очень нравится. Для генерации кода из Ecore моделей можно использовать Acceleo . Ещё один вариант - это не генерить код сразу из модели, а сначала преобразовать эту модель в другую модель, и затем последнюю сериализовать в текстовое представление. Например, мы в одном проекте описывали структуру документов на языке UML, описывали правила валидации этих документов на языке OCL . Затем генерили из всего этого AST (абстрактные синтаксические деревья) либо для XPath выражений, либо для Java кода. Правила преобразования исходного AST в результирующее описывали на языке QVTo . Полученное AST сериализировали в текст с помощью EMFText (либо сейчас это можно делать с помощью Xtext). Вообще, есть полно и других инструментов для кодогенерации и т.п. Смотрю на этот пост, на количество ссылок, аббревиатур и базвордов... Большой Синий Кит и так уже "наслаждается" моими умственными способностями, после этого поста на мне как на специалисте можно просто ставить клеймо профнепригодности. Наверное, да, Lombok будет попроще. В принципе, Lombok - это тоже один из инструментов модельно-ориентированной разработки. Единственное мы не создаём какой-то свой язык моделирования или DSL. Разработчики Lombok уже создали его за нас и встроили в Java в виде аннотаций. Наверное это имеет право на существование, но я для себя не вижу смысла. Либо автоматизация на уровне Lombok не нужна вообще, либо нужна нормальная полноценная автоматизация, для которой Lombok не достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:03 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 да, тоже интересно, есть на форуме еще кто-то моложе 40, засирающий код геттерами, сеттерами, билдерами вручную ? в чем бонус ручной работы ? Проблема в том, что эти геттеры, сеттеры, билдеры в большинстве случаев просто не нужны при разработке обычных приложений. Но их настойчиво лепят, а потом чтобы не лепить их вручную используют Lombok. Костыль на костыль ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:09 |
|
jdk17
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:15 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 засирающий код геттерами, сеттерами, билдерами вручную ? Обычно такие классы, у которых куча геттеров, это классы, описывающие какие-нибудь бизнес-сущности, какое-то состояние системы, может быть DTO (но действительно большой вопрос, нафига для них геттеры и сеттеры). Короче, за этими классами стоит какая-то схема данных. Если она небольшая, ну, сделаю я это вручную. Если большая, то буду описывать в полноценной модели. На мой взгляд Lombok - это тоже засирание проекта, лишние зависимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Например, мы делаем какую-нибудь учетно-аналитическую систему (Извините, не удержался) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
а если на проекте сегодня 2 класса, завтра 4, послезавтра 6 что тогда. Через неделю начинать свою схему писать или через 10 дней. Свои генераторы моделей звучит красиво, в итоге есть шанс что кроме автора там ничего никто либо не разберет либо не захочет разбирать. Буквально недавно попробовал генератор моделей для swagger.json получалось так себе, пришлось выкинуть все что нагенерил (нечитаемо, compile errors, да и вообще все равно все руками проверять судя по ворнингам в логах). в пользу ломбока, практически все модели в пределах одной страницы не нужно листать ничего. Особенно если есть не просто getter а кастомный геттер. Его сразу видно. Хотя поначалу тоже было не хотелось это ломбок пользовать ибо в IDE генератор, а как разберешся как жил до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:28 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Например, мы делаем какую-нибудь учетно-аналитическую систему и в ней полно совершенно типовых формочек, типового API для доступа к данным, типовых DTO-классов, Entity-классов и т.п. -1 Болезнь всех программистов в возрасте. Не надо автоматизировать программиста! Это напоминает как в дельфи формочки записывали в бд и потом оттуда рожали. - типовые формочки решает наследование и шаблоны в IDE - типовое API решает ОРМ и @RepositoryRestResource В спринг буте и геттеры не нужны)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:29 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Если проект чуть сложнее, то я вообще не вижу смысла описывать эти классы в коде вручную. Мне проще описать их в модели или на DSL и сгенерить целиком вместе со всеми вспомогательными мэпперами (Entity-DTO), репозиториями, билдерами и т.п. вам проще, а для других это разбираться в чужом велосипеде, который тут едет, тут не едет, а здесь велосипедист понял как был не прав и свалил в другой проект. lombok это стандарт, который убережет наследников от велосипедов с хорошей задумкой но квадратными колесами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:30 |
|
jdk17
|
|||
---|---|---|---|
#18+
lleming, Да. Генераторы это еще хуже чем ломбок и чем руками. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Сущности это таблицы бд. Они разные. Как разная таблица Юзверь и Счёт. Ну ка, найди у них общее?)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb На мой взгляд Lombok - это тоже засирание проекта, лишние зависимости. По Ломбоку можно поднять отдельный топик. У ломбока есть нетривиальные ситуации (я щас не могу вспомнить) когда лучше было не использовать его чем использовать. Возможно это было связано с наследованием и с конструкторами. Не помню точно. Вобщем - если топик будет создан - подумаем и вспомним. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:42 |
|
jdk17
|
|||
---|---|---|---|
#18+
lleming а если на проекте сегодня 2 класса, завтра 4, послезавтра 6 что тогда. Через неделю начинать свою схему писать или через 10 дней. Свои генераторы моделей звучит красиво, в итоге есть шанс что кроме автора там ничего никто либо не разберет либо не захочет разбирать. Буквально недавно попробовал генератор моделей для swagger.json получалось так себе, пришлось выкинуть все что нагенерил (нечитаемо, compile errors, да и вообще все равно все руками проверять судя по ворнингам в логах). в пользу ломбока, практически все модели в пределах одной страницы не нужно листать ничего. Особенно если есть не просто getter а кастомный геттер. Его сразу видно. Хотя поначалу тоже было не хотелось это ломбок пользовать ибо в IDE генератор, а как разберешся как жил до этого. Поясню на примере. Есть вложенные классы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В варианте без геттеров/сеттеров присваивание делается как-то так: Код: sql 1.
Если использовать Lombok то получится такой код: Код: sql 1.
Первый вариант читается гораздо лучше. Это во-первых. Во-вторых есть дырявые абстракции - никто глядя на второй вариант не даст гарантии, что внутри гет/сет нет кода управления ядерным реактором. С первым вариантом такие гарантии понимания работы кода есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:43 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp lleming, Да. Генераторы это еще хуже чем ломбок и чем руками. Hibernate тоже можно рассматривать как генератор DDL при настройке hibernate.hbm2ddl.auto Вообще генераторов сейчас гораздо больше чем мы думаем. Просто не все из них генерят код. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:45 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Ares_ekb Например, мы делаем какую-нибудь учетно-аналитическую систему (Извините, не удержался) Никогда в жизни никто не ставил мне такую задачу. Один из заказчиков говорил - вот у нас есть черный ящик. В него с одной стороны втекают биржевые события. А с другой стороны я хочу чтоб вытекали команды к трейдингу. И систем - зоорпарк. И интеграций и стандартов - зоопарк. И аналитика туда втекает. И метадата. И история индексов. И живые события. Вот натянется на этот глобус Oracle Apex? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp lleming, Да. Генераторы это еще хуже чем ломбок и чем руками. Hibernate тоже можно рассматривать как генератор DDL при настройке hibernate.hbm2ddl.auto Вообще генераторов сейчас гораздо больше чем мы думаем. Просто не все из них генерят код. Сизифоф труд. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov В варианте без геттеров/сеттеров присваивание делается как-то так: Код: sql 1.
Где в хибере или буте мы это делаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 14:58 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Roman Osipov В варианте без геттеров/сеттеров присваивание делается как-то так: Код: sql 1.
Где в хибере или буте мы это делаем? Hibernate без проблем принимает аннотации над public полями, без геттеров и сеттеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Roman Osipov PetroNotC Sharp пропущено... ты сишник чтоле? Где в хибере или буте мы это делаем? Hibernate без проблем принимает аннотации над public полями, без геттеров и сеттеров. Тогда скажи проще - ребята, с 20хх года геттеры вообще не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:05 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, вроде я ещё не очень пожилой :) Спринг бут - это немного другая реализация той же самой идеи. Выделяем основные виды сущностей в коде: SpringBootApplication, Component, RestController и т.п. Можно было бы всё приложение нарисовать в виде модели, а можно прямо в коде пометить каждый класс/метод нужными аннотациями. То же самое с Hibernate: можно пометить классы в коде, можно описать всё в XML. А можно нарисовать модель и из неё сгенерить всё, что нужно. Я вообще никакой принципиальной разницы между всеми этими вариантами не вижу. Идея везде общая. Сначала мы определяем из каких типовых частей состоит наше приложение (модели, контроллеры, вьюхи, репозитории, сущности, DTO - всё что угодно). Затем уже возможны варианты: 1) Сделать базовые классы (базовая вьюха, базовый контроллер, базовая формочка со списком, базовая формочка с детальной информацией и т.п.) и от них наследовать другие классы - то, о чем вы говорите 2) Для каждой типовой части сделать аннотацию. Разработчики будут аннотировать ими код и в рантайме эти классы будут обрабатываться специальным образом (как в spring, hibernate) 3) Вместо аннотаций использовать какой-нибудь XML, JSON и т.п. - те же аннотации, но во внешнем файле 4) Сделать визуальный язык моделирования для рисования контроллеров, вьюх и т.п. Генерить из этих моделей либо весь код, либо генерить скелет, а остальное дописывать 5) Сделать DSL. Либо генерить из него код, либо интерпретировать его в рантайме. Вы говорите, что не нужно автоматизировать разработчика. Зачем тогда maven, gradle? Фактически это специальные DSL, которые позволяют описывать один из аспектов приложения: его зависимости от других библиотек, правила сборки. По-моему разработчики только и занимаются тем, что автоматизируют разработку. Только почему-то пункт 5 у них обычно вызывает легкое отторжение и подозрение, пункт 4 - это вообще прямо ужас-ужас, пункт 3 - ну какое-то легаси, пункт 2 - норм, если это делал гуру в фреймвоке, которым пользуются не менее N человек, если по нему не менее X вопросов на stackoverflow и дата последнего релиза не старше 1 месяца, и только пункт 1 можно использовать самим в своих приложениях. А я вообще принципиальной разницы между этими вариантами не вижу, это всё детали реализации. Какой вариант удобнее, тем можно и пользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb вроде я ещё не очень пожилой :) Спринг бут - это немного другая реализация той же самой идеи. Выделяем основные виды сущностей в коде: SpringBootApplication, Component, RestController и т.п. Можно было бы всё приложение нарисовать в виде модели, а можно прямо в коде пометить каждый класс/метод нужными аннотациями. То же самое с Hibernate: можно пометить классы в коде, можно описать всё в XML. А можно нарисовать модель и из неё сгенерить всё, что нужно. Вот смотри. Есть первый вариант создания окна в статике (дельфи) FormMy my = new FormMy() Где расположение контролов и наличие описано в файле dfm И есть динамическое создание FormMy my = new FormMy() Button btn = new Button() btn.Parent = my ...... Ты упорно агитируешь за второй вариант. -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:18 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я-бы ввел такую метрику. Стоимость внесения изменений (CMC). Если вам для того чтобы перименовать поле - надо просмотреть 100500 строк кода и еще и отдельно базу - то это высокая стоимость. Если вы просто заходите в json или yaml и переименовываете поле - и всё работает после сборки проекта - то это дешевая стоимость. Это к вопросу пользы и вреда генераторов. ЧТО у вас будет в роли DSL, скрипт, проперти файлы или java код - не важно. Важно как дорого это все развивать и поддерживать. Очень многие разработчики шарахаются DSL, и изо всех сил пытаются вытягивать какую-то опцию аннотациями. Мне такая практика кажется просто гипертрофированной. Надо в целом смотреть по ситуации. Иногда DSL может быть удобнее когда вы собираете семейство бизнес сущностей и для базы и для фронта и для бэка. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb 1) Сделать базовые классы (базовая вьюха, базовый контроллер, базовая формочка со списком, базовая формочка с детальной информацией и т.п.) и от них наследовать другие классы - то, о чем вы говорите Выше вопрос к вам по сущности Юзверь и Счет. Промолчали. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, Сущность - это уникальный объект в бд. Он собрался его/ее наследовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:24 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я-бы спросил как он ее собирается наследовать? Тоесть что будет в базовом типе? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 вам проще, а для других это разбираться в чужом велосипеде, который тут едет, тут не едет Велосипед - это скорее писать тонны boilerplate-кода. А если удаётся разложить приложение на какие-то типовые куски, четко всё это описать до такой степени, что аналитики/разработчики в этих терминах (контроллеров, вьюх, репозиториев, форма со списком, форма с детализацией и т.п.) смогут описать приложение и потом это описание практически один в один на верхнем уровне переносится в код, в идеале что-то генерится, либо пишется вручную. Это нормальный промышленный подход. Lombok и spring boot - это хорошо, но обычно недостаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Ares_ekb 1) Сделать базовые классы (базовая вьюха, базовый контроллер, базовая формочка со списком, базовая формочка с детальной информацией и т.п.) и от них наследовать другие классы - то, о чем вы говорите Выше вопрос к вам по сущности Юзверь и Счет. Промолчали. В смысле не работает? JPA поддерживает мэппинг как наследования, так и композиции. При чем разными способами - хочешь в одну таблицу отображай, хочешь в разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:38 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Есть первый вариант создания окна в статике (дельфи) И есть динамическое создание Ты упорно агитируешь за второй вариант Я наоборот говорю, что все эти варианты имеют право на жизнь и принципиальной разницы между ними нет. Сначала нужно в принципе определить (в голове, на листе бумаге) из каких типовых частей состоит приложение (форма со списком, форма с детализацией, ещё какая-то форма, котнроллеры, репозитории, ...). А дальше куча вариантов на выбор: 1) Нарисовать несколько типовых базовых форм в dfm 2) Реализовать в коде несколько типовых базовых форм и от них наследовать остальные 3) Придумать свой графический язык для проектирования форм и всего остального приложения и преобразовывать эти модели в dfm 4) То же самое, но генерить код 5) Вместо графического языка сделать текстовый DSL ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:38 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Сущность - это уникальный объект в бд. Он собрался его/ее наследовать. mayton ЧТО у вас будет в роли DSL, скрипт, проперти файлы или java код - не важно Скажем есть 1) диаграмма классов UML 2) Java-классы с JPA аннотациями, 3) XML конфиг для hibernate 4) Excel табличка со списком сущностей и атрибутов 5) Word-документ для аналитика или заказчика, описывающий схему данных (это совсем крамольный пункт). Всё это просто разные формы представления одной и той же схемы данных. Если мы можем легко перейти от одного представления к другому, то какая вообще разница. Какое представление удобнее, тем и нужно пользоваться, а остальные будут производными от него. Но это касается не только схемы данных, но и всего приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:52 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Я наоборот говорю, что все эти варианты имеют право на жизнь и принципиальной разницы между ними нет. - статику окно делает студен за один день в WYSIWYG редакторе. Ты делаешь распил бабла на месяц - между сущностью Юзер карл! И Счет нет ничего общего. Даже для студента выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:53 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb 5) Word-документ для аналитика или заказчика, описывающий схему данных (это совсем крамольный пункт). Это может быть не моделью но просто некой стартовой точкой. Мне сложно себе представить поддержку модели на основе Word-документа. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:54 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Модели могут быть какими угодно. Просят построить ИС. А ты сделаешь КОНСТРУКТОР информ систем. Просят табуретку. А ты - конструктор (DSL) табуреток. Просят сайт. А ты - генератор сайтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:56 |
|
jdk17
|
|||
---|---|---|---|
#18+
Просят сет бинов со сквозным поведением. А ты - Spring с AOP. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 15:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Никогда в жизни никто не ставил мне такую задачу. Один из заказчиков говорил - вот у нас есть черный ящик. В него с одной стороны втекают биржевые события. А с другой стороны я хочу чтоб вытекали команды к трейдингу. И систем - зоорпарк. И интеграций и стандартов - зоопарк. И аналитика туда втекает. И метадата. И история индексов. И живые события. Вот натянется на этот глобус Oracle Apex? PetroNotC Sharp Ares_ekb вроде я ещё не очень пожилой :) Спринг бут - это немного другая реализация той же самой идеи. Выделяем основные виды сущностей в коде: SpringBootApplication, Component, RestController и т.п. Можно было бы всё приложение нарисовать в виде модели, а можно прямо в коде пометить каждый класс/метод нужными аннотациями. То же самое с Hibernate: можно пометить классы в коде, можно описать всё в XML. А можно нарисовать модель и из неё сгенерить всё, что нужно. Вот смотри. Есть первый вариант создания окна в статике (дельфи) FormMy my = new FormMy() Где расположение контролов и наличие описано в файле dfm И есть динамическое создание FormMy my = new FormMy() Button btn = new Button() btn.Parent = my ...... Ты упорно агитируешь за второй вариант. -1 Ares_ekb H5N1 вам проще, а для других это разбираться в чужом велосипеде, который тут едет, тут не едет Ares_ekb Сгенеренный код типовой, разбираться в нём не нужно и править его вручную не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Берем low-code платформу типа Oracle APEX... Задача решена (Извините, не удержался) mayton Вообще генераторов сейчас гораздо больше чем мы думаем. Просто не все из них генерят код. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я думаю что хороший профессионал не избегает кодо-генерации а наоборот - использует ее в хвост и в гриву. Способность команды выучить кодо-генератор - мы можем рассмотреть отдельным топиком. Но то уже управленческая задача. А у нас тут - идея в вакууме. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:13 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Да, я об этом и говорю! А если low-code платформы нет, то пишем её сами Да, там ядро системы есть. Но это оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:17 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Единсвтенное что меня печалит - это вялая активность всего форума. Мы выдержали Луговского, Дедала и Студентика. А сегодняшний трафик - это просто капающая вода из крана. так забаньте уже Петро. думаю не я один такой, кому проще на английском вопрос сформулировать, чем тут через тупые вопросы Петро пробиваться, прекрасно понимаю, что ответы этому персонажу не нужны, он просто скучает. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Это может быть не моделью но просто некой стартовой точкой. Мне сложно себе представить поддержку модели на основе Word-документа. Это конечно какая-то жесть и на практике наверное нет смысл делать такое. Но возможен такой сценарий. Нарисовали схему данных, сгенерили из неё Word-документ, отправили на согласование заказчику, предметным специалистам и т.д. Они что-то поправили в документе, синхронизируем эти изменения обратно в модель. Можно в другую модель (не в исходную), а затем аналитик уже в удобном для него инструменте моделирования сравнивает две модели, смотрит что изменилось, мержит изменения в основную версию. Затем итерации повторяются. В итоге из модели генерятся окончательные версии документов и код. Поскольку источник один, то это гарантия того, что документы, код, какие-нибудь XML-схемы и т.п. не разойдутся между собой. У нас в некоторых проектах работа была ровно так организована за исключением конечно автоматического перегона документа обратно в модель, это проще сделать аналитику вручную, хотя если бы делалось автоматически, то экономило бы кучу времени. Ещё как вариант можно использовать не обязательно Word. А какие-то языки разметки или DSL, но прикрутить к ним WYSIWYG редактор. Похоже всё уже придумано, я описываю JetBrains MPS :) хотя сам им не пользовался ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:23 |
|
jdk17
|
|||
---|---|---|---|
#18+
В топку Word. Запаришся его парсить и сохранять. swagger.json - да. .graphql - да .wsdl - да Word - не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:28 |
|
jdk17
|
|||
---|---|---|---|
#18+
H5N1 mayton Единсвтенное что меня печалит - это вялая активность всего форума. Мы выдержали Луговского, Дедала и Студентика. А сегодняшний трафик - это просто капающая вода из крана. так забаньте уже Петро. думаю не я один такой, кому проще на английском вопрос сформулировать, чем тут через тупые вопросы Петро пробиваться, прекрасно понимаю, что ответы этому персонажу не нужны, он просто скучает. Это так не работает. Ты жмешь кнопку. И профильный модератор (Denis кажется) реагирует. Я за его действия - не отвечаю. Джентльмен по одну сторону от Суэтца.... ну короче ты понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:30 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Это не настолько космическая задача, Выше сказал - студент делает одно окно в день. Для ПО вида ERP конечно надо две модели. И модель ядра. Вот тут генерируйте справочники. Тема не про ERP ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 16:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Вы забываете при этом, что перед тем, как сгенерировать эти 80%, на вашем велосипеде простите, средстве моделирования, надо научиться ездить. Можно ли это сделать за один день? Можно ли это сделать за один день, не обращаясь за помощью к кому-либо из коллег? Если нет, то закладывайте еще время на обучение. Никанор Кузьмич Вы гарантируете, что ваш сгенерированный код всегда будет оптимальным, не будет потреблять лишних ресурсов? У вас невозможна ситуация, когда пользователь имел в виду одно, а сгенерировалось что-то другое? Встречный вопрос :) Как вы пишите SQL запросы? Вдруг СУБД выполнит их не оптимально? Наверное лучше напрямую доставать данные из базы через какое-нибудь API или сделать свою СУБД. Вы пишите одну строку SQL, а внутри там происходит куча операций, где гарантия, что во всех этих тоннах кода программист не допустил ошибку? Где гарантия, что СУБД правильно поняла ваш запрос? Вдруг вы имели в виду другое? Где гарантия, что по вашим JavaDoc комментариям сгенерилась корректная и оптимальная документация? Где гарантия, что вы описали API с помощью Swagger и для вас сгенерился правильный boilerplate-код или правильный UI? Где гарантия, что ваш gradle скрипт работает правильно? DSL, генераторы разных вещей из кода или из моделей используются просто повсеместно. Насчет корректности сгенеренного кода, да, конечно я озадачивался этим вопросом. Гарантируется это очень просто. Если тупо, то тестированием. Протестировать генератор можно один раз, это на порядок проще, чем писать кучу новых тестов для однотипного кода, который писался бы вручную. Более правильный вариант это 1) формально описать семантику исходного языка 2) описать семантику результирующего языка 3) формально описать преобразование выражений из одного языка в другой 4) доказать что это преобразование сохраняет семантику. Всё это стоит примерно в тыщу раз дороже, чем написание кодогенераторов или преобразований моделей. Меня хватило только частично на 1-ый пункт . Но дело не в кодогенерации, в принципе формальная верификация любого софта - это очень долго дорого. Для бедных есть тестирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 17:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
Подумалось что для авто-генерируемого кода сам DSL является спецификацией. Поэтому генерированный код - вообще проверять не надо. Надо просто проверить генератор. А кто полезет проверять руками java код - тому надо руки отбить и направить его носом в DSL. Там - всё что надо. DSL == спецификация ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 17:41 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Самое сложное, что я генерил: правила валидации документов, описанные на одном DSL (язык OCL), преобразовывал в XPath и Java код. При этом там делалась куча всяких оптимизаций, автоматически генерился не только код для валидации, но и для определения пути к невалидному элементу и т.п. Нет предела совершенству. Но я-бы просто остановился на таком наборе правил, который даёт полное предсказание результата. Как в SQL (DQL): Код: java 1.
безотносительно реализации SQL машины или наличия индексов - я всегда уверен что получаю результат обладающий определёнными свойствами. (в этом языке даже таже предикат (predicate) сам как-бы говорит нам что он - "предсказатель") Тоесть если ваш OCL дает такое однозначное понимание свойств - то он почти совершенен. И можно не компилируя и не запуская приложение уже заранее говорить будет ли результат обладать свойствами или нет. Это важно для тестирования например. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 17:51 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Блин, для ERP пишите! Для Java с этим сложнее. В основном наверное используют Eclipse. Ecore-модели и всякие кодогенераторы там очень давно. 1С: EDT сделана на Eclipse, я никогда ей не пользовался, но на сколько я понимаю конфигурации там создаются в виде Ecore-моделей, а этот их русскоязычный DSL реализован Xtext, но это всё не точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 17:56 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Word - не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton DSL == спецификация mayton Тоесть если ваш OCL дает такое однозначное понимание свойств - то он почти совершенен. И можно не компилируя и не запуская приложение уже заранее говорить будет ли результат обладать свойствами или нет. Это важно для тестирования например. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Что может быть не оптимальным в Entity или DTO классах? Или в мепперах между Entity и DTO? В каких-нибудь CRUD-контроллерах? Как что. Превращение ваших 100тыр кода в легаси. Начинаем новый проект. На spring boot starter data rest который наследник над jpa. Вы автоматизировали jpa? А как быть с этим наследником? Взять ваше легаси? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:19 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Уже есть DevExpress XAF ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Встречный вопрос :) Как вы пишите SQL запросы? Вдруг СУБД выполнит их не оптимально? Ares_ekb Где гарантия, что СУБД правильно поняла ваш запрос? Вдруг вы имели в виду другое? Ну или я перефразирую: никто из ваших джунов, приходивших к вам на проект, ни разу не задавал вопрос "почему генератор сгенерировал это, когда я ожидал вон то?" Я правильно понимаю? Ares_ekb Что может быть не оптимальным в Entity или DTO классах? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Ares_ekb Встречный вопрос :) Как вы пишите SQL запросы? Вдруг СУБД выполнит их не оптимально? Ares_ekb Где гарантия, что СУБД правильно поняла ваш запрос? Вдруг вы имели в виду другое? Ну или я перефразирую: никто из ваших джунов, приходивших к вам на проект, ни разу не задавал вопрос "почему генератор сгенерировал это, когда я ожидал вон то?" Я правильно понимаю? Ares_ekb Что может быть не оптимальным в Entity или DTO классах? + Поддерживаю. Мысли правильные. Например, набросать аннотации для хибера не трудно и автокодом, но заставить его выполняться в приемлемое время - это задача уже не под силу автогенераторам. Здесь знание контекста необходимо и творческий подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:39 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb mayton Word - не надо. Мои аналитики уже лет 7 не знают что такое Word. Они лабают на confluence в markup языках. Шучу конечно. Word конечно они видят. Но его роль в цикле разработки весьма нивелирована. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 18:47 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Я выше не случайно говорил про линейку. В архитектуре есть понятие оверхед. Вот ваш метод _в большинстве crud проектов_ - оверхед. В небольшой части, например ERP это эффективно ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 19:15 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, генератор из OCL в XPath/Java писался не для разработчиков, а для аналитиков. Они вообще не знают, что там есть какой-то генератор, они просто пишут спецификации правил. Раньше они писали их на русском языке, в части правил вообще невозможно было понять, что имеется в виду, их можно было интерпретировать как угодно. Эти правила отдавались системным аналитикам, которые во всём этом разбирались и писали чуть более детальную постановку разработчику. Разработчик во всём этом находил ещё кучу неоднозначностей или реализовывал как считал правильным. Затем всё это тестировалось. Причём протестировать задача не из простых. Представьте документ с 300 полями и 1000 правил валидации эти полей из разряда "если в таком-то поле указано то-то, то сумма таких-то полей должна быть такой-то". Сколько тестов нужно написать, чтобы всё это проверить? А это только один документ из десятков. Плюс правила постоянно меняются. Когда предметные специалисты стали писать правила не на русском языке, а на формальном (на самом деле конечно они не сами их писали, а с помощью обученных системных аналитиков), то все эти этапы (интерпретация правил на русском языке, реализация их в коде, тестирование) просто потеряли актуальность. Затрачиваемое время уменьшается на порядок. Конечно генератор может работать неправильно, но протестировать его проще, чем постоянно тестировать эти тыщи правил. Конечно аналитики могут написать неправильную спецификацию правила и тогда для неё сгенерится неправильный код. Но вероятность того, что они напишут неправильное правило на русском языке и что его неправильно поймут и реализуют существенно выше. Поскольку эти правила описаны на формальном языке (а не на русском языке и не в коде), то мы можем автоматически сгенерить тесты по спецификациям правил. Можем автоматически проверить правила на противоречивость (например, два правила одновременно соблюдаться никак не могут), на избыточность, ... Правда мы этого не делали :) но возможность есть. В принципе, для Java кода есть всякие статические анализаторы, генераторы тестов. А для очень ограниченного DSL эти вещи делать гораздо проще, чем для ЯП общего назначения. Поэтому никаких джунов, которые не понимали почему сгенерился не тот код там не было. Вопросы оптимальности сгенеренного кода там тоже не стояли. Потому что в документе слишком мало полей, и они слишком однотипные, чтобы требовалось что-то оптимизировать под разные типы документов или разные типы правил. Если код генерится нормально, то он нормально будет работать на любых документах. Если завтра появится документ с миллиардом полей, тогда, да, нужно будет допиливать генератор. Насчет того, чтобы запустить код и посмотреть как он работает. 1) Раньше они просто писали правила на русском языке, эти правила могли быть вообще бессмысленными, ссылаться на несуществующие поля документа. То что они пишутся на формальном языке и валидируются в соответствии со структурой документа - это уже огромный шаг. 2) Если они их как-то формулировали на русском языке, то могут как-то сформулировать и на формальном. Математики же как-то пишут формулы не запуская их :) OCL - это по сути тот же язык формальной логики (переменные, предикаты). 3) Вообще, запустить и посмотреть это полезная функциональность, мы её не делали, но можно было бы сделать. Точнее правила нельзя было запускать в процессе написания. Но можно их написать, нажать кнопку генерации, загрузить тестовый документ и получить детальный HTML-отчет о валидации с возможность кликнуть на ошибку, увидеть элемент документа, для которого найдена ошибка. Увидеть какие правила успешно отработали и т.п. Ну т.е. запускать правила можно. Если что-то идёт не так, то либо правило написано неправильно, либо нужно поправить генератор. Насчёт кодогенерации для разработчиков, а не аналитиков. Здесь история та же. На чаше весов: 1) потратить на этот проект 10 лет или 2) сделать его за год с кодогенераторами. Если в проекте возникает куча однотипного кода, то есть два способа с этим справиться: 1) Можно вынести какие-то вещи в конфиги, в аннотации. Написать интерпретатор для всего этого и в рантайме как-то обрабатывать. В определенном пространстве имен находим классы с определенными аннотациями, ищем в них методы с определенными аннотациями, ищем ещё что-то, что-то со всем этим делаем. 2) Другой вариант делать то же самое, но в design-time. Для конкретики банальный пример. Есть много разных object mapper'ов. Их можно разделить на две категории: 1) те которые конфигурируются с помощью аннотаций, билдеров и т.п., в рантайме ищут у объектов атрибуты с одинаковыми названиями 2) те которые основаны на кодогенерации. Как-раз 1-ый вариант обычно работает медленнее, потому что очевидно есть накладные расходы. И самое главное, чтобы понять работают они или нет их нужно запустить! Фиг знает, что там вообще происходит. А если для мепперов код сгенерен, то я просто смотрю этот код и сразу вижу что не так. И, вообще, почему вы считаете, что сгенеренный код - это что-то обязательно непонятное? У нас генерится ровно такой код (с форматированием и комментариями!), который мы написали бы вручную. Мне просто лень писать однотипный код, но если бы я его писал или если бы его писали джуны, то он был бы точно таким же с точностью до пробелов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 19:49 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, насчет оверхеда сложный вопрос. Наверное в большинстве проектов возникает какая-то рутина в разработке. Я очень ленивый человек, писать два раза аналогичный код мне очень лень. Как только такое возникает я сразу же ищу варианты автоматизации. Если кодогенератор на 10 строк сгенерит мне 1000 строк, то какой тут оверхед. Если с нуля во всё это погружаться, то наверное, да, нужно кучу всего прочитать, попробовать кучу разных инструментов, написать кучу этих генераторов. Чтобы показать насколько я ленивый. У нас есть конструктор инструментов моделирования, в котором можно добавляться новые нотации. Начнём с того, что в большинстве инструментов либо хрен добавишь новую нотацию моделирования, они жёстко зашиты в коде, либо в модели можно добавлять новые значки, но модели просто на уровне картинок, их потом дальше невозможно анализировать. У нас не так, каждая нотация - это полноценный язык моделирования. Отдельно описывается 1) семантическая составляющая моделей (типы объектов, типы связей, атрибуты), 2) отдельно визуальная составляющая (какие значки должны быть на диаграммах, какая палитра инструментов, что должно происходить при создании объектов, при удалении, при переприсоединении связей, какие формы свойств должны быть - короче полностью описывается редактор диаграмм со всем операциями над моделями). И 1, и 2 у нас описаны в виде моделей. Методолог может просто накликать всё это мышкой, в том числе достаточно сложные вещи (просто добавление объектов в модель, добавление объектов из справочника с помощью диалога, всякие правила валидации - что обычно реализуется в коде). Но мне на столько лень делать даже это, что написал генератор этих спецификаций редакторов диаграмм из метамоделей. И конечно это экономит кучу времени. Лень файлы локализации писать, лень типовой Java-код писать, лень документацию писать. Наверное это единственное, что движет мной в работе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 20:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, Я тоже ленивый. Только я изучаю новые технологии. Это молодежнее)) Выше вам сказал, что большинство типовых действий с сущностью делает аннотация бута в контроллере. То есть не надо вообще писать find сучности, удаление ит.д. А вы это будете генерировать код генератором. Вместо аннотации нагенерите код карл! Если у вас много лишнего кода, может вам ЯП сменить? Java сама по себе многословна. Поэтому границы разумности прочертить сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 20:50 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Лень файлы локализации писать, лень типовой Java-код писать, лень документацию писать. Наверное это единственное, что движет мной в работе :) Документацию пишет технический писатель. Что осталось? Типовой код? Дык надо конкретнее. Кому то и скобки типовой код. ... Вам надо уйти с прогеров в консультанты и постановщики. Вот и всё. И вам будет пофиг, есть там геттеры в каждом классе или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 20:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
Аннотации вообще странно заходили в язык. Изначально их область применения была обще-системной. @Override, @Deprecated и никакой возможности создать свои. Далее "свои" были созданы. Но практика применения их была сугубо декларативна. И в этом - недостаток. В императивном языке - декларативный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 21:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
У меня разрыв шаблона - топик Стаса со срачем на N страниц, но Стаса нет. Бывает же. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2021, 22:44 |
|
jdk17
|
|||
---|---|---|---|
#18+
И это еще я не начал со скалой и ФП.. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 11:37 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha У меня разрыв шаблона - топик Стаса со срачем на N страниц, но Стаса нет. Бывает же. Суслика видишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 12:17 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080, чет топик пошел не в то русло совершенно. Уже упоминал это, поэтому повторюсь: в 2021 году нужно быть полным имбецилом, чтобы делать проекты на gradle. Изначально, когда gradle появился, там декларировались вполне себе нормальные идеи (на эту утку куча проектов повелась), сейчас же, спустя время, стало понято, что получилось полное УГ - здесь одного того, что проекты годовалой давности в IDE не открываются, вполне достаточно понять, что оно не работает. localhost8080 нужно срочно свитчиться на 17ю куда спешить хрен его знает, такое ощущение что 20 лет никто ничего толком не делал и все ждали, когда же 17 версия жавы релизнится, а теперь уж заживем. Так просто вопросы для справки: там вывод типов в лямбдах исправили, или нужно все равно руками кастовать, а в исключения? А в женериках уже не нужно <?> к <Object> руками приводить? А TripleFunction, TripleConsumer и пр. добавили? а какие-то идеи из vavr.io взяли? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 15:26 |
|
jdk17
|
|||
---|---|---|---|
#18+
Обычно сборка проектов на gradle требует в обязательном порядке инструкции "от создателя". И еще желательно его (создателя) тушку иметь рядом чтоб наносить удары. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 15:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Аннотации вообще странно заходили в язык. Изначально их область применения была обще-системной. @Override, @Deprecated и никакой возможности создать свои. Далее "свои" были созданы. Но практика применения их была сугубо декларативна. И в этом - недостаток. В императивном языке - декларативный подход. Аннотации позволяют создать свой метаязык, да декларативный, но в принципе достаточно функциональный. А так, мало кого смущают императивные расширения в декларативном SQL. Наоборот, считают что это хорошо. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2021, 16:23 |
|
jdk17
|
|||
---|---|---|---|
#18+
а на чем сейчас билдят java проекты? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 00:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
mad_nazgul ... Аннотации позволяют создать свой метаязык, да декларативный, но в принципе достаточно функциональный. А так, мало кого смущают императивные расширения в декларативном SQL. Наоборот, считают что это хорошо. :-) Императивные расширения SQL дают пользователю SQL впечатление, что именно он управляет вычислением. Позволяют в разговоре использовать термины вроде "алгоритм". Умно это вообще как заход, или не очень - зависит и от точки зрения и от шаловливых ручек желающего попрактиковаться в "алгоритмах" и "управлении вычислением". Аннотации скрывают от императивного программиста детали истинной реализации конкретного алгоритма. То ли потому, что это вспомогательные, ненужные для понимания основного кода детали, то ли еще по какой важной причине. Вероятно во всем нужен баланс. Да, принято посмеиваться над использующими императивные расширения SQL персонажами (например, я как раз такой и есть) - типа - "тоже программисты". Но использование аннотаций в неменьшей степени превращает программистов в "тоже пользователей SQL". Обе вариации имеют продолжение в поддержке/модификации системы в связи проблемой стандартизации деклараций. В первом варианте - а как же вот это переписывается хотя бы на другой вариант диалекта SQL, не говоря о другой реализации императивных расширений. Во втором случае - человека заведомо нещадно побьют, если ему на самом деле взбредет в голову использовать набор аннотаций собственного изобретения, поскольку нафиг бы они кому сдались после него. Но и просто замена чужой, обязательной для всех к использованию, "библиотеки поддержки проекта" легко может оказываться задачей того же уровня сложности, что и переписывание запроса/хранимой процедуры с одного диалекта SQL на другой. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 01:44 |
|
jdk17
|
|||
---|---|---|---|
#18+
booby ... Но и просто замена чужой, обязательной для всех к использованию, "библиотеки поддержки проекта" легко может оказываться задачей того же уровня сложности, что и переписывание запроса/хранимой процедуры с одного диалекта SQL на другой. Точнее, речь идет не о замене фрагмента, конечно, а о переводе "системы". Когда речь идет о компактных системах, сложностью в сотню-другую человеко-лет - нет больших проблем, сел, да перевел, почти в один присест. Для систем в хотя-бы в несколько тысяч человеко-лет, не говоря о десятках тысяч, вопрос перевода может оказаться дорогим, вполь до запредельной, запретительной стоимости. Ладно, SQL на то и SQL, чтобы быть стандартным, но неповторимым. А случае аннотаций, речь вроде идет всего лишь о замене одной одной библиотеки на другую. Их что, специально выдумывали, чтобы привязать пользователя императивного языка к производителю библиотеки? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 02:06 |
|
jdk17
|
|||
---|---|---|---|
#18+
забыл ник а на чем сейчас билдят java проекты? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 13:12 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha забыл ник а на чем сейчас билдят java проекты? Ну прозвучало мнение что gradle говно. С мнением не спорю, но так как немного отстал от java мейнстрима хочу понять что изобрели взамен? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:19 |
|
jdk17
|
|||
---|---|---|---|
#18+
Garrick забыл ник, Maven В мою бытность java разработчиком gradle как раз позиционировался как замена мавену, что-то пошло не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:44 |
|
jdk17
|
|||
---|---|---|---|
#18+
забыл ник Ну прозвучало мнение что gradle говно. С мнением не спорю, но так как немного отстал от java мейнстрима хочу понять что изобрели взамен? ну я решил уточнить, у нас же принято в любом топике о чем угодно трындеть ;) забыл ник что-то пошло не так? х.з. 99.(9)% android в принципе только на нем. Лично я, как имбецил, spring boot проекты тоже на нем собираю , про других не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha забыл ник Ну прозвучало мнение что gradle говно. С мнением не спорю, но так как немного отстал от java мейнстрима хочу понять что изобрели взамен? ну я решил уточнить, у нас же принято в любом топике о чем угодно трындеть ;) забыл ник что-то пошло не так? х.з. 99.(9)% android в принципе только на нем. Лично я, как имбецил, spring boot проекты тоже на нем собираю , про других не знаю Да не, все норм. Я просто думал от жизни отстал. Я и скала проекты почти все на мавене собираю) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
Киллер-фича gradle - это параллельная сборка несколькими процессами ОС и поддержка их в пуле уже запущеных процессов. Если этот функционал перенести в maven - то тогда острая необходимость в gradle - отпадет. Можно отдельно обсудить языковые возможности Gradle/Groovy/Kotlin стека но мне кажется что каких-то нерешаемых задач они всё равно не решают. Всё будет сводится к кодо-генерации или интеграции со сторонними языками и фреймворками. В крайнем случае в maven-проекте можно создать свой кастомный плагин компилляции который тоже самое сделает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
Меня в Maven смущали гигантские XML-конфиги, когда нужно было Xtext подключать или что-то подобное. В Gradle всё было проще и понятнее. Плюс ощущение, что Gradle всё быстрее собирал, что в нём инкрементальная сборка лучше работает. Хотя может я просто не умею настраивать Maven. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 14:18 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Меня в Maven смущали гигантские XML-конфиги, когда нужно было Xtext подключать или что-то подобное. В Gradle всё было проще и понятнее. Плюс ощущение, что Gradle всё быстрее собирал, что в нём инкрементальная сборка лучше работает. Хотя может я просто не умею настраивать Maven. Есть две крайности: - максимально гибкая сборка - ant, gradle, bazel - жёсткая структура - maven Проблема gradle - в том, что в проекте можно написать всякого добра, что потом фиг разберёшься. А главное- любая IDE так же с трудом всё это понимает и начинаются тормоза в открывании, обновлении, сборке. Maven другая проблема - вроде открывается быстро, пока тебя устраивает жёсткие рамки системы сборки. Как нет - начинаются самописные плагины, которые при неудачном стечении обстоятельств вызывают демонов ада (Ada). И да - начинается "фиг поймёшь, что это" и "плагин устарел, а заменить не можем" - потому что плагин для мавена это тот ещё квест (грэдловый и отладить можно, в отличии от). Оба решения так себе - надо создавать новые, которые были бы лучше. Чтобы соединить декларативное описание проекта с простотой кастомизации грэдла. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 15:34 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha х.з. 99.(9)% android в принципе только на нем. Лично я, как имбецил, spring boot проекты тоже на нем собираю , про других не знаю chpasha с возрастом начинаешь дорожить временем - его уже слишком жалко на всякую фигню типа компиляции в командной строке и написания геттеров (а так же чтение кода с сотнями оных) ;) - мне не интересен блокнот, мне пофигу мавен или gradle, мне важно не отвлекаться от основной задачи Чет у тебя одно другому противоречит: дорого время, но делаем на gradle ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
Alexey Tomin потому что плагин для мавена это тот ещё квест (грэдловый и отладить можно, в отличии от). Хорошая тема. У меня тоже периодически возникают вопросы к кастомным плагинам. Думаю достойно отдельного топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов Чет у тебя одно другому противоречит: дорого время, но делаем на gradle ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 18:46 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha, +1 В андроиде все работает из каробки потому что ни у кого и в мыслях нет что то компилировать в консоли без IDE. В Java все по другому. Как в линуксе. А в андроиде как в винде. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 19:37 |
|
jdk17
|
|||
---|---|---|---|
#18+
booby Но использование аннотаций в неменьшей степени превращает программистов в "тоже пользователей SQL". Обе вариации имеют продолжение в поддержке/модификации системы в связи проблемой стандартизации деклараций. В первом варианте - а как же вот это переписывается хотя бы на другой вариант диалекта SQL, не говоря о другой реализации императивных расширений. Во втором случае - человека заведомо нещадно побьют, если ему на самом деле взбредет в голову использовать набор аннотаций собственного изобретения, поскольку нафиг бы они кому сдались после него. Но и просто замена чужой, обязательной для всех к использованию, "библиотеки поддержки проекта" легко может оказываться задачей того же уровня сложности, что и переписывание запроса/хранимой процедуры с одного диалекта SQL на другой. Ну в spring-boot аннотации уже не в моде. Сейчас просто пишут стартеры. Добавил зависимость, получил огромную часть функционала. :-) А так аннотации вполне себе нормальное решение для использования инфраструктурного кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 19:40 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha Ну на чем-то же надо - с андроидом просто выбора нет, т.е. хоть немного нужно в gradle шарить, так какой мне смысл зоопарк разводить. Оно работает и кушать не просит, что тут еще сказать. Я не могу опровергнуть то, что говоришь ты или майтон, но у меня вот так Если сравнивать gradle vs maven, то в gradle есть на мой взгляд только две фишки: - возможность запустить конкретную задачу на чистом проекте и она все зависимости между модулями правильно соберет, в maven это выливается в конфигурацию executions, добавление плагина во все модули и в заклинания на CLI - возможность подпереть сборку костылями в buildSrc и build.gradle Больше никаких преимуществ у gradle нет, например: ну что-то он якобы позволяет быстрее компилировать за счет трэкинга изменений, ну во-первых, оно в большинстве случаев работает неправильно, поэтому clean наш друг навеки, во-вторых, если оно действительно долго компилируется, то это повод задуматься над другой структурой проекта. А то что они постоянно меняют API - это вообще треш и угар. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 04:32 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов Если сравнивать gradle vs maven, то в gradle есть на мой взгляд только две фишки: - возможность запустить конкретную задачу на чистом проекте и она все зависимости между модулями правильно соберет, в maven это выливается в конфигурацию executions, добавление плагина во все модули и в заклинания на CLI - возможность подпереть сборку костылями в buildSrc и build.gradle Основной плюс грэдла - с ним можно собрать проект, требующий специфичной магии, типа скачивания бинарников, разные сборки под разные платформы и прочее. Более гибкий только Bazel Если вам не доводилось работать с проектами, которые не лезут в прокрустово ложе мавена - это не заслуга мавена, это вам просто повезло. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 08:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
Alexey Tomin Основной плюс грэдла - с ним можно собрать проект, требующий специфичной магии, типа скачивания бинарников, разные сборки под разные платформы и прочее. Более гибкий только Bazel Если вам не доводилось работать с проектами, которые не лезут в прокрустово ложе мавена - это не заслуга мавена, это вам просто повезло. так а зачем такие проекты делать-то? Мне однажды довелось ant на gradle переводить, вот тогда я подумал, что вот, gradle более гибок и не нужно будет структуру перелопачивать, поэтому на gradle все будет круто - лучше бы структуру переделал и на maven бы перевел. Магия со скачиванием чего-то довольно просто решается через упаковку бинарников и maven-dependency-plugin, однако даже тут я не уверен что нужно так делать а не отдать на откуп CI, сборки под разные платформы - это точно ответственность CD. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 08:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp chpasha, +1 В андроиде все работает из каробки потому что ни у кого и в мыслях нет что то компилировать в консоли без IDE. В Java все по другому. Как в линуксе. А в андроиде как в винде. Интересно. А что Android-команды никогда не используют CI/CD? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 09:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов chpasha Ну на чем-то же надо - с андроидом просто выбора нет, т.е. хоть немного нужно в gradle шарить, так какой мне смысл зоопарк разводить. Оно работает и кушать не просит, что тут еще сказать. Я не могу опровергнуть то, что говоришь ты или майтон, но у меня вот так Да Вы что?! Вас сейчас помидорами закидают за то, что упомянули "никому не нужный и дорогущий" Apple. Кстати говоря, вышли у них новые процессоры, которые, по сути, оставляют не у дел Intel и AMD в сфере премиальных решений для десктопа. Ну и по своей наивности полагая, что это и так понятно всем, поделился этой замечательной новостью, что, мол, невероятно - теперь в маленький ноутбук можно вместить high-end конфигурацию с невероятно низким энергопотреблением и быстродействием... и тут же услышал "Ха-ха, а кто мерял? Apple - дорогое гавно" и т.д. и т.п. Так что чур Вас! Не упоминайте Apple никогда и ни за что. Кстати, увидите, как тут заведутся, небось. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
про яблоки Большой Синий Кит Кстати говоря, вышли у них новые процессоры, которые, по сути, оставляют не у дел Intel и AMD в сфере премиальных решений для десктопа. Ну и по своей наивности полагая, что это и так понятно всем, поделился этой замечательной новостью, что, мол, невероятно - теперь в маленький ноутбук можно вместить high-end конфигурацию с невероятно низким энергопотреблением и быстродействием... и тут же услышал "Ха-ха, а кто мерял? Apple - дорогое гавно" и т.д. и т.п. Так что чур Вас! Не упоминайте Apple никогда и ни за что. Кстати, увидите, как тут заведутся, небось. :) исходя из собственного опыта техника от Apple у меня служит раза в два дольше, чем ширпотреб, так что в долгосрочной перспективе разница в цене на несколько десятков процентов вполне себя оправдывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp chpasha, +1 В андроиде все работает из каробки потому что ни у кого и в мыслях нет что то компилировать в консоли без IDE. В Java все по другому. Как в линуксе. А в андроиде как в винде. Интересно. А что Android-команды никогда не используют CI/CD? Никогда и ни за что! :) Настоящие андроид-программисты собирают программы исключительно в ИДЕ. У них есть специально выделенный человек-контейнер для этого - запускаешь пайплайн на Дженкинс, посылается сигнал этому человеку, что, мол, собери APK для такого-то бранча в таком-то проекте... ну этот человек берет сорсы и билдит в своей идешке, а потом подкладывает APK в нужное место и resume пайплайн. Ну или пишут авто-скрипт для запуска ИДЕ и билда в ней апк - это уже если продвинутые. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов про яблоки Большой Синий Кит Кстати говоря, вышли у них новые процессоры, которые, по сути, оставляют не у дел Intel и AMD в сфере премиальных решений для десктопа. Ну и по своей наивности полагая, что это и так понятно всем, поделился этой замечательной новостью, что, мол, невероятно - теперь в маленький ноутбук можно вместить high-end конфигурацию с невероятно низким энергопотреблением и быстродействием... и тут же услышал "Ха-ха, а кто мерял? Apple - дорогое гавно" и т.д. и т.п. Так что чур Вас! Не упоминайте Apple никогда и ни за что. Кстати, увидите, как тут заведутся, небось. :) исходя из собственного опыта техника от Apple у меня служит раза в два дольше, чем ширпотреб, так что в долгосрочной перспективе разница в цене на несколько десятков процентов вполне себя оправдывает. аналогично Согласен, техника Apple служит дольше, а что не менее важно, так это macOS, которая по сути затыкает за пояс остальные OS. На днях принесли мне MacBook Air early 2015 - 2 ядра (4 с гипертредингом), 4 гига 1600 памяти с yosemite. Люди используют его по большей части только для серфинга в инете и как печатную машинку. Попросили актуализировать - обновил до BigSur - жуть, все работает и не тормозит. После запуска системы занят 2.3 гига оперативки, 1.6 гига свободно, никакого свопа. Система живая - отклик хороший. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов исходя из собственного опыта техника от Apple у меня служит раза в два дольше, чем ширпотреб, так что в долгосрочной перспективе разница в цене на несколько десятков процентов вполне себя оправдывает. проще чаще покупать несколько раз дешёвые, и иметь чаше обновку, модную... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя проще чаще покупать несколько раз дешёвые, и иметь чаше обновку, модную... На счёт "модной" это как раз наоборот ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:50 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp chpasha, +1 В андроиде все работает из каробки потому что ни у кого и в мыслях нет что то компилировать в консоли без IDE. В Java все по другому. Как в линуксе. А в андроиде как в винде. Интересно. А что Android-команды никогда не используют CI/CD? а разве с CI связано что стадия разработки в Java происходит ВНЕ IDE а в андроиде только в IDE? Имхо CI вообще ни при чём. Java вернулась в прошлое тысячилетие. А гугл был всегда впереди). В Java стало как в DOCe - скачали стартер бута - в командной строке ввели - "всё стало зелёным" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:50 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя Андрей Панфилов исходя из собственного опыта техника от Apple у меня служит раза в два дольше, чем ширпотреб, так что в долгосрочной перспективе разница в цене на несколько десятков процентов вполне себя оправдывает. проще чаще покупать несколько раз дешёвые, и иметь чаше обновку, модную... Покупайте, так и быть. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 10:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов так а зачем такие проекты делать-то? Они разные бывают. Иногда нужно использовать нативные компоненты. Иногда их надо прямо тут собирать. Вообще если задуматься - можно бы всё решить плагинами мавена, но почему-то под андроид и котлин-мультиплатформ их нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит теперь в маленький ноутбук можно вместить high-end конфигурацию наконец-то идея перестанет тормозить mayton Интересно. А что Android-команды никогда не используют CI/CD? с чего такие дикие выводы. с gradle в командой строке все ок, проблемы с ним если и есть, то как правило, в интеграции с IDE, я бы даже сказал, что чаще всего (лично у меня) с Android+IDE - там все сильно сложнее, чем в каком-нибудь спрингбут-проекте т.к. андроид-плагин делает овердофига магии ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:40 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha с чего такие дикие выводы. с gradle в командой строке все ок, проблемы с ним если и есть, то как правило, в интеграции с IDE, я бы даже сказал, что чаще всего (лично у меня) с Android+IDE - там все сильно сложнее, чем в каком-нибудь спрингбут-проекте т.к. андроид-плагин делает овердофига магии Я - ХЗ. Я просто спросил Petro. Я не знаю как они там игровые проекты собирают. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:05 |
|
jdk17
|
|||
---|---|---|---|
#18+
chpasha Большой Синий Кит теперь в маленький ноутбук можно вместить high-end конфигурацию наконец-то идея перестанет тормозить Я считаю, что в подавляющем большинстве случаев тормозят не программы, а пользователи. И это никак не исправить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:16 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Я считаю, что в подавляющем большинстве случаев тормозят не программы, а пользователи. В моей эпсилон окрестности тормозят именно "программы". "Магия данных". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 19:51 |
|
jdk17
|
|||
---|---|---|---|
#18+
Нам очень сложно будет подшить тормоза IDE к провалу проекта например. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 20:17 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Нам очень сложно будет подшить тормоза IDE к провалу проекта например. Ну сваливать отсутствие профессионализма на тормозящее ПО - это глупость *в принципе*. Кстати говоря, нужно ведь и уметь пользоваться:. это всего касается: и ПО, и каких-то строительных инструментов. Я знаю *программистов*, имеющих прекрасный сетап, но при этом у них почему-то вечно все виснет, не работает, тупит, перезагружается и т.п. По какой причине - даже не знаю.. может, глупые? :) есть ведь глупые доктора, инженеры. Кстати, важно еще понимать, что, устанавливая взломанное ПО, вы потенциально начинаете для кого-то майнить какие-нибудь коины. Может, из-за этого тормозит ПО, система? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:04 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я не думаю что java - подходящая среда для майнинга. Кстати в плане энергетики майнинг - это самая затратная вещь. Я вот думаю что капец криптовалютам настанет когда совокупная часть энергопотребления на поддержку транзакций будет серъезно бить по экономике некоторых стран. Или надо поменять концепцию. Proof-of-work заменить на .... proof-of-чего-нибудь другое. Да и вообще. Использовать чейны блоков для других дел. Вести реестры и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:19 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Я не думаю что java - подходящая среда для майнинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич, Все верно. Только тот же майнинг может идти в том же процессе - почему бы и нет. Думаю, просто создают отдельный поток и все. По поводу веб майнинга, кстати, давно есть “no coin” фильтры во всякого рода AdBlockers ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton proof-of-чего-нибудь другое Например, есть сайт . Это типа leetcode для математиков. Только на leetcode фиг его знает корректно работает алгоритм или нет, тесты проходит, по времени и памяти укладывается в лимиты и ладно. А на Proving for Fun нужно формально доказать теорему для всего множества значений, без всяких тестов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:38 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич mayton Я не думаю что java - подходящая среда для майнинга. Кукушка на JS не соберет много даже за сутки майнинга. Сейчас майнерам даже видеокарт мало. Они покупают спец-железо которое только и заточено на решение одной узкой задачи. Лет несколько назад когда был анонсирован Web-Assembly, на эту тему было бы интересно поговорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:49 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Кукушка на JS не соберет много даже за сутки майнинга. Как говорится, "С Миру по нитке..." ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:57 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb mayton proof-of-чего-нибудь другое proof-of-rank. Предлагает некий "кибердед". Понятия не имею кто это. Но вот услышал недавно. [spoiler] ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 17:59 |
|
jdk17
|
|||
---|---|---|---|
#18+
Garrick mayton Кукушка на JS не соберет много даже за сутки майнинга. Как говорится, "С Миру по нитке..." Именно! В этом и суть. Это касается любых распределенных вычислений: есть целые научные программы, после присоединения к которой устанавливаешь на свой комп их ПО и даешь свои вычислительные мощности им, причем там все настраиваемо: когда, сколько и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 18:15 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит Garrick пропущено... Как говорится, "С Миру по нитке..." Именно! В этом и суть. Это касается любых распределенных вычислений: есть целые научные программы, после присоединения к которой устанавливаешь на свой комп их ПО и даешь свои вычислительные мощности им, причем там все настраиваемо: когда, сколько и т.п. Я согласен что это интересно и забавно. Просто я-бы не вкладывался в браузерз как клиент майнинга. Время генерации (подписания) блока в Биткоине сегодня составляет примерно 10-15 минут. И следовательно эти 10-15 минут браузеры должны быть открыты и должны хотя-бы интерактировать по сети с инфраструктурой проксей или хабов для таких браузерных майнеров. Очень маловероятно что за 10 минут JS приложение решит задачу которую сегодня с трудом решают на стеках С++/CUDA/OpenCL/ASIC. При слабом и ненадёжном клиенте майнинга я-бы просто не вкладывался в эту задачу. Вот как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 11:38 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, Так для вас работает не один браузер, понимаете? - а десятки/сотни тысяч, например. Клиент заходит, подгружает скрипт - и все, он готов выполнять юнит вычислений. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 11:45 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, P.S. Вы бы не вкладывались?! Это же золотое дно: главное иметь возможность разбить вычисление на как можно большее количество юнитов. И чем большее разбитие возможно - тем лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 11:49 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я понимаю экстенсивную модель майнинга. Чем больше узлов на тебя работает - тем больше вероятность получить комиссию. Просто браузер ... такое себе. Кстати как в JS можно делать булевы операции над массивами бит? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 12:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Кстати как в JS можно делать булевы операции над массивами бит? предназначен для вычислений ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 12:05 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя mayton Кстати как в JS можно делать булевы операции над массивами бит? предназначен для вычислений А есть пример hello-world или quick-start чтоб показать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 12:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton А есть пример hello-world или quick-start чтоб показать? потому как webasm не очень подходит для работы с dom - поэтому большой нужды нет.... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 12:18 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя mayton А есть пример hello-world или quick-start чтоб показать? потому как webasm не очень подходит для работы с dom - поэтому большой нужды нет.... Я как только новость про webassembly прочтал (несколько лет назад) так первая идея приминения и была - майнинг. Потому как в визуальном плане браузер достиг более менее совершенства. Даже игрушки в unity/webgl можно делать. И куда впихнуть вычислительную мощность без визуальной составляющей? ХЗ. Только в распределенные вычисления. Вообще конечно с пользовательской точки зрения не стоит нагружать браузер такой платформой. И так бедные ноутбуки перегреваются и батарея в п..зду уходит. Так что такие штуки антивирус по идее должен считать вредными. Я еще не знаю как он будет детектить. По загрузке CPU чтоли. Но как-то надо такие активности отсекать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 12:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton И куда впихнуть вычислительную мощность без визуальной составляющей? ХЗ. Только в распределенные вычисления. была информация про возможности работать с канвас в воркере - вот это интересно (правда про хром было) хотя тоже не очень большой выигрыш по времени получается ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 13:00 |
|
jdk17
|
|||
---|---|---|---|
#18+
Большой Синий Кит mayton, Так для вас работает не один браузер, понимаете? - а десятки/сотни тысяч, например. Клиент заходит, подгружает скрипт - и все, он готов выполнять юнит вычислений. думаю просто генерят тысячные доли в надежде что когда нибудь биток до 1млн дорастет. По обыкновение отчего бы не написать майнинг в js, такой себе челендж. Десятки других программ, ну например CRM всякие, тоже пишут новые ежегодно о которых никто никогда не узнает и которые умирают не привлекая внимания. Там уже готовые скрипты есть бери и ставь на сайт главное чтоб в гугле не забанили. успевай себе менять домены (успевай намайнить больше прежде чем забанили) это жестокий и конкурентный бизнес. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 13:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton вадя пропущено... что-то есть, но я ещё не смог врубиться что для этого надо, какой комплект ide и прочее. потому как webasm не очень подходит для работы с dom - поэтому большой нужды нет.... Я как только новость про webassembly прочтал (несколько лет назад) так первая идея приминения и была - майнинг. Потому как в визуальном плане браузер достиг более менее совершенства. Даже игрушки в unity/webgl можно делать. И куда впихнуть вычислительную мощность без визуальной составляющей? ХЗ. Только в распределенные вычисления. Вообще конечно с пользовательской точки зрения не стоит нагружать браузер такой платформой. И так бедные ноутбуки перегреваются и батарея в п..зду уходит. Так что такие штуки антивирус по идее должен считать вредными. Я еще не знаю как он будет детектить. По загрузке CPU чтоли. Но как-то надо такие активности отсекать. бытует мнение что такие штуки как webassembly сделаны для того чтобы антивирус не смог их забанить. Например вот такой вот антивирус, установленный у половины планеты AdBlock, Ublock. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 13:34 |
|
jdk17
|
|||
---|---|---|---|
#18+
Это - война брони и снаряда. Она - вечная. Я просто пытаюсь понять как например может работать детектирование угрозы. Ну ... зашел ты на какой-то новостной сайт или таблоид. Но запустился webasm скриптик. Начал что-то там тихо майнить. В какой момент времени можно будет точно определить что это вреднонсный скрипт? Я думаю что тут просто 1-2 rule не достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 13:53 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, у webasm куча ограничений по безопасности, поэтому особо бояться нечего ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 14:20 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Батарея мать ее... счас больше потребляет когда страница рендерится на клиенте всякими реактами и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 14:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ну я не знаю как реакт работает. Но он отрендерил - и достиг стационарного состояния. И встал. Событий нет - нет активности. Только гифки и видосы. А майнинг - он бесконечен. И грузит процессор без ограничений. Собсно это и есть его главная задача. Решать крипто-задачку как можно быстрее. Не успел блок решить - бери следующий блок. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 14:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Но он отрендерил - и достиг стационарного состояния. mayton А майнинг - он бесконечен. если это сравнивать - то да. к сожалению на смартах оценить нагрузку можно только по нагреву и скорости падения заряда. на десктопах есть диспетчеры задач, можно оценить что работает больше. mayton Но он отрендерил ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 17:42 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя если это сравнивать - то да. к сожалению на смартах оценить нагрузку можно только по нагреву и скорости падения заряда. на десктопах есть диспетчеры задач, можно оценить что работает больше. Я думаю что майнинг на смартфоне еще более невыгоден. Там - куча энергосберегающих технологий. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 19:14 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Я думаю что майнинг на смартфоне еще более невыгоден. Там - куча энергосберегающих технологий. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 20:24 |
|
jdk17
|
|||
---|---|---|---|
#18+
Там по идее майнить должен не основной процессор а ядра видяшки. Какая там видяшка? ХЗ. Вот в моём сяоми стоит Mali-G52. Нагрузки на память вроде не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 21:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton а ядра видяшки ферма из нескольких сотен самсунгов, или ксиоми компактно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 21:33 |
|
jdk17
|
|||
---|---|---|---|
#18+
Остался пустяк. Как всем впарить эту ссылку. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2021, 21:39 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя mayton а ядра видяшки ферма из нескольких сотен самсунгов, или ксиоми компактно. Потому что люди попробовали и получилось грустно, в году эдак в 2010 еще можно было. но тогда не было arm72. Сейчас есть arm72 но уже нет 2010 года :) По той же причине почему и ложкой огород копать не стоит, а лопатой есть суп. Вроде можно, но целесообразность вызывает сомнения. Ферма из 300 сотен самсунгов ака samsum s20e например по 45тыр будет в 13_500_000 это гдето 65 видеокарт 3080 гдето по 200тыр Можно например зайти в ДНС и спросить почему samsung s20e а наличии имеется а видеокарты rtx3080 все еще нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 00:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
lleming, это конечно верно. но потребление видях намного больше. с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 05:10 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя lleming, это конечно верно. но потребление видях намного больше. с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок? По той же причине по которой суп не едят вилкой а огород не копают ложкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 13:42 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 14:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
lleming По той же причине по которой суп не едят вилкой а огород не копают ложкой. то что счас это не делают - не значит, что не будут делать. время покажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 14:03 |
|
jdk17
|
|||
---|---|---|---|
#18+
Никанор Кузьмич Процессор в видяхе заточен на проведение только этих операций и выполняет их на порядки быстрее, чем процессор общего назначения. Но любые другие операции он выполняет намного хуже. Нет. Он всё таки чуть более универсален. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 17:17 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя это конечно верно. но потребление видях намного больше. с другой стороны - если вмдяхи такие быстрые, почему на их основе нет материнок? Они не быстрые. Там просто на одном кристалле собрано много мелких АЛУ (thread) которые делают простые операции. Они получают общее задание типа рендеринг 1 кадра изображения и далее распараллеливают его на всех. Кадр скорее всего бъётся на сегменты и каждый thread делает узкую задачу. Например красит полосочку полигона алгоритмом Гуро. Построить какую-либо универсальную архитектуру на таких мелких АЛУ вряд-ли получится. Тут скорее всего самая главная проблема как всегда лежит в нас. В разработчиках. Большинство алгоритмов для бизнеса например нихрена не параллелятся так чтобы получить одно задание и рендерить его со скоростью 120 fps. А рендеринг графики - это узкая задача. Которая имеет мало I/O и мало внутренних блокировок и синхронизаций. С генерацией подписей для битка - получилось удачно. А просто обобщённый алгоритм вы нихрена ни перенесете на графические процессоры. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 17:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я не в курсе на каких видяшках щас майнят. Но еще несколько лет назад слышал что не на видяшках а на таких себе узких устройствах типа такого https://www.ixbt.com/news/2021/04/25/asic-bitmain-antminer-e9-25-geforce-rtx-3090-115-cmp-30hx-240.html Они вроде эффективнее и экономнее ферм из видяшек - но есть другой недостаток. Обычно заточены на 1 алгоритм. И если биток провалится в какое-то дно-днищенское то заменить его оперативно на новую валюту будет либо сложно либо невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 17:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
мы попробовали на 17 залететь,сразу словили баг с десериализацей,понятно что виной всему jackson - но пока еще видимо рано - мало кто успел релизнутся на 17 версию месяца 2-3 наверно еще нужно подождать,хотя это конечно печаль - у меня сейчас например глобальный рефакторинг - и вот свитч с патерн матчингом + запечатнные классы это вот то что мне просто необходимо + рекоды делаю зачем то работу двойную ибо на 17 джаве все придется переписывать... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2021, 21:40 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я как-то нейтрально отношусь ко всем этим синтаксическим изыскам. На Java 1.8 вполне комфортно, Stream API или Time API были действительно существенным улучшением. Всё равно до C# ещё очень далеко в плане всей этой синтаксической жести. Когда писал на C# я конечно всем этим пользовался, но не могу сказать, что в Java очень скучаю по этому. Мне вообще из языков больше всего нравится Lisp. Для Java и C# это недостижимый идеал. И, как это не удивительно, нравится JavaScript, потому что он духом напоминает Lisp. Какие-то извращенцы любители C#/Java/... придумали TypeScript, который нивелирует многие преимущества JavaScript. Ещё нравится Isabelle HOL, там фактически в каждой теории можно создавать свой язык со своим синтаксисом. А в Java/C#/... все эти синтаксические фишечки на мой взгляд особой погоды не делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 09:01 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Я как-то нейтрально отношусь ко всем этим синтаксическим изыскам. все эти синтаксические фишечки на мой взгляд особой погоды не делают. Еще как делают- патерн матчинг не только синтаксический изыск - это реализация патерна посетитель,который широко применятеся везде ,где есть развитые иерархии классов ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 11:05 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Мне вообще из языков больше всего нравится Lisp. Для Java и C# это недостижимый идеал. И, как это не удивительно, нравится JavaScript, потому что он духом напоминает Lisp. Какие-то извращенцы любители C#/Java/... придумали TypeScript, который нивелирует многие преимущества JavaScript. Ещё нравится Isabelle HOL, там фактически в каждой теории можно создавать свой язык со своим синтаксисом. А в Java/C#/... все эти синтаксические фишечки на мой взгляд особой погоды не делают. Common-Lisp, или какой-то коммерческий? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 11:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
По хорошему завидую. Я единственное промышленное применение лиспу видел только в AutoCAD. Да и то там был какой-то свой собственный ограниченный лисп для чертежей. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 12:34 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя lleming По той же причине по которой суп не едят вилкой а огород не копают ложкой. то что счас это не делают - не значит, что не будут делать. время покажет. ну около тысячи лет прошло с момента появления вилки, а с момента появления ложки (ну или чтото ей подобное) наверное уже не одна тысяча лет. Думаешь будущее уже рядом? Совсем недолго осталось как ложки перекочуют в сельское хозяйство и они окончательно исчезнут из столовых приборов ? Не хочется тебя расстраивать и разрушать твой оптимизм ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 14:31 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, к сожалению только Lisp как идея, потому что в коммерческой разработке я его никогда не использовал. Common Lisp слишком большой и там много странных вещей. Scheme нравится больше, он более компактный, но не нравятся гигиенические макросы (define-syntax и т.п.) или я их не понимаю, это кажется усложнением. Наверное больше всего нравится Arc, но он вообще нигде не используется. Clojure и Racket выглядят интересно, но их толком не смотрел. Конечно у меня есть и своя реализация Lisp :) По смыслу она похожа на Arc. В качестве среды разработки, файлового менеджера, NNTP-клиента, браузера и т.п. у меня был конечно Emacs, а в качестве оконного менеджера Sawfish. Мне в лиспе нравится минимализм, что в него не пытаются запихать всё, что только возможно. Всякие синтаксические вещи, проверки типов и т.п. добавляются самими программистами. Не нужно бороться с синтаксисом языка, ждать 10 лет, когда в него подвезут какой-нибудь pattern-matching. Придумывать всякие костыли, чтобы на этапе компиляции обойти ограничения языка или наоборот добавить какую-то логику (как только люди не исхищряются с template в C++). Мне когда-то очень давно нравился C++, потом я прочитал книгу Александреску, его Loki мне казалась чем-то очень клевым. А потом я познакомился с другими языками и понял, что всё это просто борьба с ограничениями языка. В итоге я пришёл к тому, что чем меньше всей этой фигни в языке (разные синтаксические конструкции, статическая типизация и т.п.), тем лучше. В JavaScript как-раз всего этого нет и код писать проще. Если где-то нужны проверки, то можно просто определить какую-нибудь функцию assert или несколько её вариантов для разных случаев и добавлять где требуется. Либо ошибки должны выявляться анализаторами кода. Хотя я не могу сказать, что и статическая типизация - абсолютное зло. Но просто если не получается сделать какую-нибудь специфическую иерархию классов с generic'ами и т.п., то и фиг с ней, можно и в рантайме проверять что требуется. Ещё одна идея, которая мне нравится в лиспе - это отношение к написанию кода как к созданию своего DSL. Скажем, у меня приложение работает с моделями. Для лиспа естественно определить несколько примитивных методов для запросов к этим моделям, для изменения моделей. На основе простейших функций определить более сложные и т.д. В итоге получится внутренне API, минифреймвок для работы с моделями. И всё приложение состоит из таких микрофреймвоков. Это звучит вроде совершенно логично. Но, блин, большинство Java- и других разработчиков, с которыми я сталкиваюсь, пишут код совершенно иначе. Обычно это какой-нибудь класс с кучей полей. В одном методе устанавливаем одно поле, потом вызываем другой метод, в котором читаем это поле и устанавливаем ещё какие-то поля. Сами методы - это куча вложенных циклов, if-ов. Полная каша, в которой вообще ничего невозможно понять. Если капнуть, то оказывается, что эти поля вообще не нужны (потому что они используются просто для передачи данных между методами, а не для хранения долговременного состояния объекта), все эти безумные вложенные циклы можно разбить на несколько повторно используемых методов. В общем что нравится: 1) Минимализм, пусть лучше в языке вообще ничего не будет, чем ждать какой-нибудь очередной синтаксический сахар годами. Например, в JavaScript нет ни Stream API, ни LINQ, но есть итераторы и этого достаточно, чтобы сделать своё Stream API. Или без классов вполне как-то обходились 2) Отношению к языку не как к данности, что если что-то нельзя написать, значит это что-то неправильное. Может просто язык стрёмный 3) Построение кода из небольших самостоятельных блоков (микро-DSL, микрофреймвоков, внутренних API). Люди, которые ни на чём кроме Java не писали, либо впадают в ступор, когда чего-то нет в стандартной библиотеке, либо пишут какой-то лапшакод 4) Конечно же уникальная штука - это макросы. В других языках это решается костылями в виде препроцессоров, шаблонов, рефлексии, аннотаций, кодогенерации, добавления синтаксического мусора, систем типов, а в лиспе всё это закрывается одной конструкцией ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 15:37 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080 патерн матчинг не только синтаксический изыск - это реализация патерна посетитель Например вот: 1) Есть модель . В виде XML-файла она выглядит страшно, но по сути это просто диаграмма классов с наследованием, атрибутами, связями между классами. 2) Из этой модели они сгенерили тонны Java-классов и интерфейсов. 3) В том числе сгенерили и такой класс . Да, в нём куча switch/case и if, но какая разница, сопровождать его всё равно не нужно. Если изменится модель, то все эти классы они просто перегенерят. Причём сейчас этот класс можно сгенерить с паттерн-мэтчингом вместо if. Достаточно чуток изменить шаблон кода и нажать кнопку. 4) Затем мы просто наследуемся от этого сгенеренного класса и переопределяем нужные case-методы. Если модель, для которой нужен visitor достаточно большая, то наверное, да, паттерн-матчинг позволит сделать visitor немного компактнее и надёжнее (мы на этапе компиляции будем знать, что не забыли в коде обойти какие-то классы). Но, на мой взгляд, visitor - это абсолютно типовой код, который нужно генерить и дописывать чего не хватает. Хотя, блин, на самом деле здесь не совсем visitor, а просто switch. И благодаря паттерн-матчингу этот Switch-класс больше не нужен, сейчас действительно этот код можно писать проще, хотя благодаря кодогенерации люди и раньше не особо напрягались, но сейчас и кодогенерация не нужна. Но если нам нужен не просто switch, а более сложный visitor, который рекурсивно обходит дерево, т.е. смотрит какие у объекта вложенные объекты, переходит к ним и так далее, то здесь кодогенерация может и пригодиться, а на голом паттерн-матчинге запаришься писать столько кода. Опять-таки, возвращаясь к лиспу, там вообще таких проблем нет. Не нужно ни ждать много лет паттерн-матчинга, ни генерить код, всё решается макросами. А в Java остаётся либо мучаться и ждать, либо просто генерить нужный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 17:14 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb В итоге я пришёл к тому, что чем меньше всей этой фигни в языке (разные синтаксические конструкции, статическая типизация и т.п.), тем лучше. В JavaScript как-раз всего этого нет и код писать проще. Если где-то нужны проверки, то можно просто определить какую-нибудь функцию assert или несколько её вариантов для разных случаев и добавлять где требуется. Либо ошибки должны выявляться анализаторами кода. Хотя я не могу сказать, что и статическая типизация - абсолютное зло. Но просто если не получается сделать какую-нибудь специфическую иерархию классов с generic'ами и т.п., то и фиг с ней, можно и в рантайме проверять что требуется. Да. В JavaScript есть memory-model напоминающая дерево объектов с полями и ссылками на функции. Есть в этом что-то от вложенных списков Lisp. Но наблюдая за тем как работают сами JS-разработчики я вижу что они практически не могут создать сколь-либо внятного фреймворка. Типичная ситуация - с утра фронт-кодер решает делать свой фреймворк на JS. И вечером он его уже заканчивает. И следующим утром он его выбрасывает в мусорное ведро и... садится писать новый. Тоесть я вижу что % повторного использования кода в JS очень низок. Или... очень низка культура передачи знаний на уровне библиотек и фреймворков. В Java к примеру есть абстракции такие как abstract class, interface, package, bundle, module(java9). Это всё способсвтует разделению декларативной части и реализации. И соблюсти этот баланс в языках - большое искусство. Чтоб интерфейс не был доминирующим или раздражающим (как в доисторических Java Beans). Вот мне сегодня если надо затащить в проект какую-то либу (ну например по работе с NoSQL БД) - лучше всего взять java реализацию. Потому-что я за 15 минут освою интерфейсы и уже буду видеть с helicopter-view то что мне надо для реализации. Подобный челлендж в С++ например чреват ковырянием в обще-системных вещах что отвлекает от главной задачи. Или в go или rust интерфейсная часть будет не так явно выражена и ее еще надо будет визуально найти и осмыслить. Сколько я ни ругал ООП а всё таки есть у него сильная сторона. Скорость освоения библиотеки. Как я буду осваивать новую библиотеку на JS - ХЗ. Мне - неудобно отсутствие типов. И мне нужно понимать где начинается контекст или жизненный цикл объектов с которыми я должен работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 17:19 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Если капнуть, то оказывается, что эти поля вообще не нужны (потому что они используются просто для передачи данных между методами, а не для хранения долговременного состояния объекта), все эти безумные вложенные циклы можно разбить на несколько повторно используемых методов. Я думаю что насчет полей вы скорее всего ошибаетесь. А безумные вложенные циклы в Java-Enterprise разработке тоже являются анти-паттерном и от них избавляются. Возможно если вы покажете код - я пойму в чем было дело. Но вот другие практики - такие как инлайнинг или rollup циклов - в Java делать не принято. Также принято делать компактные строки кода (по 1 оператору на линию). Это упрощает дебаггинг и помогает при git merge. Тоесть такой кейс как написать лямбду в 80 символов длиной - это скорее плохой чем хороший кейс. Вообще главная цель - обеспечить читаемость кода другим человеком. А уж компиллятор как нибудь разберется. Это кстати сказал Мартин Фаулер. Код пишется человеком для людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 17:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, я думаю, что подавляющее большинство JavaScript-библиотек - это просто ужас. Есть исключения типа d3, она построена на одной понятной идее и всё вокруг неё крутится. Вопрос нужны ли для JavaScript вообще какие-то фреймвоки. HTML, CSS, SVG и стандартные API (WebGL, ...) позволяют делать крутейшие вещи, которые на каком-нибудь SWT запаришься делать. На мой взгляд, приложение в принципе должно состоять из микрофреймвоков. Если нет хороших готовых, то остаётся писать свои. Правда нет гарантии, что получится лучше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 17:38 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb 1) Минимализм, пусть лучше в языке вообще ничего не будет, чем ждать какой-нибудь очередной синтаксический сахар годами. Например, в JavaScript нет ни Stream API, ни LINQ, но есть итераторы и этого достаточно, чтобы сделать своё Stream API. Или без классов вполне как-то обходились Я, читая книжку SICP изучал mit-scheme. Ни для какой-то цели. Просто так. Как забавный мозговой эксперимент. Тоесть я вообще не ставил цели использовать ским ни в какой продуктовой разработке. Просто проверял себя чтобы не заржавел. Так вот списки и ленивые списки всё таки различаются по конструированию. Обычное конструирование списков Код: java 1.
ленивое Код: java 1.
В противоположность в Haskell например все списки изначально декларированы как ленивые и stream api - органичен. Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 17:47 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, я не могу показать код из-за NDA, но там эпичные вещи. Эпичные вещи долго описывать. Приведу такой пример (псевдокод): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Ни selection, ни getName() нигде больше не используются. getName() однозначно не потребуется переопределять в дочерних классах, да, и дочерних классов тоже быть не должно. Зачем это поле? Зачем этот метод? Если так уж хочется сделать метод, то почему бы не передавать туда selection как аргумент? Ну, тут ещё ладно, глядя на этот код можно понять о чём он. Но когда таких полей и методов десятки, то вообще ничего не понять. Для начала что-нибудь такое (поля/методы желательно перемешать, чтобы было непонятно что в какой очередности вызывается, где и зачем используется): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Сделать ещё несколько таких классов, чтобы они вызывали методы друг у друга. Ну, и сами методы, даже если в них есть очевидно повторно используемые вещи ни в коем случае нельзя этот повторяющийся код выносить в сервисные классы, нужно его обязательно дублировать или засирать этим кодом базовые классы, чтобы в них всё было в куче. И если тебе нужен этот код, то выбирай: либо наследуйся от этого безумного класса, либо дублируй код. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 18:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton в Haskell например все списки изначально декларированы как ленивые и stream api - органичен ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 18:09 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Код: java 1. 2. 3.
Тут есть два варианта. Раньше этот метод был публичным. Потом его скрыли. Второй вариант - это плод неудачного рефакторинга. Раньше в методе было больше смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 18:22 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, нет, это код написанный с нуля (точнее это псевдокод по мотивам реального кода) и единственный смысл этого метода это вычислить какое-то значение, которое дальше используется в init(). У меня бомбит от передачи данных между методами через поля. И я кажется понял почему! Потому что это фактически то же самое, что в процедурных языках использовать глобальные переменные. На мой взгляд, они должны добавляться только при явной необходимости, если без них никак не обойтись, для хранения состояния, а не для передачи данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 18:36 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb 3) Построение кода из небольших самостоятельных блоков (микро-DSL, микрофреймвоков, внутренних API). Люди, которые ни на чём кроме Java не писали, либо впадают в ступор, когда чего-то нет в стандартной библиотеке, либо пишут какой-то лапшакод Тут есть определенная опасность. Микро DSL понятны только создателю. На согласование новых ключевых слов микро-языка с командой нужно потратить огромное количество усилий человеко-часов чтобы под давлением вашего авторитета или под убеждением правильности и необходимости ваш DSL был принят сообществом (командой). Я был свидетелем когда кастомные DSL поверх yaml или groovy проваливались на первом-же код-ревью или на митинге. Обычно команда голосует очень консервативно. Все - не против фреймворка и библиотеки поверх Java но как только речь идёт о DSL - очень сильно напрягаются. Короче мы переписали DSL на Java. И в этом нет лично моей вины. Просто таков этот сложный процесс. Согласовать идею со всеми. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 19:54 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb 3) В том числе сгенерили и такой класс . Да, в нём куча switch/case и if, но какая разница, сопровождать его всё равно не нужно. Если изменится модель, то все эти классы они просто перегенерят. Причём сейчас этот класс можно сгенерить с паттерн-мэтчингом вместо if. Достаточно чуток изменить шаблон кода и нажать кнопку. Есть техническое ограничение на саму JVM. Длина метода в оп-кодах может быть не более 64к. Экспериментально я находил такие ANTLR грамматики которые просто порождали некомпилируемые сорцы. Я уж не помню как это фиксили. Но в данном примере если байткод будет компактнее вследствие замены if-else на switch-case то я конечно буду голосовать за последний. Это - чисто технический вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 19:58 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb mayton, нет, это код написанный с нуля (точнее это псевдокод по мотивам реального кода) и единственный смысл этого метода это вычислить какое-то значение, которое дальше используется в init(). У меня бомбит от передачи данных между методами через поля. И я кажется понял почему! Потому что это фактически то же самое, что в процедурных языках использовать глобальные переменные. На мой взгляд, они должны добавляться только при явной необходимости, если без них никак не обойтись, для хранения состояния, а не для передачи данных. Твой пример требует рефакторинга с выбрасыванием лишних методов. Причем если интерфейс selection не используется, то и он в классе не нужен. По поводу полей, то классы через них имеют состояние. Значит надо их использовать. А как иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 20:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb mayton, я не могу показать код из-за NDA, но там эпичные вещи. Эпичные вещи долго описывать. Приведу такой пример (псевдокод): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Это просто дурно написаный код и все ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 21:25 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, на мой взгляд, в лиспе нет особой разницы между DSL и фреймвоками. В Java иногда напрягает, что нельзя переопределять операторы как в C++ или что нет расширений классов как в C# или что для Stream API нет синтаксиса как у LINQ, и приходится писать больше кода. Но, с другой стороны, какая разница какой синтаксис используется. Наверное x + y выглядит лучше, чем x.add(y), это может быть важно для пользователей, если они сами пишут какие-нибудь скрипты или спецификации. А для разработчиков в принципе не так важно. Хотя, я конечно зря смешиваю эти понятия. DSL без специфического синтаксиса это уже не DSL. Мне лично удавалось продвигать только стандартизированные DSL типа OCL, QVTo, MOF M2T. И то, с трудом, люди скорее готовы использовать JavaScript или Lua. Потому что для JavaScript много вакансий и специалистов. Один фиг, что из этих специалистов ровно ноль человек писали какие-нибудь преобразования моделей на JavaScript, и опыт во фронте или в бекенде им никак не поможет. А специальный DSL для преобразования моделей осваивается за день и позволяет делать всё гораздо проще, не позволяет писать лапшакод. Но всё равно людей пугают DSL, они думают, что нужно потратить месяцы на их освоение, и что эти знания будут лежать мертвым грузом и никогда не понадобятся ни на какой другой работе, или что они не смогут найти специалистов по этому DSL. Я как-то проще к этому отношусь, может быть зря. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 21:29 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb В Java иногда напрягает, что нельзя переопределять операторы как в C++ или что нет расширений классов как в C# или что для Stream API нет синтаксиса как у LINQ, и приходится писать больше кода. Но, с другой стороны, какая разница какой синтаксис используется. Наверное x + y выглядит лучше, чем x.add(y), это может быть важно для пользователей, если они сами пишут какие-нибудь скрипты или спецификации. А для разработчиков в принципе не так важно. Ты можешь использовать Scala. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 21:42 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb, А что ты имеешь против Lua? У шарпистов на нем активно пишут не программисты аналитики. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 21:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ares_ekb Хотя, я конечно зря смешиваю эти понятия. DSL без специфического синтаксиса это уже не DSL. Мне лично удавалось продвигать только стандартизированные DSL типа OCL, QVTo, MOF M2T. И то, с трудом, люди скорее готовы использовать JavaScript или Lua. А можешь привести пример какого-нибудь DSL который здесь произведет вау-эффект? Здесь - люди сидят тоже не простые. Энтерпрайз повидали и всяко. И вот допустим есть у нас такая типичная энтити. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И она обвешана аннотациями ORM/Lombok и может даже Jaskson для биндинга и сериализаций. Вот допустим у тебя в Lisp возникает та-же задача. Процессить сущности в базе в бизнес логике и сериализировать. Вот какие ты сделаешь функции или макросы или может еще какую-то черную магию? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 22:14 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Ares_ekb Хотя, я конечно зря смешиваю эти понятия. DSL без специфического синтаксиса это уже не DSL. Мне лично удавалось продвигать только стандартизированные DSL типа OCL, QVTo, MOF M2T. И то, с трудом, люди скорее готовы использовать JavaScript или Lua. А можешь привести пример какого-нибудь DSL который здесь произведет вау-эффект? Здесь - люди сидят тоже не простые. Энтерпрайз повидали и всяко. И вот допустим есть у нас такая типичная энтити. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И она обвешана аннотациями ORM/Lombok и может даже Jaskson для биндинга и сериализаций. Вот допустим у тебя в Lisp возникает та-же задача. Процессить сущности в базе в бизнес логике и сериализировать. Вот какие ты сделаешь функции или макросы или может еще какую-то черную магию? в реальности хибер зло - причем зло не потому что он плохой- порог входа очень высок что сейчас знает типичный прогер- ну отношения там один ко многим ,многие ко многим ,каскадные оперции ,если повезет то еще и состояние сущностей)на этом все но фактически хибернейт это государство в государстве - и чтобы правильно применить этот инструмент нужны экспертные знания - иначе вы проиграли - поэтому я всегда говорю - если тут нет экспертов по хибер - используйте жук ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 22:23 |
|
jdk17
|
|||
---|---|---|---|
#18+
Одна из самых очевидных ошибок при разработке на хибере- ты хочешь взять что то из таблицы но не все ,при этом конечно все хотят убрать самый бесполезный механизм хибера грязная проверка,который мало того что в память гадит,так еще и ресурсы процессорные кушает как этого избежать ? использовать проекции- кто то тут умеет их ?)сомневаюсь- но при этом все продолжают ругать хибер ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2021, 22:29 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080, а какие преимущества у хибера перед простым jdbc? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 07:16 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя, )) те же что и при склейке строк print("<""HTML" + ">"..... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 08:26 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080, давай не начинать про нужность хибера. Его надо использовать как в дельфи. Там нужно сложно - есть API Win и ASM. Нужно просто для студента - есть vcl. localhost8080 Одна из самых очевидных ошибок при разработке на хибере- ты хочешь взять что то из таблицы но не все а не надо этого хотеть. В прошлый раз ты показывал проект сущности из 80 полей. В этом причина. Не надо заводить шарманку про нужность хибера) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 08:30 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя localhost8080, а какие преимущества у хибера перед простым jdbc? удобное апи для работы с графами объектов,встроеный мапинг кортежей,сокращение бойлер плейт кода,читаемость кода и удобство поддержки в дальнейшем Рассмотрим простой пример - у вас была таблица A с некими колонками a.1 a.2 a.3 у вас описаны запросы написаны маперы этого кортежа в какой то бизнес объект что произойдет если вы добавите колонку a.4 в эту таблицу,правильно - придется переписывать руками очень много кода в случае с хибернейт достаточно будет лишь добавить это поле с сущность кажется пустяком,но это когда ты вне спринтов живешь и никому ничего не обязан ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 09:23 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080 что произойдет если вы добавите колонку a.4 в эту таблицу,правильно - придется переписывать руками очень много кода в случае с хибернейт достаточно будет лишь добавить это поле с сущность кажется пустяком,но это когда ты вне спринтов живешь и никому ничего не обязан Ты пугаешь ежа голой жопой. У Вади если кнопку нужно добавить на страницу нужно 100500 html перебить в 100500 процедурах, а ты тут про какие-то колонки байки рассказываешь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 09:29 |
|
jdk17
|
|||
---|---|---|---|
#18+
Андрей Панфилов, авторТы пугаешь ежа голой жопой. У Вади если кнопку нужно добавить на страницу нужно 100500 html перебить в 100500 процедурах, а ты тут про какие-то колонки байки рассказываешьесли ты не понимаешь что икак устроено - не надо фантазировать и говорить чепуху. и смешивать добавление полей и кнопок. простое добавление поля в таблицу ведет изменение логики и хибер автоматом не позволит это сделать,, особенна на фронте ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 09:40 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080 Рассмотрим простой пример - у вас была таблица A с некими колонками a.1 a.2 a.3 у вас описаны запросы написаны маперы этого кортежа в какой то бизнес объект что произойдет если вы добавите колонку a.4 в эту таблицу,правильно - придется переписывать руками очень много кода Код: sql 1.
Что произойдёт, если в таблице есть (появилось) поле4? Правильно. Ничего не случится. Это поле отсутствует в наборе данных. Научитесь, в общем, правильно начинать рассказ о преимуществах ORM вообще и Hibernate - в частности. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 09:49 |
|
jdk17
|
|||
---|---|---|---|
#18+
localhost8080 вадя localhost8080, а какие преимущества у хибера перед простым jdbc? удобное апи для работы с графами объектов,встроеный мапинг кортежей,сокращение бойлер плейт кода,читаемость кода и удобство поддержки в дальнейшем Рассмотрим простой пример - у вас была таблица A с некими колонками a.1 a.2 a.3 у вас описаны запросы написаны маперы этого кортежа в какой то бизнес объект что произойдет если вы добавите колонку a.4 в эту таблицу,правильно - придется переписывать руками очень много кода в случае с хибернейт достаточно будет лишь добавить это поле с сущность кажется пустяком,но это когда ты вне спринтов живешь и никому ничего не обязан ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 09:55 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp . Купил попкорн, надел маску. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 10:58 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя, угу. Смотри как localhost8080 вырос из джунов. Стал серьезным, политкорректным и если делает вброс то только инженерным языком. Молодец. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 11:08 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Вообще главная цель - обеспечить читаемость кода другим человеком. А уж компиллятор как нибудь разберется. Это кстати сказал Мартин Фаулер. Код пишется человеком для людей. +100500!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 11:13 |
|
jdk17
|
|||
---|---|---|---|
#18+
вадя localhost8080, а какие преимущества у хибера перед простым jdbc? Я-бы по другому спросил. Есть ли жизнь по ту сторону Spring? Тоесть можем ли мы сегодня (в наше время) рассматривать вообще возможность применения Hibernate без Spring? Я когда-то писал и использовал. Но что-то мне кажется что сегодня я по памяти даже не напишу привед-мир на хибере. По крайней мере инициализация всех этих менеджеров представляется мне задачей непростой. Я к чему это. А. К бритве Оккама. Мы говорим Hibernate - а подразумеваем Spring-Hibernate. А что у нас Хибернейт вообще не существует без спринга? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 13:27 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton А можешь привести пример какого-нибудь DSL который здесь произведет вау-эффект? Здесь - люди сидят тоже не простые. Энтерпрайз повидали и всяко. И вот допустим есть у нас такая типичная энтити. Нужно было сделать редактор моделей данных, который поддерживает разные нотации. В нём можно рисовать ER-модель, UML диаграммы классов, Anchor-модели и т.п. Чтобы всё это работало было нужно следующее: 1) Entity-классы с JPA-аннотациями для хранения моделей 2) Java-классы для работы с моделями (реализуют интерфейс org.eclipse.emf.ecore.EObject), они по структуре похожи на Entity-классы, но лучше их не смешивать 3) Мапинги 1->2 4) Мапинги 2->1 5) DTO-классы с Jackson-аннотациями. У этих классов только вертикальные ссылки на дочерние DTO классы оставлены как ссылки. А горизонтальные ссылки заменены на поля, хранящие идентификаторы объектов, на которые ссылаемся. Это нужно потому что JSON-документ - это дерево, а не граф и (де)сериализация существенно упрощается, если горизонтальных ссылок нет. Конечно можно попробовать всё это объединить в одних классах, но получится жесть, проще всё это разделять 6) Мапинги 5->2 7) Мапинги 2->5 8) JavaScript-классы для самого редактора диаграмм, которые умеют (де)сериализироваться в JSON Сами схемы данных описывались на языке Xcore - это гибрид Ecore и Xtend. Вот, пример, xcore-файла из другого проекта. Там ничего особенного, этот язык позволяет описывать классы, интерфейсы, наследование, атрибуты, ссылки, операции. Конечно же никакие JPA-аннотации, Lombok аннотации и т.п. в этих Xcore-файлах не нужны, они добавляются кодогенераторами в зависимости от того какая именно это ссылка (один-ко-многим, многие-ко-многим) и т.п. Автоматически добавляются всякие аннотации типа @JsonSubTypes и т.д. У меня было 50 Кб этих xcore-файлов. 100 Кб шаблонов на языке Xtend для генерации кода. И из всего этого генерилось 3,5 Мб исходников (пункты 1-8). Один плюс такого подхода, что пишется просто меньше кода, не нужно писать однотипный код. Те же JPA или Jackson аннотации обычно пишутся по какой-то одной схеме и их проще сгенерить, чем проверять что где-то не забыл что-то добавить. Ещё в исходную модель или в код на DSL можно добавлять какие-нибудь дополнительные данные. Типа названия и описания этой сущности на русском и других языках. В единственном и множественном числе, в разных падежах и т.д. Потом из этого можно генерить файлы локализации, документацию. В общем всё, что касается схемы данных описано в одном месте, а не размазано по куче файлов. Ещё одна штука, которую я делал в этом проекте - это описывал грамматику разных языков, например, SQL на языке Xtext (это тоже своеобразный DSL типа языка описания грамматик в ANTLR), и потом генерил из неё JavaScript-код для парсинга, сериализации и автодополнения SQL-выражений на клиенте. В Лиспе я думаю, что подход был бы примерно такой же. Я описал бы схему данных без всяких аннотаций и т.п. Определил бы какой-нибудь макрос типа define-domain-class, который получал бы на вход название класса, перечень атрибутов с типами, ссылки на другие классы с указанием множественности и обязательности, может быть операции какие-нибудь. А внутри этого макроса уже спрятал бы всякие вещи для сохранения этих данных в базу, сериализации в JSON и т.п. Что-нибудь типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2021, 18:24 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton вадя localhost8080, а какие преимущества у хибера перед простым jdbc? Я-бы по другому спросил. Есть ли жизнь по ту сторону Spring? Тоесть можем ли мы сегодня (в наше время) рассматривать вообще возможность применения Hibernate без Spring? Я когда-то писал и использовал. Но что-то мне кажется что сегодня я по памяти даже не напишу привед-мир на хибере. По крайней мере инициализация всех этих менеджеров представляется мне задачей непростой. Я к чему это. А. К бритве Оккама. Мы говорим Hibernate - а подразумеваем Spring-Hibernate. А что у нас Хибернейт вообще не существует без спринга? Зачем?! Hibernate это «чудище обло, озорно, огромно, стозевно и лаяй». Spring-data-jpa хоть как то прикрывает весь этот хтонический ужас, от не окрепших умов. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 10:58 |
|
jdk17
|
|||
---|---|---|---|
#18+
Кажется spring-data уже не требует hibernate. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 11:05 |
|
jdk17
|
|||
---|---|---|---|
#18+
Кончайте вы. Есть JPA спецификация. Хибер ее реализует. А спринг склеивает. А бут автоконфигурирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 11:11 |
|
jdk17
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Кончайте вы. Есть JPA спецификация. Хибер ее реализует. А спринг склеивает. А бут автоконфигурирует. Он реализует "только" JPA или еще что-то? P.S. Чудище... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 11:48 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, Конечно реализует как умеет. Как все субд реализуют sql 92 года ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 12:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
Я вобщем-то спрашивал диаметрально другое... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:16 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Киллер-фича gradle - это параллельная сборка несколькими процессами ОС и поддержка их в пуле уже запущеных процессов. Если этот функционал перенести в maven - то тогда острая необходимость в gradle - отпадет. Сам себя комментирую. Код: java 1.
Это конечно не gradle, но субъективно собирает быстрее. 4 потока компилляции. Ключик nsu запрещает апдейт снапшотов (для медленных корпоративных сетей это может быть утомительно). Потоки можно подрегулировать каждому по вкусу и по железу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 19:35 |
|
jdk17
|
|||
---|---|---|---|
#18+
Ну тогда можно выпить за упокой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 00:54 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton, слушать его просто невозможно...... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 08:42 |
|
jdk17
|
|||
---|---|---|---|
#18+
Вчера только до половины дослушал. Не знал что Security Manager поставлен на Deprecated. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 11:12 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Вчера только до половины дослушал. Не знал что Security Manager поставлен на Deprecated. spotbug gradle plugin жалуется на SecurityManager deprecated, если нужен gradle 7.2 чтобы jdk17 завести. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 12:02 |
|
jdk17
|
|||
---|---|---|---|
#18+
mayton Не знал что Security Manager поставлен на Deprecated. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 14:21 |
|
jdk17
|
|||
---|---|---|---|
#18+
Жаль что SecurityManager - нудный в конфигурациях. И там неудобно разрешить всё и запретить к примеру ходить в веб. Там - модель разрешений больше похожа на Оракловую. И пока по логам SM не разрешишь явно все Runtime разрешения и всякий прочий хлам - приложение нормально не работает. А так вобщем - и уязвимость Log4j2 просто не работала-бы. Можно конечно запускать приложения в докерах но для кого-то это архитектурные шаги. А так просто опцию командной строки добавил и всё. И не на один проект а на все сразу. А ручная фиксация этого 0-day - это пойди обойди все конфигурации всех проектов и подобавляй настройку для запрета интеполяций msg. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2021, 19:55 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120291]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
4078ms |
get tp. blocked users: |
2ms |
others: | 3852ms |
total: | 8050ms |
0 / 0 |