|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
adminDontSleep аргументы против модульной архтетектуры( пс это не сарказм ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 20:44 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов ну вот толку-то от этих record, если у них полноценных (т.е. как в ломбок) билдеров нет - сиди как дурак и шлепай конструкторы на пол-экрана, да копирования тоже нет (тут обязательно найдется кто-то, кто заявит, что много полей в классе - это якобы плохой дизайн. Нет.), т.е. record - это никакая не замена @Data, а просто детская поделка ну тут ты переборщил с пессимизмом)). На самом деле огромный шаг вперед поддержка именно в языке. В дельфях то TRecord уже лет 40 как) То есть поддержка-носитель данных в Java это априори замечательно. Ведь куда не плюнь нужна сериализация и классы без поведения. А тут представь что нужен объект из 2 полей Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
то есть для трёх строк нужна вот эта куча кода. Смешно)). По поводу конструктора копирования то я не понял. Ты это от Сишников позавидовал? Но ведь в Java это не надо. Ну а биндинги и маппинги будут. Всё будет со временем даже если нету именно сейчас. имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 22:35 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
далее. Класс данных вводимый все таки отличается от ломбок подхода. - отсутствие скрытого состояния - запечатанный класс и нет наследования - всё что нужно дается в конструкторе -... И это замечательно. Ограничения в новом классе дают больше преимуществ чем мы теряем там где сложности абсолютно не нужны. Разве не здорово выглядит попытка вернуть сразу два значения из метода? Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 23:10 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А тут представь что нужен объект из 2 полей Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
то есть для трёх строк нужна вот эта куча кода. Смешно)). По поводу конструктора копирования то я не понял. Ты это от Сишников позавидовал? на lombok это будет выглядеть так: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
или более развернуто: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78.
т.е. можно писать: Код: java 1. 2.
а если сделать так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
то можно уже писать вот так: Код: java 1. 2.
т.е. жабские record выглядят "удобными" разве что на примере с Point, а как только мы осознаем что нам нужно работу работать, а не примеры смотреть, то сразу вылезают грабли, а если посмотреть на JEP 395 то можно невооруженным взглядом заметить наличие отсутствия параграфа про prior art. PetroNotC Sharp Разве не здорово выглядит попытка вернуть сразу два значения из метода? Код: java 1. 2.
для подобного офигенно не хватает петоновских tuple, генераторов как в петоне тоже не хватает, да и от петоновских массивов я бы тоже не отказался. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 00:10 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
adminDontSleep ты пишешь градл плохо для всех ,кто не пишет на ведро я тебе скажу что весь энтерпрайз на градле потому что там можно делать кастомные таски Ты год назад божился, что весь энтерпрайз на PostgreSQL, а потом вдруг выяснилось, что PostgreSQL - это поделка. Про gradle повторяться не хочу, почитай вот тут , ну или еще мои сообщения поищи... adminDontSleep я бы хотел услышать вот этот момент- ты назвал систему модулей джава никому не нужной - у нас лиды хотя бить проект на модули - очень интересно будет послушать твои аргументы против модульной архтетектуры Проблема в том, что "моудльная архитектура" и "модули jigsaw" - это две совершенно разные вещи, "модульная архитектура" - это просто некая парадигма (набор паттернов и пр., которым уже несколько десятков лет, скорее всего отсчет идет с момента изобретения DLL, так что не знаю чего это вдруг твой архитектор внезапно решил что-то переделывать), которая говорит нам, что "хорошо бы делать так", при все при этом мы можем вполне легко определить что некая часть нашего приложения выглядит откровенно так себе, однако, когда нам приходится сравнивать два "условно хороших" решения, то мы сталкиваемся с тем, что какие-либо объективные метрики отсутствуют - включается некий собственный субъективизм + ссылки на каких-то упоротышей (упоротый дед Боб тому пример, или например последние движения в springboot - тамошние разработчики решили что циклические зависимости между бинами зло и при переходе на 2.6.1 прямым текстом в сообщении об ошибке так и пишут: ваш код говно, срочно идите его переделывать; при этом сам спринг нормально контекст собирает, да и javac прекрасно с задачей справляется). Если попытаться поиграть в аналогии и спроецировать "модульную архитектуру" на бытовой уровень, то в первом приближении получается так: - отдельностоящие домохозяйства - круто: нет шумных соседей с детьми и перфораторами, можно выбирать поставщиков услуг и пр. - квартиры - отстой: соседи, все являются заложниками ЖСК - общаги - это для нищебродов ну так вот, несмотря на то, что мне в отдельном доме жить нравится, мне постоянно приходится нести определенные издержки, ну вот к примеру чтобы что-то починить в доме нужно просто офигеть как заморочиться: починить что-то мелкое - к тебе никто не поедет, просто потому что не выгодно, а если чинить самому, то можно офигенно так попасть: по электрике и газу в случае пожара тебя взгреет страховая, по воде просто в канализацию врезаться нельзя - нужен сертифицированный водопроводчик, в итоге получается так, что или платишь по завышенной ставке или живешь с проблемами. Если ближе к теме про "модульную архитектуру", то вот предлагаю обратить взор на финно-узбекские паттерны : авторсобссно есть компонент. в хибере в энтитилистенере вставлен кафка продьюссер. просто в конструкторе инициализируется. оттуда и шлет в топик все изменения сущностей. продьюссер не инжектится в энтитилистенер а прям там через нью создается. Т.е. если поциент из какого-то @PrePersist шлет сообщения сразу в кафку, то по мнению современных архитекторов такой дизайн - это треш и угар и так делать нельзя. А вот теперь вопрос: если мы из @PrePersist "уберем слово кафка", ну например будем слать событие на деревню дедушке, которое будет кем-то ловиться и дальше отправляться в кафку, то у нас уже будет хорошая архитектура или нет? На мой взгляд ответ на вопрос - "очевидно нет", поскольку помимо существования "бизнес-кода" у нас есть еще инфраструктурная часть и часть связанная с информационной безопасностью - а там приоритеты уже совершенно другие: надежность и безопасность, а не некая абстрактная красота. Т.е. в целом в "модульной архитектуре" каждый дрочит как хочет, лишь бы ЧСВ росло. Почему "модули jigsaw" никакого отношения к "модульной архитектуре" не имеют? - в жаве (ну или в maven или gradle) по большому счету у зависимостей нет понятия requires/provides как например в linux (т.е. когда мы говорим, что для работоспособности нашего приложения нужен интерпретатор sh, а какой он там будет из 10 возможных нам совершенно не важно) - мы когда хотим иметь какой-то JPA мы указывает вполне конкретную реализацию - по факту хибер или эклипслинк и все, да бывают ситуации, что некие особо упоротые считают что JPA-модели можно описать только аннотациями из JPA, однако эти мечты мгновенно разбиваются о тот факт, что при помощи JPA нельзя много чего описать, да и пара хиберовских аннотаций может улучшить производительность в пару-тройку раз, другие упоротыши считают что, несмотря на то что они используют spring в качестве DI, фичи спринга использовать ну никак нельзя, а нужно оставаться в рамках пакета "javax.inject" из-за чего постоянно изобретают какие-то велосипеды с надеждой что когда-то проект сможет безболезненно переехать на другой фреймворк... - чтобы правильно пилить такие огромные куски на модули нужно изначально все вдумчиво проектировать, а не собирать комитеты, занимающиеся ИБД (тут обязательно нужно вспомнить как спринг в итоге победил J2EE с EJB и пр. дерьмом) - для разработчика весь этот распил rt.jar на отдельные модули не несет никакого профита (ах ну да, мы на диске аж 10 мегабайт скроим!), а вероятность того что мы сможем запустить оракловую жаву с java.base от какой-нибудь OpenJ9 равна нулю Отсюда вопрос: а зачем это все делается-то? У меня есть две теории на этот счет: - банальный синдром вахтера: кто-то там сел, откопал баги 20-летней давности и решил что вот время наконец-то пришло, и пора бы запретить разработчикам залазить в рантайм, и насрать что приложения в серверы приложений уже как лет 5 никто не деплоит и работоспособность конкретного приложения сейчас целиком и полностью лежит на плечах вендора (ну может еще кто-то хочет денюжку на поддержке только жавы заработать) - готовится база для насаживания всех на кукан и монетизации конкретных модулей, а хомячки сейчас это все забесплатно тестируют. Например с моей точки зрения запрет на использования кишок какого-то модуля имеет хоть какой-то смысл только с следующем сценарии: вот мы пишем какое-то приложение и хотим на него навесить некий модуль ИБ (ИБ здесь не с точки зрения того, что есть злые какеры, которые через log4j2 систему пробивают, а в смысле что Вася какие-то кнопки может нажимать, а какие-то нет) и нам кому-то (местной службе ИБ или аудитору) нужно доказать что наше приложение работает "безопасно", ну вот мы идем к вендору модуля ИБ, включаем модуль в поставку приложения, а у этого модуля все организовано так, что он там какие-то вызовы перехватывает, "расширить" его никак нельзя и поэтому вроде как все безопасно (у вендора бумажка есть). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 05:32 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов нам нужно работу работать У второго ограничения и выходящие из них преимущества. В ломбоке вы получаете тот же самый класс. Например, запрещено как в ломбоке добавлять свои скрытые поля в класс. И это дает кучу плюшек. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:08 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов модульная архитектура" - это просто некая парадигма (набор паттернов и пр., которым уже несколько десятков лет, скорее всего отсчет идет с момента изобретения DLL, так что не знаю чего это вдруг твой архитектор внезапно решил что-то переделывать), ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:13 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов а если посмотреть на JEP 395 то можно невооруженным взглядом заметить наличие отсутствия параграфа про prior art. Non-GoalsIt is not a goal to declare "war on boilerplate"; in particular, it is not a goal to address the problems of mutable classes using the JavaBean naming conventions. It is not a goal to add features such as properties, metaprogramming, and annotation-driven code generation, even though they are frequently proposed as "solutions" to this problem. Лично вас не устраивает? Ну так или не используйте или предложите собственный JEP. В язык затащено всякого мусора? И что? Чем вам мешает то, что лично вы не используете (не хотите использовать)? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:20 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов Отсюда вопрос: а зачем это все делается-то? Система модулей разработана, в первую очередь, для внутренних нужд разработки JDK. Как, например, вы собираетесь выпиливать приснопамятный sun.mics.Unsafe, если у вас нет ни "устарело, на удаление" ни строгой инкапсуляции? Как предлагаете реорганизовать откровенно неудачные решения Java SE API? Или вас всё это не касается? Ну а в чём тогда дело? Java 8 доступна из кучи репозиториев и будет доступна до 2023-24 года, как минимум. Следовательно, за это время можно спокойно переехать на Java 11 решив только те проблемы, которые мешают этому переезду. И, например, многоверсионные JAR могут облегчить вашу работу. А это, опять-таки, заслуга "того самого" jigsaw. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:31 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Поэтому вопрос: в чём недовольство-то? Лично вас не устраивает? Ну так или не используйте или предложите собственный JEP. В язык затащено всякого мусора? И что? Чем вам мешает то, что лично вы не используете (не хотите использовать)? вроде написал же уже: Андрей Панфилов текущее состояние жавки примерно следующее: у нас совершенно ипанутое API для совершенно тривиальных вещей (ну например работа с массивами через пень колоду организована, java.lang.String#substring в UTF8 никак не умеет (сюрприз, да), лямбды такие, что без слез не глянешь + все что наболело), однако при этом у нас есть куча сборщиков мусора (в 1.6 их было 7 штук, сейчас даже считать лень) и никому не нужные модули - на мой взгляд это уже определенно стагнация. т.е. иными словами: хотелось бы чтобы вместо онанизма решались насущные проблемы. Basil A. Sidorov Система модулей разработана, в первую очередь, для внутренних нужд разработки JDK. Хорошо, а зачем мне ее насаждать-то? Какого хрена я при переходе на новую версию жавы должен что-то глобально переделывать? Basil A. Sidorov Как, например, вы собираетесь выпиливать приснопамятный sun.mics.Unsafe, если у вас нет ни "устарело, на удаление" ни строгой инкапсуляции? Здесь я сразу вспомнил один из видосиков, которые постоянно mayton постит, там перец несколько минут гордился тем, что возможность использования sun.mics.Unsafe таки оставили, однако: дохрена народа пользуются sun.mics.Unsafe, хоть и приходится его получать через одно место - разработчики же JDK по какой-то невероятной причине этот факт попусту игнорируют, вот что мешало сделать System.unsafe 15 лет назад? Я никаких других причин кроме как синдрома вахтера не вижу: в С ассемблерные вставки можно, в .Net и Rust unsafe можно, в петоне биндинги к внешним библиотекам - это вообще само собой разумеющееся, а в жаве писать lock-free алгоритмы - это оказывается великая привилегия разработчиков JDK, а черни не дозволено. Basil A. Sidorov многоверсионные JAR могут облегчить вашу работу. А это, опять-таки, заслуга "того самого" jigsaw "облегчить" - на мой взгляд уж слишком оптимистичное заявление... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 08:27 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp мое имхо что прогер должен выбрать. Нужен ему обычный класс или класс данных. У второго ограничения и выходящие из них преимущества. В ломбоке вы получаете тот же самый класс. Например, запрещено как в ломбоке добавлять свои скрытые поля в класс. И это дает кучу плюшек. Имхо Вот если бы в record в качестве полей можно было бы использовать только примитивы и другие record, то было бы круто - т.е. данные были бы только данными без каких-либо сайд-эффектов, там бы и десериализация была бы безопасная и пр., а так профита от этого нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:01 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Дак оно так и есть. Не? Дай примерчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:04 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов т.е. иными словами: хотелось бы чтобы вместо онанизма решались насущные проблемы. Добавлю ещё, что и мир не крутится вокруг программистов.Хорошо, а зачем мне ее насаждать-то? Какого хрена я при переходе на новую версию жавы должен что-то глобально переделывать?"Мир меняется ... Вот, уже и в воздухе чем-то запахло" (ц) х/ф "Братва и кольцо". Не хотите ничего переделывать - оставайтесь на Java 8. Хотите перейти на новую версию без переделки ваших приложений - делайте форк Java 8 JDK и интегрируйте туда только те фичи, которые нужны лично вам.Здесь я сразу вспомнил один из видосиков ... Я никаких других причин кроме как синдрома вахтера не вижу: ...Я поскипал много неаргументированных буков и просто повторю, что вокруг вас мир не вертится. Это можно понять из простого чтения JEP-ов. И, кстати, именно потому, что пятнадцать лет назад миндальничали со всякими Netty/Кафка/e.t.c. и нарисовалась та самая задница, которая вам так активно не нравится."облегчить" - на мой взгляд уж слишком оптимистичное заявление...А у меня - другое мнение. Будем меряться пип мнениями или, всё-таки, сойдёмся том, что другой (мета)вселенной (лично для вас) никто не напишет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:17 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Андрей Панфилов, Дак оно так и есть. Не? Дай примерчик. Думаешь не скомпилится? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:19 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Класс для данных. Отсюда только статические поля и сам record как поле. Отсюда абсолютная прозрачность потрохов для всех снаружи. Отсюда полная прозрачность для сериализации и маршаллинга. Считай дерево данных tree record или json record ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:20 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp Андрей Панфилов, Дак оно так и есть. Не? Дай примерчик. Думаешь не скомпилится? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
static плохой тон) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:22 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp static плохой тон) Да какая разница, плохой или не плохой, оно же специально для тебя написано было, чтобы смог скомпилировать... ты же получил синтаксический сахарок и начал делать далеко идущие выводы - про сериализацию, иммутабельность и пр. - ничем подобным там и не пахло. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 10:56 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Как какая разница если статик это не состояние карл. В классе данных не должно быть скрытого состояния. Что позволяет ломбок. Написать то можно любую хрень. Но ты выше написал сноску - "нам же работать надо". Тогда давай от задачи идти. Чем не пахло если в примере ты не изменил состояние. Что отлично сериализуется. Мне сложно рассматривать всякую хрень которая лишь бы скомпилилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 11:21 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 11:28 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Андрей Панфилов, так и не услышал ни одного внятного аргумента против мудулей, Про ломбок вообще вообще нет ни одного аргумента,кроме что вот это удобно... а потом удобно ждать пару мес пока деятиели из ломбока пофиксят баги? или проще нажать generate getter/setter ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 18:14 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
adminDontSleep, А ты сам то вообще молчишь. То что ломбок удобен разве ж этого мало))) Ну а с приходом record и ломбок твой помрет. Так как pojo тупые классы это все что нужно в java ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 19:11 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp adminDontSleep, А ты сам то вообще молчишь. То что ломбок удобен разве ж этого мало))) Ну а с приходом record и ломбок твой помрет. Так как pojo тупые классы это все что нужно в java мне некогда говорить) работы выше крыши фактически что можно сказать - Андрей что то сказал- аргументировать не смог ломбок -удобно -но этого мало- он должен на выходе новых версий джавы показывать отсутсие багов я почитал их лог на октябрь и у меня волосы на голове дыбом встали - ребят ,а что вы делали то раньше - диструбутив 17й был доступен уже 100500 лет - почему не было фиксов? с таким отношением понятно они растеряли аудиторию ,я был в числе их почитателей- но ребята жестко обкакались - а это неприемлимо в той сфере ,где я работаю,поэтому ломбок пошел под нож,теперь только языковые фичи ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 19:31 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
adminDontSleep ломбок пошел под нож Переписывать легаси или нет. Больно быстро тебя качает ветром. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 19:41 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
adminDontSleep мне некогда говорить) работы выше крыши Покажи как ты работу работаешь. As is to be. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 19:42 |
|
Авторизация в spring улетает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Развивая идею иммутабельных DTO, я-бы предложил ввести tuple, как в функциональных языках. Мне иногда не хватает. А apache-common pair затягивать не хочется да и не красиво. Типа вместо Код: java 1. 2. 3.
ввести нечто вроде Код: java 1. 2. 3.
и алиасы элементов ответа типа первый и второй. Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 20:00 |
|
|
start [/forum/topic.php?fid=59&msg=40120043&tid=2120283]: |
0ms |
get settings: |
4ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
50ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
433ms |
get tp. blocked users: |
0ms |
others: | 366ms |
total: | 863ms |
0 / 0 |