Этого треда уже нет.
Это копия, сохраненная 6 апреля 2023 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Java #244 thread java /java/ 2596713 В конец треда | Веб
Программирование - это не столько про анальное крудошлёпство, сколько про стиль мышления. Высокоуровневая абстракция, поиск сходных черт, оптимизация - всё это высшие интеллектуальные способности, что образуют такой прочный симбиоз с программированием на Java.

Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki

- - Пять вопросов из предыдущего треда:

- - - - 1. Кто-то пробовал mjc school? Стоит того?

- - - - 2. На днях буду изучать spring, после буду проект писать для интервью.
Скажите, на spring только сайты пишут ? Или можно лаунчер для майнкрафта написать ?

- - - - 3. Аноны, есть две @Entity, скажем Person, с полями name и age, Payment с полями employeeName и amount. Как мне через JPA получить третий объект, представляющий джоин этих двух энтити?

- - - - 4. Пачиму нельзя скопировать модуль расширения dashchan встроенной функцией идеи? Выдает ошибку Error adding module to project, причём без какой-либо дополнительной инфы. Зато если в полу-ручном режиме скопировать папку и переименовать там классы с файлами, то всё работает как положено

- - - - 5. Посоветуйте, пожалуйста, хорошую книгу, чтобы понять ООП и объектный дизайн.

Предыдущий: >>2585661 (OP)
2 2596720
Пишу полтора года на спринге. С бд работаю на jooq. Думаю менять работу. Стоит выдрачивать хибер? Неохота прям сильно, но в большинстве вакансий хибер.
Что еще надо на мидла?
3 2596728
ЖАБА ГОРАЗДО ХУЖЕ, ЧЕМ ШАРП!!!
4 2596735
>>596720

>в большинстве вакансий хибер


это легаси
5 2596748
Какую тему юзаете?
6 2596758
>>596748
high contrast
7 2596762
>>596735
Ну даже если мы предположим, что хибер есть только на легаси проектах, то легаси большинство.
Ну и кстати вопрос, сильно будет после пиления нескольких микросервисов почти с нуля садиться на легаси с монолитом/микросервисами/распределенным монолитом?
8 2596763
>>596748
реальную
image.png329 Кб, 1024x666
9 2596764
>>596748
Вот эту
10 2596770
>>596748
Дефолтную светлую тему. Глаза меньше устают. У меня и в терминале светлая тема.
11 2596833
>>596748
дефолтную светлую. Даркула это кулхацкерам
12 2596855
>>596748
У именно меня от светлой глаза устают. Все коллеги используют темную. Но насколько я понимаю, это индивидуально.
Я себе темную поставил везде и в идее и в мессенжерах и в ос. Пробовал даже расширение для браузера, чтобы на страницах фон перекрашивало - плохо работает.
13 2596860
>>596855
на дваче со светлой не устает, а в идее в светлой устает?
14 2596863
>>596860
Уже лет 7 использую muon. Раньше на том тирече стандартная тема раздражала, поэтому сидел на нульче.
15 2596875
Аноны, вопрос к вам. Скоро хочу пойти и попробоваться на собесах, при себе есть один проект на гитхабе, в котором используются практически все технологии, которые знаю, но есть проблема: этот проект хуйня без задач и я вообще не ебу как его преподнести. Если вкратце, там можно оставлять комменты на отдельной странице, есть админка с возможностью редачить комменты или удалять, есть более менее норм секурити с возможностью входа через ауф, небольшой парсер новостей на главной, который далеко не идеально работает, но все же, еще пара страниц чисто для вида, типо страницы с моими линками и все. Я даже не ебу как мне этот проект описать одним словом, когда спросят, разве что начать называть сразу какие технологии там используются и какие фичи есть. Мне кажется это проблема, ведь собеседующий может посчитать, что я сделал какую-то залупу хуй знает зачем хотя на деле так оно и есть А если спросят про пользу, которую он приносит, мне на это тоже нечего ответить, даже общаться там проблематично в комментах, ибо сделан он на таймлифе. Короче хэлпуйте, может можно все-таки как-то подать этот проект, будто он совсем не бесполезный и даже имеет коммерческую перспективу это же вроде как важно заново выдумывать что-то и переписывать конечно впадлу, я на него прилично времени убил
16 2596882
в чем отличие <?> от <T> (параметризированный метод/класс) ?

в контроллерах спринга возвращают ResponseEntity<?>. зачем? контроллер работает с конкретными сущностями, почему явно не указывают класс сущности?
17 2596936
джуну надо знать spring sequrity и spring cloud, чтобы найти первую работу?
18 2596937
>>596936

>security*

19 2596951
>>596875
А на сишарпе с блейзором мог бы запилить современное полноценное веб-приложение
20 2596954
>>596882
Т - если планируешь использовать параметр, а ? если тебе пофиг на него, лишь бы скормить компилятору.
21 2596956
>>596954
так а в чем преимущество? я не понимаю. я сам не знаю так ли это, но логически если подумать, мне кажется, чем конкретнее указываешь компилятору какой тип использовать, тем более он тебе оптимизирует байт код.
22 2596960
>>596956
Байт-код ничего не знает про дженерики. Читай книгу Философия Java на 1000+ страниц, там эта тема очень подробно разбирается.
23 2596965
>>596960
ну тогда в чем преимущество то епта? в том что ты 1 символ ставишь вместо N символов?
24 2596970
>>596965
Чтобы не писать методы для работы с каждым классом. К примеру, если пишешь калькулятор, то пришлось бы писать отдельный метод для сложения int и отдельно для double.
25 2596976
>>596970
так я бы мог создать типизированный метод и с тем же успехом вызывать ResponseEntity<T> method<T>(...)
26 2596979
>>596936
Мое мнение, что клауд не нужен вообще.
С нулевыми знаниями секурити тоже можно найти место. Но лучше быть готовым что на тестовом дадут минимальную авторизацию с basic auth. https://www.youtube.com/watch?v=7uxROJ1nduk вот этого видоса будет за глаза.
27 2596982
>>596951
Чем блейзор от ваадина отличается?
28 2596986
ломбок это для латентных пидоров
29 2596991
>>596986
а явно писать геттеры-сеттеры-конструкторы-билдеры для открытых пидоров
30 2596995
>>596982
Ваадин что-то типа WebForms, создаёт высокоуровневый абстракции над вебом, чтобы приблизить работу к десктопу. В итоге гоняет тяжёловесные пакеты между фронтом и бэком.
Блейзор же - результат длительной эволюции фреймворков на базе ASP.NET. Он не скрывает детали реализации. Можно напрямую писать html, создавать свои компоненты. Это полноценная альтернатива фреймворкам типа реакта и ангуляра.
31 2596996
так писали олды явы
олды явы пидорами не были
следовательно ты не прав
32 2596997
>>596875
але сука прокомментируйте
33 2597004
что будет если придти на собес с пет проектом ява игры на мобиле
34 2597008
>>596995
Можно напрямую писать html, создавать свои компоненты.
То есть это шаблонизатор что-ли ебучий просто прокаченный? Нахуй он тогда нужен? Анону нужно на ресте практиковаться.
35 2597011
>>596995

>в петушарп завезли тормозящий сахар


рррррряя, питушарп лучший, сахарок, никакого бойлерплейта!

>в петушарп не завезли тормозящий сахар


ррррря, чё, не мужик что ли?))0))0 зачем тебе тормозящие пакеты какие то гонять? деды на голом хтмл писали и мы будем))00)
36 2597017
>>597008
Там два варианта. Есть серверный, где клиент все нажатия кнопочек отсылает на сервер. И веб-ассембли, который полностью работает на стороне клиента.
Преимущество в том, что пишешь на сишарпе и не надо учить жс/тс. Если собираешь в фуллстеки, то сразу учи жс/тс.
37 2597018
>>596997

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


Никто ничего не спросит с вероятностью 90%. А если спросят, то только про технологии которые трогал в пете, про пользу это шиза. Если у тебя ненужные технологии типа шаблонизаторов, то страдай. Ну и просто акцентируй внимания на других технологиях из пета, более актуальных, связанных с бд например.
38 2597019
>>596875
Показал бы хоть, чё у тебя там.
39 2597023
>>597017
Ебаться с жс/тс - намного более адекватное вложение времени, чем вкладывать его в веб ассемблер, шаблонизатор и библиотеку-обертку для них, типа твоего вишневого блейзера.
40 2597025
>>597019
Ну ща мож ссылки уберу и в клауд на виртуалку закину, потом сюда ссылку дам а может и нет
41 2597059
Как я могу получить ауфентикационный юзернейм внутри метода commence(...) AuthenticationEntryPoint? httpServletRequest.getUserPrincipal() и SecurityContextHolder.getContext().getAuthentication() возвращают null.
42 2597105
бэкендщику надо знать про реакт и прочее гомопидорство? как происходит разработка в реальном проекте? сначала бекенд пишут, роуты, только потом фронтендщик сам подстраивается? или бекендщик подстраивается? или все роуты обговариваются заранее?
43 2597121
>>597105

> бэкендщику надо знать про реакт и прочее гомопидорство?


Нет.

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


Бэкендер продумывает ручки и дтохи, описывает их фронтендеру. Дальше пилят параллельно, бэкендер пишет логику, фронтендер красит кнопки и дёргает ручки.
44 2597134
>>597017

>>Преимущество в том, что пишешь на сишарпе и не надо учить жс/тс.


Я пишу на джаве и мне тоже не надо учить жс/тс. Для этого фронты есть.

>>фуллстеки


2 мидла по цене одного, еще и дорогим сенькой никогда не станет
45 2597138
>>597121

>фронтендер красит кнопки


Вот ты пренебрежительно относишься к работе фронтендера, типа легкая хуйня их работа, но ведь на деле современный фронтенд будет посложнее бека.
46 2597144
>>597138
Это рофл такой, как бэкендеры, грузящие жсоны в базу.
47 2597149
>>597138
Работа сложная потому что муторная, но тупорылая. Это как камни таскать.
48 2597170
>>597149
А крудошлепство стало вдруг не муторным и тупорылым?
49 2597180
>>597170
Ну я вот например не крудошлёпством занимаюсь, на бэкенде. Фронта в принципе интереснее нет, а на беке много жемчужин.
50 2597236
>>597105

> бэкендщику надо знать про реакт и прочее гомопидорство?



Знать штуки всегда лучше чем не знать штуки. Ауф.

>как происходит разработка в реальном проекте?



По всякому. Иногда идут от бэкенда. Иногда оба идут от API (spec-first). А иногда (вот как у нас, например), бэк и фронт идут вслепую параллельно, а потом начинается баттл-рояль под названием "интеграция фронта с бэком".
51 2597250
>>597019
Ну вот короче, только с телефона хуево выглядит, ауф через гугл не работает тк домена нет, офну через час
http://89.208.209.143/api/view/main
image33 Кб, 630x659
52 2597261
>>597250
Не переходите по ссылке. Долбоеб решил заскамить на аккаунты.
53 2597265
>>597261
че ты несешь там есть своя регистрация
54 2597267
>>597265
Нахуй тебе фулл рид энд врайт, чучело?
55 2597271
>>597267
тебя ебет? я в скоупе юзер выставил на похуй
56 2597286
Как использовать ебучий @RestClientTest слайс, если мне в сервисе нужен RestTemplate бин с квалифаером?
57 2597294
>>597261
>>597267
ладно, из-за тебя долбоеба пришлось выключить ауф
58 2597333
>>597250
все я вырубил свою хуйню
59 2597373
>>597333
по мне так ты молоца. Красиво, плюс знаешь как это хостить. Код не смотрел
60 2597418
>>597373
Спасибо, но я немного обьебался конечн, постоянно выкидывало из аккаунта внутри приложения, как я понял, это из-за того, что я сделал скейл на три инстанса на всякий, а айди сессии спринг хранит подефолту в какой-то коллекции внутри приложения я это не менял и когда перекидывало на другой инстанс, происходил редирект на логин пейдж опять. Еще сейчас понял, что сисрф задезейблен был и можно было б базу засрать через постман какой-нибудь тк валидация быоа только на формах стоит.
61 2597501
>>596875
Ты не бизнес менеджер, чтоб создавать успешный коммерческий продукт. Так и преподноси, что это проект для оттачивания навыков и демонстрации разных технологий. А вот то что там общаться проблематично, это минус и претензия к тебе. То что используется таймлиф - не оправдание, зачем тогда выбрал эту технологию?

Алсо, подскажи, как хостил?
62 2597537
Как же охуенен Stream Pipeline. Когда нибудь я и напишу что-нибудь такое же охуенное, как Stream Pipeline.
63 2597547
>>597537
Не напишешь.
64 2597549
>>597547
Напишу!
65 2597552
>>597501

>Ты не бизнес менеджер, чтоб создавать успешный коммерческий продукт


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

>используется таймлиф - не оправдание


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

>как хостил?


Просто в кубер закинул, который в отечественном клауде создал, не уверен на счет того, что так можно и нужно делать, но сделал как умею
66 2597598
>>597552

>пытаются выдать его пет проект за этот опыт


Это будет когда ты уже трудоустроишься и твоя аутсорс компания будет пытаться продать тебя иностранному заказчику, думаю тебе помогут с этим. А в саму компанию, в которую ты устраиваешься, нет смысла делать вид что ты сделал какой-то реальный коммерческий продукт
67 2597613
>>596713 (OP)

> Скажите, на spring только сайты пишут ? Или можно лаунчер для майнкрафта написать ?



Вот вы смеетесь а я пилил плагин для сервера который полный спринг контекст поднимает, и через REST доступ к миру дает

А вообще можно запилить бэкенд с таймлифом, и в портативный браузер засунуть а ля электрон
68 2597615
>>596713 (OP)
А как профилировать веб сервисы?

Я знаю как профилировать обычную программу, есть ли для веб сервисов особые профайлеры, которые как нибудь с жизненным циклом запроса интегрируются, например?

Что если у меня периодически какой-то запрос очень медленно выполняется? Только логи, метрики, инструментация в попытке найти зловредный тесткейс, или есть что-то более продвинутое?
А если замедло плавающее и не зависит однозначно от параметров запроса, и локально не воспроизводится?

Я знаю как это делать по принципу здравого смысла, ака смотреть на базу в первую очередь, логи писать итд, мне интересно что вы делаете когда совсем пизда
8ugkllmjcqs31.png356 Кб, 575x503
69 2597618
Анон, уже не на первом собесе спрашивают рассказать про сборщики мусора, реализации и как работают. Шо почитать/посмотреть можно?
70 2597678
71 2597680
>>597615
java melody
изображение.png60 Кб, 1254x482
72 2597843
чувствую хуйню какую-то сделал, но не знаю как лучше
идея в том, что я не могу использовать 1 составную таблицу (movie и person), потому что один person может быть в одном фильме и актером, и режиссером (как пример). поэтому комбинации movie_id и person_id бы повторялись, но в таком случае нельзя было бы идентифицировать по роли person. тогда можно было бы добавить 3 колонку role_type (varchar или указывать id роли), но тогда не понятно какой составной PK делать. а PK по 3 столбцам нельзя делать (вроде)
изображение.png20 Кб, 738x416
73 2597847
>>597843
т.е. вот так сделать...
но как я уже сказал, составной PK не сделать в таблице movie_person
но нужен ли он там вообще?
я руководствуюсь лишь тем, чтобы не было дубликатов в таблице, чтобы это сделать, нужно определить PK в ней по нескольким столбцам. по всем трем нельзя. по 2 не получится тоже, потому что это не даст одному и тому же фильму с одним и тем же person создавать разные роли
74 2597861
>>597618
https://www.freecodecamp.org/news/garbage-collection-in-java-what-is-gc-and-how-it-works-in-the-jvm/
И Шипилева можешь глянуть - он любит про кишочки жвм рассказывать
75 2597874
>>597843
>>597847

>>не понятно какой составной PK делать


Просто сделай суррогатный ключ и ограничение уникальности по 3 полям, not_null для каждого не забудь
UNIQUE (movie_id, person_id, role_id)

>>3 колонку role_type (varchar или указывать id роли),


лучше ид, если роли могут добавляться/меняться

>>нужен ли он там вообще?


Теория реляционных баз данных говорит, что первичный ключ должен быть в каждой таблице. В Postgres такого жёсткого требования нет, но обычно лучше ему следовать.
76 2597882
Без литкода можно стать хорошим программистом?
77 2597888
>>597847
Чел, делай всегда primary key как рандомный UUID и все твои проблемы решатся. А на столбцы, если надо будет как-то часто искать по ним, индексы просто повесишь и все. Вторая картинка выглядит лучше первой, потому что в профиле человека ты сможешь легко собрать все его роли.
78 2597910
>>597882
Можно. Но я бы все же не стал бы тебя отговаривать от попыток пошевелить мозгами на литкоде.
79 2597928
>>596982
ваадин годится исключительно для создания внутренних админок или прототипов. ui-кастомизация там, как и гвт - кромешный пиздец.
80 2597933
>>597928
Ну как мы видим - уровень ненужности технологий примерно одинаковый.
81 2597947
Как я полагаю, Application context и Dipendency injection работают являются частью spring Core ?
82 2597948
>>597861

>Examples of such Garbage Collection roots are:


>Local variables and parameters of the currently executing methods


Кек, на последнем собесе так и сказал, а мне в ответ "Неееет, гк работает только с хипом! Неверно!".
83 2597950
>>597933
Зачем работать на джаве, если хочешь дрочить формочки?
84 2597958
>>597950
Без понятия. Спроси у шарпопетуха зачем он какой-то стремный web-ui костыль постоянно тащит, как достижение. Хотя им даже в его дотнете никто не пользуется - на 700 вакух на асп.нет блейзер есть в 40.
85 2597961
>>597947
Да. Контекст это механизм, реализующий di паттерн. Контекст - это основной функционал спринга, с которого он и начинался 20 лет назад. И сейчас его функционал лежит в артефакте spring-core
86 2597973
>>596936
Достаточно Spring Core, Spring Data и Spring MVC.
87 2597974
>>597973
буте и тесты
88 2597988
>>597680
Не выглядит особенно полезным, все эти метрики должны и при обычном мониторинге собираться
89 2598070
поясните за микросервисы. допустим
1. у меня есть клиент, который хочет получить данные из бд
2. чтобы он это мог сделать, ему необходимо отправить куда-то запрос
3. предположим, этот запрос принял контроллер, осуществил запрос к бд и вернул ответ

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

какие вообще есть простые архитектуры для того, чтобы можно было познакомиться с микросервисами и написать свой?
90 2598084
>>598070
Через кафку, не?
91 2598091
>>598084
через раббит в кафку, потом в кликхаус. И никак иначе
92 2598123
>>598091
Principal architect в треде, не иначе
93 2598136
Только узнал про существование ключевого слова record. Блять. Кто-нибудь еще в курсе про его существование? Кто-нибудь пользуется?
94 2598149
>>598136
@Data удобнее. И вообщеу меня жук, иди нахуй со своими жава,ланг,рекордами нахуй.
95 2598156
>>598149
Нахуй нужен жук, когда существует @Query?

Нахуй не нужен.

@Query - путь настоящих хардкорных sql мужыков.
1675437858882.png9 Кб, 720x90
96 2598188
А VSCode для джавы это мем? В том же питоне, особенно в дарте, очень хорошо себя показывает. Неужели как с шарпом придётся использовать жирный кал вижуал студии, только теперь она будет зваться интелькой?
97 2598194
>>598188
идея комьюнити бесплатная. Я вообще хз кому нужна идея ультимейт
98 2598198
>>598194
Мне нужна, там удобная консолька с ораклом и ещё можно дебажить вебсферу.
99 2598199
>>2589889 →
не знаю чел, тут ты или нет. я только сейчас созрел, чтобы на более реалистичном примере написать микруху (1 пик представление 3 разных бд для ms1, ms2, ms3)

что имеем:
1. решил пока оставить прошлую архитектуру (пик 2), как я понял она называется Database Per Service
2. rest по фильмам (ms1) имеет зависимость от rest по статике (ms3)
3. rest по юзерам (ms2) имеет зависимость от ms1 и от ms3 (аватар юзера)
4. если гость (не пользователь) захочет посмотреть первые 10 фильмов, он делает запрос на ms1
- ms1 нужно сформировать запрос, чтобы получить все, что связано с фильмами, но для этого нужно так же обратиться к ms3 за постером, скриншотами и трейлерами
- заранее этот запрос на ms3 отправить нельзя, не зная какие фильмы вернет ms1
- остается ждать ответа от ms1 и делать запрос следом на ms3 (на этом этапе пользователь получает только название фильма, имена актеров, режиссеров с затычками вместо медиа данных)
- после чего выполняется запрос на ms3 для получения медиа-данных
- в итоге двойной запрос, долго, вся хуйня, но я для простоты оставлю наверное пока это так...
- но возникает еще вот что, трейлеры могут весить под сотку мб, их может быть несколько, в таком случае ждать их полной отправки - это еще больше потраченного времени
- от сюда выходит, что хранить большие сырые данные в бд не лучший вариант
- что можно в таком случае сделать? я добавил поле url, но не знаю как на практике это все правильно согласовать с микросервисами. этот url уже должен содержать путь к файлу, который должен храниться где-то? в каком-то облаке? это облако не должно относиться к моей микросервисной архитектуре? оно просто где-то там существует, как файлопомойка?

5. как вариант, добавить прослойку API (пик 3). этот паттерн называется API Composition. но что он улучшает? как по мне, он только усугубляет мою ситуацию с запросами. но может быть я его не правильно как-то пынемаю...
6. по поводу кафки и прочих MQ, разве это не есть ничто иное, как таже самая API прослойка, которая в зависимости от реализации, может так же быть хранилищем очередей запросов, за которыми сервисы будут в нее обращаться? опять же, что тогда в моей ситуации меняется?
7. вариант с дублированием таблиц из ms1 в ms2, или из ms3 в ms1 для меня кажется бессмысленным... в чем тогда суть микросервиса?

в общем, реквестирую советы, как можно несложно изменить архитектуру, при этом сохранив принцип микросервиса. моя задача: сделать пет проект, который я планирую в будущем показывать на собесах. поэтому делать один rest с одной db и одним web клиентом, как мне кажется, не раскрывает суть проекта. с другой стороны, нужно ли вообще это все работодателю? и может быть действительно достаточно ограничиться одной бд, одним рестом и одним клиентом? честно, я даже не знаю что вообще можно добавить в мою логику приложения и вынести это в отдельный сервис, с которым было бы проще работать...

все примеры в сети, которые пишут люди, построены именно так: один клиент (чаще даже вообще без него), один рест и 1 бд...
99 2598199
>>2589889 →
не знаю чел, тут ты или нет. я только сейчас созрел, чтобы на более реалистичном примере написать микруху (1 пик представление 3 разных бд для ms1, ms2, ms3)

что имеем:
1. решил пока оставить прошлую архитектуру (пик 2), как я понял она называется Database Per Service
2. rest по фильмам (ms1) имеет зависимость от rest по статике (ms3)
3. rest по юзерам (ms2) имеет зависимость от ms1 и от ms3 (аватар юзера)
4. если гость (не пользователь) захочет посмотреть первые 10 фильмов, он делает запрос на ms1
- ms1 нужно сформировать запрос, чтобы получить все, что связано с фильмами, но для этого нужно так же обратиться к ms3 за постером, скриншотами и трейлерами
- заранее этот запрос на ms3 отправить нельзя, не зная какие фильмы вернет ms1
- остается ждать ответа от ms1 и делать запрос следом на ms3 (на этом этапе пользователь получает только название фильма, имена актеров, режиссеров с затычками вместо медиа данных)
- после чего выполняется запрос на ms3 для получения медиа-данных
- в итоге двойной запрос, долго, вся хуйня, но я для простоты оставлю наверное пока это так...
- но возникает еще вот что, трейлеры могут весить под сотку мб, их может быть несколько, в таком случае ждать их полной отправки - это еще больше потраченного времени
- от сюда выходит, что хранить большие сырые данные в бд не лучший вариант
- что можно в таком случае сделать? я добавил поле url, но не знаю как на практике это все правильно согласовать с микросервисами. этот url уже должен содержать путь к файлу, который должен храниться где-то? в каком-то облаке? это облако не должно относиться к моей микросервисной архитектуре? оно просто где-то там существует, как файлопомойка?

5. как вариант, добавить прослойку API (пик 3). этот паттерн называется API Composition. но что он улучшает? как по мне, он только усугубляет мою ситуацию с запросами. но может быть я его не правильно как-то пынемаю...
6. по поводу кафки и прочих MQ, разве это не есть ничто иное, как таже самая API прослойка, которая в зависимости от реализации, может так же быть хранилищем очередей запросов, за которыми сервисы будут в нее обращаться? опять же, что тогда в моей ситуации меняется?
7. вариант с дублированием таблиц из ms1 в ms2, или из ms3 в ms1 для меня кажется бессмысленным... в чем тогда суть микросервиса?

в общем, реквестирую советы, как можно несложно изменить архитектуру, при этом сохранив принцип микросервиса. моя задача: сделать пет проект, который я планирую в будущем показывать на собесах. поэтому делать один rest с одной db и одним web клиентом, как мне кажется, не раскрывает суть проекта. с другой стороны, нужно ли вообще это все работодателю? и может быть действительно достаточно ограничиться одной бд, одним рестом и одним клиентом? честно, я даже не знаю что вообще можно добавить в мою логику приложения и вынести это в отдельный сервис, с которым было бы проще работать...

все примеры в сети, которые пишут люди, построены именно так: один клиент (чаще даже вообще без него), один рест и 1 бд...
100 2598202
>>598198
оракл через консольку? Чо там в консольке можно делать?

> и ещё можно дебажить вебсферу.


в вебсфере нет стандартного способа дебага?
101 2598228
>>598202

> оракл через консольку? Чо там в консольке можно делать?


Писать запросы, редактировать таблицы мышкой.

> в вебсфере нет стандартного способа дебага?


Есть какая-то древняя IDE от IBM, только ну её нахуй.
102 2598234
>>598228

>Есть какая-то древняя IDE от IBM, только ну её нахуй.


пиздос. Я думал в конфиге открыл какой-нибудь порт и дебагируй на здоровье
103 2598269
Аноны хэлпуйте, спрашивали на собесе про план запросов, а я про него впервые услышал вообще, там сложно разобраться? Что вообще вкатышу там знать надо?
104 2598288
>>598269
чё за план запросов?
мимо 2 года опыта
105 2598297
>>598288
ну типо я щас читаю, там можно в постгресе эксплеин нажать и тебе напишет, как запрос будет происходить подробно, типо это полезно для анализа, наверное. вроде этот план можно даже в каких-то субд менять, но как я понял в их число постгрес не входит

выглядит вроде как хуйня, щас мож за вечерок разберусь

алсо понял, что вообще пропустил тему с индексами в бд, надеюсь там тоже немного
106 2598311
>>598288
Вкатуны 2021: итоги
107 2598331
>>598199
я сейчас задумался: а надо ли вообще писать микросервис в качестве пет проекта, чтобы взяли джуном??? что-то я вообще не хочу с ними на своем этапе сталкиваться... а писать "микросервис", у которого 1 rest api лежит прослойкой между клиентом и базой данных, как-то стыдно...
108 2598343
>>598269
Вот забыл разраб создать индекс на нужные столбцы, пишет запрос, понимает, что тот работает медленно, смотрит план запроса и видит "full scan" на каких-то атрибутах из where. Создаёт индексы на эти столбцы, в плане уже "index range scan", работает намного быстрее, заебись, не надо обходить всю таблицу целиком. Это только в хеллоуворлдах создание индексов тривиально, но не в легаси говне с тысячей таблиц, в некоторых из которых по 50 столбцов. Да и индексы не бесплатны.
image.png47 Кб, 1240x221
109 2598352
Есть кучка soap ендпоинтов, для каждого эндпоинта сделал по своему конфигу в котором свои маршалы и анмаршелы и прочее. Всё работает, но меня смущает что у меня генерится дохуя этих фабрик и ещё какой-то пароль кидает в логи.
Это нормальный подход или нужно на похуях всё в одну папку закинуть и чтобы одна фабрика разбиралась со всем?
110 2598357
https://habr.com/ru/post/682720/

>Минутка рекламы закончена. В этот момент вы должны понять, что Docker — это хорошо, а если не поняли — закрыть статью, отформатировать свой жесткий диск и пойти мести крыши.



имагинирую ебало этого агрессивного чсвшного прыщавого додика, писавшего в этот момент эту хуету
111 2598365
>>598357
Ебать тебя порвало от безобидного рофла. Тебе больше нравятся душные сухие мануалы?
112 2598369
>>598352
Ты точно уверен, что тебе в 2023 году нужно изучать SOAP?
113 2598376
>>598369
собеседовался 2 месяца назад на проект с соапами. вопросы?

хотя справедливости ради меня там про соап даже не спросили
114 2598377
>>597948
А ты уверен что правильно понял смысл этой цитаты и правильно ее передал на собесе?

В цитате сказано, что локальные референсы являются источниками сборки мусора. Тот факт что они являются источниками, еще не означает то, что сборщик мусора их собирает
115 2598389
>>598365
Рофл в том, что эта омежка агрессивная даже сама не поняла, как начала брызгать слюной. Даже, если не слюной, небольшой мондраж и постукивание зубами точно были. Почитай статью, там где он специально рофлит, сразу заметно по хуевому пикабушному чувству юмора. Если человек :) использует, это уже звоночек...
116 2598390
>>598369
У меня были пару собесов до этого, везде спрашивали с чем работал, говорил с рестом всегда, когда молчал про соап говорили плоха.
А вообще ща такие клиенты, ты вот обмажся рестами, но когда тебе 10 страховых компаний кидают только wsdl и xsd чтобы ты соап запросы им делал, то хуй им чё скажешь
117 2598393
>>598389

Щас бы разбирать повадки хабралеммингов. Никогда такого не было и вот опять.
118 2598395
Сервлеты можно разрисовывать swing'om, а javaFx'om можно ?
Хочу перейти на фикус.
119 2598400
>>598376
На "проекте с соапами" есть давно устоявшийся подход, где никто не задаётся вопросами о фабриках и нормальных подходах, потому что конфиги написали динозавры 15 лет назад, а остальные просто делают всё по аналогии до тех пор, пока изживший себя соап окончательно не выпилят из проекта.
>>598390
Вызывать готовые соап-сервисы легко, там не нужно знать, как писать их самому.
120 2598406
>>598395
Что ты там разрисовывать собрался? Сервлеты - это тупо спецификация для реализации HTTP. Клиент пиши хоть на WinAPI, сервлетам похуй.
121 2598412
>>598406
Ой, это апплеты разрисовывают...
122 2598428
>>598412
Апплеты депрекейтнуты сотню лет назад. Большой удачей будет если ты вообще хоть чето на них запустишь.
123 2598437
>>598412
Можно через JFXPanel, который запускает JavaFX поверх свинга. Гугл говорит, что с апплетами будет работать.
124 2598442
Подскажите пожалуйста, в чем разница между Dependency Injection и Inversion Of Control ?
125 2598456
>>598442
На Википедии всё написано.
IoC - это подход большинства фреймворков, когда в начале развешиваешь коллбеки и другие компоненты и дальше вызываешь main loop, который начинает обрабатывать события и сам вызывает методы твоих компонентов.
DI - разновидность IoC, где компоненты указывают, какие ещё компоненты им нужны для работы, а фреймворк их ищет и передаёт компонентам так, чтобы компоненту не нужно было самому создавать и инициализировать другие компоненты и можно было сразу писать логику.
126 2598464
Алишев говорит что IoC это когда мы используем интерфейс, который создает зависимости !
127 2598465
>>598464
Чё за Алиешев? Ещё один инфоцыган?
128 2598471
>>598464
Скорее всего он говорит что-то другое. Кидай референс где он такое ляпнул. Интерфейс не может ничего создавать.
129 2598476
>>598471
А как же статические методы?
130 2598480
>>598476
Интерфейс их не создает, он их декларирует. Это другое
131 2598504
>>596713 (OP)
увидел 3-й пик, обосрался. Подумал с моего компа скрин. Что скажете об этом курсе?
132 2598507
>>598504
Очень поверхностно. Ддя вкатуна пойдет, для джуна+ уже недостаточно.
133 2598572
Подскажите пожалуйста. Есть приложение на javafx. Его возможно запаковать таким образом, чтобы был один файл, который бы содержал в себе уже все необходимое для работы (без установки)? Про то как запустить на разных ОС (с установкой) я так понимаю тут написано https://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm
Возможно ли запаковать jar в apk для установки и запуска на android?
134 2598627
Как в новом уи от идеи установить даркулу? Стандартный цвет слишком тёмный, неудобно.
135 2598661
>>598627
В том же меню, где и раньше.
Новый юай полное говно, имхо
136 2598666
>>598572
Можно запаковать в один жарник. Дальше, если нужен exe, ебаться в launch4j.
137 2598669
>>598471
Ну типа, класс Б не должен быть зависим от класса А. Они оба должны быть зависимы от интерфейса. Во.
138 2598726
>>598661
А мне, в принципе, нравится. Сначала было непривычно, а потом привык.
139 2598727
>>598726
говно жрать тоже нравится?
140 2598731
>>598727
В новой идее можно билдить, не открывая меню мавена справа.
141 2598733
>>598731
КАК???
142 2598734
>>598733
В верхней панели синяя плашка с кнопками.
143 2598736
>>598734
ПОКАЖИ
144 2598738
>>598731
Всю жизнь билжу через идеевский терминал, мавенским меню не пользуюсь. В чем не прав?
.png73 Кб, 954x354
145 2598744
>>598731
Никогда этим неудобным говном не пользовался, всегда собирал через конфигурации.
146 2598747
>>598744
>>598738
>>598736
Сука, так оно и раньше было! Впрочем, не отменяет то, что нажать на большую кнопку удобнее, да и на дурак хд мониторе места не занимает лишнего меню с мавеном.
147 2598755
До сих пор сижу на идее 2019 года, обновлять не планирую.
148 2598828
>>598755
И на 8 джаве в проде. Все знают таких пердунов.
Спасибо, что не на 7.
149 2598893
>>598755
Сижу на эклипсе и похуй на зумеров
150 2598932
>>598828
Сижу на идее 2021, обновил бы, но я в РФ, а жиды - нет. В старой идее ждк 17+ запрещается запускать что ли?
изображение.png4 Кб, 456x92
151 2598988
кто-нибудь использовал seata для реализации саги в микросервисах? как оно? про нее инфы нет почти, никто не обсуждает, статьями с ней не срут. неужели никто ее не использует? есть ли какие-то более известные аналоги? и что делать, когда видишь пикрил?
152 2599028
>>598988
Впервые слышу.
153 2599032
>>598988
Сдаётся мне, все пишут распределённые транзакции вручную.
154 2599038
>>598932
А в чем проблема?
155 2599041
>>599038
Вангую, что в корпоративном сервере лицензий.
image.png4 Кб, 68x86
156 2599050
157 2599054
>>599032
вот только примеров почему-то нигде нет. зато 1001 статья создания "микросервиса" с одной апишкой и одной бд. даже если учесть, что распределенные транзакции это анти-паттерн, то подобного рода статьи все равно не раскрывают сути микросервисов. алсо, в реальности я уверен распределенные транзакции есть, без них почти невозможно, или это уже не микросервис, а распределенный монолит с shared базой данных.
lic.JPG21 Кб, 948x197
158 2599055
>>599038

>>А в чем проблема?

159 2599056
>>599055
А кто мешает на триалках сидеть?
160 2599221
>>599056
Зачем ебаться с триалкой, если можно просто не обновляться?
Что там такого ценного завезли за пару лет?
161 2599261
>>598988

Почитал. Звучит как типа "йоу, мы взяли и переизобрели two-phase-commit". Ну молодцы, супер, чо.

>про нее инфы нет почти, никто не обсуждает, статьями с ней не срут



Проблема не столько в туле, сколько в постановке задачи. Распределенные транзакции считались ебаниной душной еще во времена EEшных серверов приложений, и остаются ебаниной душной сегодня, в эпоху микросервисов. Если есть альтернативы или допустимые компромиссы, они лучше и предпочтительнее чем ввязываться во все это. Даже ебаный монолит лучше. В распределенные транзакции идут либо от безнадеги, когда другого выхода тупо больше нет, либо по наивности.

>и что делать, когда видишь пикрил?



Для начала - чекнуть что конкретно там за "уязвимость", потому что эти механизмы частенько фолс-позитивят. Ну а потом, ждать апдейтов. Или забить проконсультироваться с СБ своей шараги.
162 2599264
>>599261
я чот не понял про эту сагу. Это типа надо делать ручку для "отката транзакции" в виде новой транзакции? Сохранил заказ, потом пришла команда отмены, и в новой транзакции удаляешь этот заказ. Так чтоли?
163 2599269
>>599221
Новую картинку в прямоугольничек загрузки. И ещё новое уи.
164 2599279
>>599264

>Это типа надо делать...



Типа да. Но это ничего не меняет, причем неважно - делаешь ты это тулом или руками. Такие вещи - не мейнстрим. Их делают от безнадеги в узком спектре задач, и они всегда приносят боль. Здесь нет ничего элегантного, что можно было бы подсветить в статьях и словить хайп. Здесь нет хороших практик, которые "каждый должен знать". Это - просто грязная жопа, следствие чужих проебов, технического дефолта. У распределенных транзакций не может быть фанатов.
165 2599283
>>599279
ну так это суть хваленых микросервисов. Если нужна транзакционность то нужен монолит
166 2599293
>>599283
Нужно просто резать на сервисы так, чтобы транзакции нужны были только для сущностей внутри сервиса.
167 2599296
>>599283
Нет. Это ни в коем случае не суть, не цель и не фишка хваленых микросервисов. Это как раз темная сторона микросервисной архитектуры. Как все в этом проклятом мире айти - микросервисы что-то упрощают, усложняя что-то другое.

Суть микросервисов в том, что ты делишь свою единую монолитную модель на такие контексты, в которых тебе нет нужды обеспечивать сиюминутную консистентность (и как следствие, нет нужды в распределенных транзакциях между этими двумя кусками). Данные в этих двух разделенных моделях-контекстах могут некоторое время пребывать в рассинхроне, но при этом быть eventually consistent за счет более мягких механизмов синхронизации вроде event sourcing'а. Иногда бывает так, что мягких механизмов не хватает, тогда (и только тогда) приходится городить саги, а иногда даже саг не хватает, и тогда городят, прости господи, двухфазный коммит. Но саги и расщепление транзакций - нихера не самоцель деления на микросервисы.
168 2599297
>>599283

Вот этот чел >>599293 шарит
169 2599299
>>599293
клиент создает заказ, платит деньги и получает товар

Нужно ли делить на микросервисы "заказы", "платежи" и "склад"? Если да то как без транзакций?
170 2599304
>>599299
Платежи с заказами в одном сервисе. На сервис склада инфа идет не транзакционно - сообщением из кафки после транзакции на изменение заказа и платежа.
171 2599311
>>599304
хм. Т.е. делить на микросервисы надо так, чтобы транзакционность была только внутри сервиса?
172 2599314
>>599293
Чел, вот ты то мне и нужен. Чекни тут >>2598704 (OP) 1ый и 2 пик, можешь не читать пасту. Как это можно разбить без зависимостей? Я уже третий день ебу себе голову и мне буквально хуево от этого всего. Я действительно уже готов писать монолит (хз вообще с чего я решил, что написать микросервис это престижней, чем монолит в качестве пета...). Или написать микросервис, но условиться так: если админ захочет добавить новый фильм в базу через клиент, ему это нужно будет сделать в несколько этапов, сначала добавить в movie, затем только после успешного добавления вручную так же добавлять постер, скриншоты и трейлер. С удалением из бд сложней, тут таблицы не связаны локально, каскадирования нет. Потому решение такое же тупое: сначала медиа всю удалить и только после успешного удаления браться удалять сам фильм. Но тут проблема в том, что у сервиса с юзерами есть тоже зависимость с фильмами. Тогда придется вторым этапом не фильм удалять, а все зависимости у юзеров, и третьим этапом сам фильм. Но в реальности такая ситуация возможна? Т.е. ты условно админ бд с фильмами, нахуя тебе ее делать меньше? (разве что пыпа запретил фильмнейм, поэтому нада удолить)
173 2599317
>>599299

>клиент создает заказ, платит деньги и получает товар



Одна такая транзакция относительно просто бьется на несколько локальных, с синхронизацией через эвенты.

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

Первый статус - "заказ сформирован", происходит в тот момент когда клиент засабмитил заказ.

"Заказ сформирован - заказ оплачен" в тот момент, когда платеж был совершен (локальная транзакция прошла на сервисе платежи).

"Заказ оплачен - заказ собран" в тот момент, когда на сервисе склада прошла транзакция резервирования товара.

"Заказ собран - заказ отправлен" в тот момент, когда сервис логистики отрапортовал об отправлении.

И так далее. Если какая то из вышеозвученных локальных транзакций не прошла, заказ переходит в состояние "Заказ отменен (не прошел платеж)" либо "заказ отменен (кончился товар)".

Детали могут отличаться в зависимости от конкретных требований, но суть одна.
174 2599322
>>599314
Чел, я тебе ответил банальную вещь из первого абзаца любой статьи про микросервисам.
А читать конкретные таблицы и схему конкретных сервисов и переразбивать их это уже работа. А у меня выходной и я на самом деле таким никогда не занимался.
175 2599325
>>599322
Мне анон в прошлом треде отвечал, но я тогда не был еще готов анализировать это все. Да и бд не было как таковой. Он мне про кафку тогда говорил и эвент сурсинги, но для меня это сложно пездец еще... Блин, тот анон тоже толковый был, но он потерялся походу...
176 2599337
>>599317
То есть на примере эти эвенты несколько сервисов и пишут и читают в один и тот же топик? В эвенте статус заказа айди заказа, сумма платежа, айди товара на складе. В складе и в платежах при формировании заказа формируется запись в таблице заказов, где есть айдишник и нужная сервису-консьюмеру информация. И когда они видят статус, который они не только сохраняют, но и обрабатывают, то они делают обработку и кидают сообщение с измененным статусом в тот же топик.
Примерно так?
177 2599344
>>599314
Мне лень читать твои простыни, но, похоже, тебе нужен микросервис-оркестратор, который будет вместо твоего web client. Там сосредоточена логика работы с многоэтапными процессами, по порядку отправляются запросы в нужные микросервисы, ответы складываются в единый результат и отправляются пользователю. При оркестрации микросервисы обычно не взаимодействуют друг с другом напрямую, всё идёт через оркестратор. Остаётся решить, как сделать так, чтобы оркестратор не превратился в очередной монолит.

мимо
178 2599358
>>599344
В этом и суть, хочется без этих распределенных транзакций и их разновидностей. Без саг, оркестров, и хореографов. Я пытался найти хоть какие-то примеры кода в купе со спрингом, как это правильно и лучше сделать. Но ничего не нашел абсолютно. Пытался понять чем тут может помочь кафка, но не осилил. Базовую идею вроде понял, но потом начинается какой-то пиздец, суть теряется, и уже даже не уверен способно мне это как-то помочь в моем случае или нет. Если решений в принципе простых нет для такого рода дел, то я походу скорее всего плюну и напишу монолит, либо сделаю менеджмент фильмами, как писал выше - в несколько этапов. Я еще думал, может просто бд хуево как-то разбил, но иначе там никак, без зависмостей не обойтись все равно.
179 2599386
>>599337
Топология эвентов - отдельная большая тема.

1. Общий топик на все сервисы - геморрой. Как вариант, если взять брокер rabbitmq, можно сделать по очереди для каждого отдельного сервиса, откуда он будет читать свои "входящие", по exchange для каждого сервиса (или даже каждого типа сообщения), который шлется этим сервисом, куда сервис будет писать свои "исходящие", и биндить конкретный exchange на конкретные очереди, тем самым определяя маршрут по которому сообщение пойдет.

2. В сообщении - только та инфа, которая нужна получателю (получателям). Если "заказам" от "склада" нужно только подтверждение резервации, в сообщении от "склада" будут айдишник заказа и тип "резервация прошла успешно/резервация отклонена".
180 2599394
>>599386
Ну я просто с раббитом не работал, только с кафкой.
Там вроде вместо очереди на каждого консумера принято делать один жирный топик на весь эвент, с лишними сообщениями, просто каждый тип эвентов идет в отдельную партицию, а потом консумер читает только нужную партицию.

Сука, когда нибудь я дочитаю кабанчика и перейду к книжке по микросервисам, по эвент-дривен девеломпенту и кишкам постгри.
181 2599395
Что джуну могут дать написать в первый день на работе? Всегда интересно было... Вот я прихожу - чел, который только крудошлепить мог простые запросы. Что мне делать? Я открываю проект, и ахуеваю. Неиронично, даже за неделю, я вряд ли смогу понять там хоть что-то, если буду постоянно просто смотреть код.
182 2599396
>>599358
Опиши словами, какие у тебя пользовательские сценарии. Не картинками со схемой БД как в ОП-посте, без технических и микросервисных терминов. Словами кабана-заказчика, который в душе не ебет за микросервисы и за джаву.

И тогда можно будет рассуждать.


Мимо эвент-сорсинг-чел с прошлого треда, никуда не терялся.
183 2599399
>>599394

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



Ну ок, вроде звучит норм, попробуй так.
184 2599401
>>599358
Никак ты это без саг не сделаешь. Все используют саги. Потому и примеров нет, что без них никак.
Монолит писать все умеют, там же ничего сложного. Продолжай ебаться с микросервисами, изучишь много того, что пригодится потом.
И нет никаких "сегодняшних реалий", монолиты никуда не денутся, их так и будут писать, потому что микросервисы нужны далеко не всем. Нет такого, что "монолиты только в легаси", сейчас пишут и будут писать новые монолиты.
185 2599410
>>599395
В первый вообще какую-нибудь дрисню. Конфиги поправить например в 10 сервисах. Тесты написать к уже готовой апишке.
Могут вообще тестовую задачу дать.
Ну а потом через пару неделек поле добавить в сущность. Миграциями в бд, потом в модельку, в репошку, если запрос не генерится, в дтошки.
Добавить фильтры или сортировку в готовый эндпоит.
Потом через месяца два добить новый эндпоит.

Это мы так в маленькой команде на 7 джавистов на новом проекте к джунам относимся. В больших командах, да еще и с большим легаси или с бюрократией, как в банках наверно все немного иначе.
186 2599412
>>599396
Сценарий такой:
1. Возможность найти любой фильм, посмотреть его описание, обложку, скрины из фильма, трейлер, если есть, т.е. обычный функционал подобных сервисов
2. Возможность регистрации пользователя
3. Редактирование профиля пользователя (имя, почта, аватар...)
4. Пользователь может добавить фильм в "любимые"
5. Пользователь может написать обзор на фильм
6. Пользователь может оценить фильм и обзор
7. Админ может добавлять/удалять фильмы через свою админ панель, а так же медиа данные к нему (трейлер, постер, скрины)

Я это все разделял логически на 3 базы данных:
1 - фильмы (жанр, заголовок, актеры, рейтинг...)
2 - пользователи (логин, пасс, емеил, фэворит листы фильмов, их оценки фильмам, их обзоры на фильмы...)
3 - статика с медиа данными (скрины, трейлеры, аватары, постеры)
187 2599414
>>598377
Даже не представляю, как можно будучи русскоговорящим это по-другому понять.
188 2599415
>>599410
А зачем тестовую давать, если тебя уже приняли? Или ора сложней будет? Что бывает, если ты за весь день никакого результата не добился? Например

>Конфиги поправить например в 10 сервисах.


Вот как ты это себе представляешь? Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить? Порт что ли? Гыгыгы
Я им скорее вообще весь конфиг наебну и они не смогут собрать проект
189 2599416
>>599395
В первый день? Ничего, я всю неделю ждал, когда исполнят все заявки, принесут пекарню, выдадут все права и доступы, установятся все программы (которые тоже через заявки, самому ставить нельзя), потом три дня ебался с развёртыванием проекта, который поднять - целая наука.
Потом тимлид научил меня дебажить, я этим не пользовался в пет-проектах и всё отлаживал через System.out.println.
А дальше всё как у этого анона >>599410 , исправление опечаток в текстах ошибок, написание тестов, добавление новых полей в отчёты. Где-то через месяц начали давать более крупные задачи, типа реализовать CRUD-справочник.

Но это у нас большая команда из 50 разрабов, большое легаси и бюрократия, потому что банк лол
190 2599418
>>599415

> Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить? Порт что ли?


Так тебе в джире задачу распишут очень подробно, какие строки смотреть, на что заменять. Твой код будут ревьюить, т.к. в основную ветку без аппрува ты не можешь подмержить.
191 2599419
>>599418

>Так тебе в джире задачу распишут очень подробно


>Твой код будут ревьюить


Ахахаха.
192 2599421
>>599418
Если они сами знают что, где и как поменять, нахуя мне это давать? Чел, который писал этот туториал, мог уже сам все это исправить. Или это западло? Лол. Ну или это специально так мои навыки проверяют? Но о каких правда навыках в такой ситуации может быть речь я хз... По бумажке любая кухарка может буковки подправить.
193 2599422
>>599415
Тестовый сервис, чтобы новичок ознакомился с стеком и подходами, кодстайлом, гитфлоу и тп. Даю ему сервис с прода для примера, даю упрощенную задачку для сервиса. Задание на неделю. Раз в день-два подхожу, спрашиваю промежуточные результаты.

>Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить?


ну примерно. надо во всех сервисах что-то скопипастить. Ну и даешь ему сервис откуда копипастить и сслыку репошки сервисов. Он читает коммит откуда копипастит, и делает 10 копипаст, 10 коммитов и 10 мров.

Давал недавно джуну баг найти поправить. Он не смог сходу разобраться. Пришлось за него разобраться и код ему под диктовку надиктовать.
194 2599423
>>599419
Ну да, у джунов все таски так проходят. Все понимают, что джуны сами не разберутся и правильно не сделают. Джуна надо обучать, чтобы он начинал приносить пользу проекту, иначе смысл его брать.
195 2599424
>>599422
Блядь, вы там че совсем ебнутые? На собесе словно в наса ракеты строить ищите кандида. А после рефера код диктуете какой писать.
196 2599428
>>599421
Чтобы тебя обучить. Общеизвестно, что джуны в самом начале убыточны и приносят мало пользы, потому надо обучать. Дальше так подробно расписывать не будут, потому что ты уже это умеешь. Сеньоры, конечно, всё знают и всё могут сами сделать, но на все задачи у них тупо не хватит времени.
197 2599429
>>599401

> Никак ты это без саг не сделаешь. Все используют саги. Потому и примеров нет, что без них никак.


Не понял логики. Если это делают все, то почему до сих пор ни одного реального кода в качестве примера? Почему 100500 однотипных говно примеров говно микросервисов с одной бдшкой, где даже намека нет на общение между микросервисами?
198 2599430
>>599424
Ну так я диктовал, потому что он не понял что делать за 2 дня. Не выгонять же его сразу. Если к концу испытательного не перестанет так сильно тупить, тогда и выгоним.
Ну и я хотел все за него просто написать, сэкономил бы час из трех потраченных на него, но после написания под диктовку он хоть что-то понял.
Ну и собесил его тимлид, а онбордингом занимаюсь я, вчерашний джун.
199 2599432
>>599412

Ок. К разбиению претензий нет, к сценариям тоже.

А теперь перейдем к дилеммам.

>>599314

>Как это можно разбить без зависимостей?



Я тебе еще в том треде сказал. И в этом повторю. С чего ты взял, что зависимости между сервисами недопустимы вообще ни в каком виде? Зависимости - это нормально. Просто природа этих зависимостей между сервисами другая.

> таблицы не связаны локально, каскадирования нет


Да, все так. Да, это доставляет ряд неудобств и имеет ряд недостатков. Но в то же время имеет и ряд достоинств. Так как у тебя нет между моделями общих констрентов, эти модели могут располагаться в разных СУБД на разных хостах - СУБД перестает быть боттлнеком. Ради этих достоинств и делят на микросервисы. Ты этих бенефитов не прочувствуешь на своем пете, потому что ты - не "кинопоиск", и у тебя еще не скоро настанет момент когда ты в СУБД упрешься, но это не значит что идея априори бессмысленна.

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



Ну да. Так а в чем сомнения? Или ты как себе в монолите это видел - админ одним запросом всю это пачку добавляет? А если один из файлов не загрузится - всю транзакцию дропнешь? Представляешь ебало админа в такой момент - ему заново надо будет анкету заливать? Админу тупо самому будет удобнее наполнять контент поэтапно.

>С удалением из бд сложней



А давай представим что админ удалил фильм, но контент по этому фильму из сервиса "ассеты" еще не удалился. Ответь себе на вопрос - насколько это - проблема? Ну открывает юзер страничку с фильмом. Получает 404, потому что на сервисе "фильмы" такого фильма не знают. Все. Какая разница что контент фильма сиюминутно не дропнулся? Ну дропнется попозже, когда от сервиса "фильмы" до сервиса "ассетов" дойдет уведомление что фильм дропнулся. Юзер этого даже не заметит.

>Но тут проблема в том, что у сервиса с юзерами есть тоже зависимость с фильмами



Ок, погнали думать. Вот у юзер заходит на страничку своих фаворитов. Скорее всего эта страничка будет делать следующее:
1. С сервиса "пользователи" загрузит айдишники фильмов-фаворитов
2. Затем, используя сервис "ассетов", страничка будет в фоне подгружать постеры и трейлеры, а с сервиса "фильмы" - тайтл и актерский состав.

Предположим один из таких фоновых запросов сказал - "все, фильма нет". Ну и хуй с ним. Опять же вопрос - такая ли уж большая проблема что айдишник одного из фаворитов пользователя больше не резолвится? Берешь и рисуешь заглушку, что "этого фильма нет", оставляя на этой заглушке кнопку "удалить из фаворитов". Или вообще не показываешь несуществующий фильмв списке, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".
199 2599432
>>599412

Ок. К разбиению претензий нет, к сценариям тоже.

А теперь перейдем к дилеммам.

>>599314

>Как это можно разбить без зависимостей?



Я тебе еще в том треде сказал. И в этом повторю. С чего ты взял, что зависимости между сервисами недопустимы вообще ни в каком виде? Зависимости - это нормально. Просто природа этих зависимостей между сервисами другая.

> таблицы не связаны локально, каскадирования нет


Да, все так. Да, это доставляет ряд неудобств и имеет ряд недостатков. Но в то же время имеет и ряд достоинств. Так как у тебя нет между моделями общих констрентов, эти модели могут располагаться в разных СУБД на разных хостах - СУБД перестает быть боттлнеком. Ради этих достоинств и делят на микросервисы. Ты этих бенефитов не прочувствуешь на своем пете, потому что ты - не "кинопоиск", и у тебя еще не скоро настанет момент когда ты в СУБД упрешься, но это не значит что идея априори бессмысленна.

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



Ну да. Так а в чем сомнения? Или ты как себе в монолите это видел - админ одним запросом всю это пачку добавляет? А если один из файлов не загрузится - всю транзакцию дропнешь? Представляешь ебало админа в такой момент - ему заново надо будет анкету заливать? Админу тупо самому будет удобнее наполнять контент поэтапно.

>С удалением из бд сложней



А давай представим что админ удалил фильм, но контент по этому фильму из сервиса "ассеты" еще не удалился. Ответь себе на вопрос - насколько это - проблема? Ну открывает юзер страничку с фильмом. Получает 404, потому что на сервисе "фильмы" такого фильма не знают. Все. Какая разница что контент фильма сиюминутно не дропнулся? Ну дропнется попозже, когда от сервиса "фильмы" до сервиса "ассетов" дойдет уведомление что фильм дропнулся. Юзер этого даже не заметит.

>Но тут проблема в том, что у сервиса с юзерами есть тоже зависимость с фильмами



Ок, погнали думать. Вот у юзер заходит на страничку своих фаворитов. Скорее всего эта страничка будет делать следующее:
1. С сервиса "пользователи" загрузит айдишники фильмов-фаворитов
2. Затем, используя сервис "ассетов", страничка будет в фоне подгружать постеры и трейлеры, а с сервиса "фильмы" - тайтл и актерский состав.

Предположим один из таких фоновых запросов сказал - "все, фильма нет". Ну и хуй с ним. Опять же вопрос - такая ли уж большая проблема что айдишник одного из фаворитов пользователя больше не резолвится? Берешь и рисуешь заглушку, что "этого фильма нет", оставляя на этой заглушке кнопку "удалить из фаворитов". Или вообще не показываешь несуществующий фильмв списке, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".
200 2599436
>>599429
Все так делают в проде. Примеры для новичков пишутся авторами, которые сами недалеко ушли, но очень сильно хотят писать статьи. А опытным разрабам, которые могут дать больше конкретики, не до вкатунских пет-проектов, они на работе все заняты.
Вообще, давно заметил, что нормальных примеров мало по чему угодно, разве что по вебговну с реактами ищется всё.
201 2599442
>>599436
Почему я примеры, как писать изъебистые запросы на малопопулярной nosql субд могу найти, какую нибудь хуйню по эврике или настройке метрик и трейсов могу найти, а саги эти есть только в теоретических книжках?
202 2599448
>>599442
Забей, чел тебя троллит. Говорить "все лабают саги в микросервисах", это как сказать "все юзают паттерны в джаве". Ничего не сказать.
203 2599450
>>599442
Там архитектура, а тут конкретные технологии. По технологиям есть единая документация, где и так всё это описано, а в архитектуре никакой общепринятой документации с описанием единого подхода нет и быть не может. Остаётся задаваться теоретико-философскими изысканиями.
>>599448
Я потому и говорю, что сказать тут действительно ничего нельзя. Анон задаётся вопросом уровня "как писать на джаве так, чтобы не юзать паттерны". Очевидно же, что никак.
204 2599454
>>599432

>Или ты как себе в монолите это видел - админ одним запросом всю это пачку добавляет?


Ну, вообще, да. Даже, если не одним, т.е. есть возможность потом добавить картинки и видео, все равно должна быть возможность добавить это все сразу. Но если под капотом это будет N отдельных запросов в разные сервисы, то снова все упирается в распределенные транзакции. Потому что без транзакции у тебя 1 запрос успешно выполниться, а другой нет (или вообще потеряется где-то из-за сбоев в сети), но ответ придет от первого ОК. Ты будешь думать, что все действительно ок, а на деле даже не будешь знать о том, что нихуя не ок, пока сам не решишь проверить.

>Представляешь ебало админа в такой момент - ему заново надо будет анкету заливать?


Тут больше от клиента зависит, можно же не удалять последние заполненные поля формы.

> А давай представим что админ удалил фильм, но контент по этому фильму из сервиса "ассеты" еще не удалился. Ответь себе на вопрос - насколько это - проблема?


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

> Ну дропнется попозже, когда от сервиса "фильмы" до сервиса "ассетов" дойдет уведомление что фильм дропнулся. Юзер этого даже не заметит.


Какое уведомление? Мы ведь рассматриваем ситуацию, когда нет никаких mq или кафок, нет никаких саг? Тут и проблема основная кроется, что нужно как-то следить за всем этим мусором... Примера реализации даже самой простой саги я не смог найти.

> Или вообще не показываешь несуществующий фильмв списке


Это, если удаление фильма админом дошло до завершающей стадии, которая удалила и ассеты и сам фильм. А если удалились только ассеты? Там просто будет непрогруженный фильм, что будет выглядеть криво. Допустим, админ снова подумал, что удалил фильм успешно, а на самом деле это не так. И он таким же мусором, только без ассетов, плавает в бд. Мы ведь говорим все еще о ситуации без mq, кафки?

>, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".


Опять же, не совсем могу представить это событие. Как вообще из пользователей можно удалить фильм? Т.е. обычный пользователь чекал свой список, увидел что какой-то фильм - больше не фильм, удалил его из своего списка и тем самым сгенерировал запрос на удаление остатков из бд с фильмами?
204 2599454
>>599432

>Или ты как себе в монолите это видел - админ одним запросом всю это пачку добавляет?


Ну, вообще, да. Даже, если не одним, т.е. есть возможность потом добавить картинки и видео, все равно должна быть возможность добавить это все сразу. Но если под капотом это будет N отдельных запросов в разные сервисы, то снова все упирается в распределенные транзакции. Потому что без транзакции у тебя 1 запрос успешно выполниться, а другой нет (или вообще потеряется где-то из-за сбоев в сети), но ответ придет от первого ОК. Ты будешь думать, что все действительно ок, а на деле даже не будешь знать о том, что нихуя не ок, пока сам не решишь проверить.

>Представляешь ебало админа в такой момент - ему заново надо будет анкету заливать?


Тут больше от клиента зависит, можно же не удалять последние заполненные поля формы.

> А давай представим что админ удалил фильм, но контент по этому фильму из сервиса "ассеты" еще не удалился. Ответь себе на вопрос - насколько это - проблема?


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

> Ну дропнется попозже, когда от сервиса "фильмы" до сервиса "ассетов" дойдет уведомление что фильм дропнулся. Юзер этого даже не заметит.


Какое уведомление? Мы ведь рассматриваем ситуацию, когда нет никаких mq или кафок, нет никаких саг? Тут и проблема основная кроется, что нужно как-то следить за всем этим мусором... Примера реализации даже самой простой саги я не смог найти.

> Или вообще не показываешь несуществующий фильмв списке


Это, если удаление фильма админом дошло до завершающей стадии, которая удалила и ассеты и сам фильм. А если удалились только ассеты? Там просто будет непрогруженный фильм, что будет выглядеть криво. Допустим, админ снова подумал, что удалил фильм успешно, а на самом деле это не так. И он таким же мусором, только без ассетов, плавает в бд. Мы ведь говорим все еще о ситуации без mq, кафки?

>, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".


Опять же, не совсем могу представить это событие. Как вообще из пользователей можно удалить фильм? Т.е. обычный пользователь чекал свой список, увидел что какой-то фильм - больше не фильм, удалил его из своего списка и тем самым сгенерировал запрос на удаление остатков из бд с фильмами?
205 2599458
>>599450

> Я потому и говорю, что сказать тут действительно ничего нельзя. Анон задаётся вопросом уровня "как писать на джаве так, чтобы не юзать паттерны". Очевидно же, что никак.


Вот только примеры паттернов есть и их много разных. А примеров этого говна даже в самом простом виде нет нигде. Если я раньше любил писать говнокод и изобретать велосипед, то сейчас я этого не просто не люблю, но и боюсь. Боюсь утонуть в собственном говне, потерять тонны времени на решение проблемы в проблеме в проблеме в проблеме, в итоге придти на двач (единственное место, где мне могут помочь), но вместо помощи меня только еще сверху калом закидают и потроллят. Я вообще никого не обвиняю из анонов итт, если что. Исключительно констатирую факт, что писать велосипеды, особенно, механизм которых достаточно сложен и запутан - боюсь.
206 2599462
>>599458
Даже с паттернами не всё так просто. Часть паттернов легко понять и объяснить с примером в 30 строчек. А есть паттерны, которые вызывают скрытые проблемы, и о них надо знать, далеко не в каждой статье про паттерны они вообще упоминаются, не говоря уж о подробном их рассмотрении. Есть и Егор Бугаенко с элегантными объектами и своим собственным видением паттернов. Наконец, есть такие штуки, как MVC и REST, их в каком-то смысле тоже можно отнести к паттернам. MVC далеко не все понимают и пишут SQL-запросы в контроллерах, ещё многие задаются вопросом, как соответствующие классы правильно располагать в проекте, и там нет универсального ответа, кто-то вспоминает про DDD. И REST, который вызывает ещё больше вопросов, никто не знает, как его правильно готовить, в бугурт-треде уже третий год не устают про это сраться.
А микросервисы не изучить так же просто, как обычные технологии, где загуглил готовый пример и всё понял. Надо погружаться, понимать, что делаешь и зачем, много думать, над какими-то вопросами думать неделями, много раз психануть, всё удалить и начать писать заново, читать книги, очень много экспериментировать. Примеры, впрочем, найти можно на каком-нибудь гитхабе, но и там большинство проектов будет единственным микросервисом с одной БД.
207 2599464
>>599454

>все равно должна быть возможность добавить это все сразу.



Ты щас пытаешься со мной спорить на предмет требований, что бессмысленно. Из нас двоих требования сейчас определяешь ты, и если ты сказал что должна быть одна транзакция, я тебе отвечу что хуй с тобой, тогда делай монолит. Но это не имеет никакой корреляции с реальностью: в реальности требования определяет клиент, и ему будет по большей части похуй на такие нюансы. Ты привык что в мире монолитов и реляционок целостность данных - ультимативная ценность. Но для клиента это - не совсем так. Клиенту важно, чтобы твой кинопоиск обслуживал миллионы запросов в секунду, и тут уж хошь не хошь, а на компромиссы идти придется.

>Настолько, что в бд плавает мусор, который никак не связан с фильмом. И никто не вспомнит даже о нем и не найдет, только если случайно, а он тем временем будет нагружать бд. Если таких "зомби" в бд будет много, то в этом явно ничего хорошего не будет.



ПО-ХУЙ! Во первых - ты еще доживи до того момента, когда это станет проблемой. Во вторых - проблема мусора решаема. Проведи аналогию с джавой: в джаве же тоже есть мусор. И ничего, никому он не мешает. Где есть мусоро, есть и мусор-коллектор.

>Мы ведь рассматриваем ситуацию, когда нет никаких mq или кафок



Ну возьми да заведи крон таску по поиску и чистке мусора в ассетах на основе того, какие фильмы есть в "фильмах". Или заведи табличку РКНнутых фильмов для того, чтобы в этой таске отслеживать какие фильмы были РКНнуты. Да, это будет долгая операция - ну повесь ее в три ночи, когда все твои юзеры спят. Или разбей ее на куски, типа, еженочно мы чистим ассеты только в течение часа - сколько за час успели почистить, столько и почистится. Eventually мусор соберется.

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

>А если удалились только ассеты?



А ты скажи что "фильмы" - единственный source of truth. РКНнутым фильм считается только если он дропнут из "фильмов", а ассеты - независимая сущность с независимым лайфциклом, который админ вправе менеджить отдельно.

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

Посмотри на реальные сервисы. Посмотри на ютуб. Видео из ютуба может быть давным давно грохнуто админами, но при этом найтись через поиск, или быть частью какого нибудь плейлиста (где будет торчать вместо него плашка что оно удалено администраторами). Посмотри на гугл. Он спокойно может отдавать тебе ссылки из своих индексов на интернет ресурсы, которые больше не существуют. Steam, который на фоне РФ-санкций может показывать тебе игру в поиске, плашку игры в магазине, фаворитах и прочих местах, но при переходе на страничку этой игры сказать, что ее не существует в регионе.

Консистентность в реальных проектах - не аксиома, а такой же трейдофф как и все остальное.
207 2599464
>>599454

>все равно должна быть возможность добавить это все сразу.



Ты щас пытаешься со мной спорить на предмет требований, что бессмысленно. Из нас двоих требования сейчас определяешь ты, и если ты сказал что должна быть одна транзакция, я тебе отвечу что хуй с тобой, тогда делай монолит. Но это не имеет никакой корреляции с реальностью: в реальности требования определяет клиент, и ему будет по большей части похуй на такие нюансы. Ты привык что в мире монолитов и реляционок целостность данных - ультимативная ценность. Но для клиента это - не совсем так. Клиенту важно, чтобы твой кинопоиск обслуживал миллионы запросов в секунду, и тут уж хошь не хошь, а на компромиссы идти придется.

>Настолько, что в бд плавает мусор, который никак не связан с фильмом. И никто не вспомнит даже о нем и не найдет, только если случайно, а он тем временем будет нагружать бд. Если таких "зомби" в бд будет много, то в этом явно ничего хорошего не будет.



ПО-ХУЙ! Во первых - ты еще доживи до того момента, когда это станет проблемой. Во вторых - проблема мусора решаема. Проведи аналогию с джавой: в джаве же тоже есть мусор. И ничего, никому он не мешает. Где есть мусоро, есть и мусор-коллектор.

>Мы ведь рассматриваем ситуацию, когда нет никаких mq или кафок



Ну возьми да заведи крон таску по поиску и чистке мусора в ассетах на основе того, какие фильмы есть в "фильмах". Или заведи табличку РКНнутых фильмов для того, чтобы в этой таске отслеживать какие фильмы были РКНнуты. Да, это будет долгая операция - ну повесь ее в три ночи, когда все твои юзеры спят. Или разбей ее на куски, типа, еженочно мы чистим ассеты только в течение часа - сколько за час успели почистить, столько и почистится. Eventually мусор соберется.

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

>А если удалились только ассеты?



А ты скажи что "фильмы" - единственный source of truth. РКНнутым фильм считается только если он дропнут из "фильмов", а ассеты - независимая сущность с независимым лайфциклом, который админ вправе менеджить отдельно.

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

Посмотри на реальные сервисы. Посмотри на ютуб. Видео из ютуба может быть давным давно грохнуто админами, но при этом найтись через поиск, или быть частью какого нибудь плейлиста (где будет торчать вместо него плашка что оно удалено администраторами). Посмотри на гугл. Он спокойно может отдавать тебе ссылки из своих индексов на интернет ресурсы, которые больше не существуют. Steam, который на фоне РФ-санкций может показывать тебе игру в поиске, плашку игры в магазине, фаворитах и прочих местах, но при переходе на страничку этой игры сказать, что ее не существует в регионе.

Консистентность в реальных проектах - не аксиома, а такой же трейдофф как и все остальное.
208 2599467
>>599458
>>599462

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

Никакая статья не раскроет вкатуну адекватно контекст проблемы, стоящий за тем или иным паттерном, ИМХО это тупо невозможно. Суть паттерна постигается когда человек сталкивается сам с проблемой и решает ее, но когда он ее решает, роль паттерна в его познании уже и не такая ключевая. Нахуй ему паттерн, если он и так разобрался. Ну разве что для того чтобы находить общий язык с себе подобными.

Но тогда нахуй паттернами грузят вкатунов, если у них все равно нет ни единого шанса их постичь? Я не знаю. Наверное это очередной жалкий потуг индустрии сделать разработку дешевле.
209 2599468
>>599464
У меня опыта коммерческого вообще нет. Я и на джаве-то еще толком ничего не писал, только теорию всякую нонстоп занюхиваю уже месяц. Поэтому я представляю, что в реальном проекте все гораздо строже. Ты говоришь, что тот же мусор в бд - не проблема. А я все равно не понимаю: почему? Ведь на хранилища выделяют деньги, если у тебя даже 10% забито мусором, разве это не значит, что освободив это место от него, бизнесу не придется покупать новое хранилище что сохранит +0,05% прибыли? Я сомневаюсь, что кабан не удавится за эти проценты.

Тогда по хорошему, надо действительно какой-то сервис, который будет следить за порядком в бд... Но это все равно какое-то кривоватое решение что ли... Хз даже, честно. Я если что с тобой не спорю, просто пытаюсь понять почему все то, о чем ты говоришь - норма в продакшене. Мне вообще даже кажется, если бы у меня спрашивали на собесе "почему ты решил оставлять этот мусор в бд в своем пет проекте?", а я отвечаю "гуглу можно, а мне что нельзя что ли?", меня скорее всего бы уже захотели слить побыстрей.
210 2599471
>>599468
Ну мне к вышесказанному больше добавить нечего. Насколько я тебя понял, у тебя скорее остался страх перед интервьюерами быть неспособным пояснить за свое решение, нежели вопросы к самим микросервисам. Тогда просто не свети пет в резюме. Джунов по архитектуре обычно не пытают.
211 2599474
>>599468
Ну и добавлю еще

>Ты говоришь, что тот же мусор в бд - не проблема. А я все равно не понимаю: почему? Ведь на хранилища выделяют деньги, если у тебя даже 10% забито мусором, разве это не значит, что освободив это место от него, бизнесу не придется покупать новое хранилище что сохранит +0,05% прибыли? Я сомневаюсь, что кабан не удавится за эти проценты.



Ты судишь об этом так, потому что ты с ними еще не имел реальных дел. Но в реале - ты удивишься насколько не все так просто.
212 2599477
>>599471
Да не, проблема точно не в страхе перед интервьювером. Если я к какому-то выводу или решению пришел, то в 99% я смогу пояснить, почему я так сделал. Мне даже будет не зазорно признаться, если я просто не знал, как можно иначе решить проблему. Проблема больше в том, что я думаю, что там в продакшне все стремятся к идеальным решениям, дрочат девопсов (иначе нахуя им столько платят?), чтобы все работало максимально хорошо, не допускают ни малейшего проеба, а по факту это далеко не всегда так. Я привык постоянно сомневаться в себе и ровняться на те же статьи в инете, воспринимая их как эталон, потому что сравнить не с чем, нет работы в реальных проектах. Всегда кажется правильным - поверить какому-то бородатому дядьке с умным видом. А читая доку спринга, постоянно думать: ну там же не дураки сидят, а знающие люди, поэтому хуйни не напишут. Я думаю такое со временем проходит, когда этот опыт появляется.

С микросервисами сейчас так же. Кажется, что я не раскрываю их суть, если не использую распределенные транзакции или евент сорсинги. Моя цель по большому счету: просто показать завершенный пет проект, который не монолит, а микросервис (просто потому что это модно, епта). Но углубляясь в эту всю тему, я только понимаю, что проектировать приложение, а особенно эти микросервисы - это нихуя не просто. Поэтому, на этом сделаю акцент и решу для себя, что микросервис в любом виде в качестве пета - всегда хорошо. Спасибо, анон, за то что дал какое-то свое виденье. Появилось больше уверенности, что я не делаю хуйню.
213 2599484
>>599477
Если ты вкатун, то тебе скорее всего должно быть до пизды на микросервисы. Потому что тебе дадут маленькую таску в одном или парочке сервисов. А что там снаружи ты и не узнаешь, если сам не полезешь в свое личное время читать доки и код всех сервисов. Даже если сервис будет новый, то архитектуру таблиц, интеграций и эндпоинтов нарисуют за тебя. А мнение об общей архетиктуре спросят ну очень нескоро.
Лучше больше задрачивай взаимодействие с базой, с сериализатором в json, с http, с фишками контекста и конфигурации спринга и особенно с тестами.
Я бы на твоем месте начал бы писать второй пет, где не трогал бы микросервисы, но поигрался бы с запросами посложнее, с конфигами сериализации, написал бы миграции, валидации и тесты.
214 2599486
Охуеть сколько текста.
215 2599493
Аноны, вот вы недавно писали про первые джуновские таски, читал не без интереса и даже сейчас немного отлегло, до этого боялся, что вообще не справлюсь с работой. поэтому сейчас даже кажется, что пересидел уже

Но из-за анона, написавшего про тупящего джуна, который таску под диктовку делал, у меня возник вопрос: где проходит та грань, перейдя которую, тебя попрут с испытательного? Типо, что нужно сделать, чтобы тебе сказали пиздовать на улицу, мб два раза так протупить как описывал анон выше? Или нужно все три месяца косячить, самому вообще ничего не написав? Вообще часто бывают такие прецеденты, что джуна шлют к херам в первые недели-месяцы? Может у кого-то тоже есть какие-то подобные случаи, которые вы лично наблюдали или слышали от кого-то, было б интересно почитать, чтоб избежать этого, если когда все-таки получиться дорваться до заветной работки
216 2599495
>>599493
как обычно зависит от компании
у нас вот и круглых идиотов держат до последнего
217 2599496
>>598377
Я даже так и сказал, что сначала определяются руты таким вот образом, на что последовал данный панч, и после этого перехотелось уже что-то доказывать
218 2599498
Какое же охуенное новое уи от жидов!
219 2599504
>>599493
Тебе это вряд ли грозит.
С таким джунами очень сложно столкнуться лично, почти все отсеиваются на этапе собеседования. Какой-то процент тех, кто целенаправленно учится наёбывать собеседующего, всё же может попасть на работу, но и они обычно сами съёбывают через пару месяцев.
220 2599507
Как в webflux подключится к докер контейнеру через имя контейнера?
Прописываю нормально, как в каждом туториале говорится
WebClient webClient = WebClient.create("http://test-service:8081/test);
В докере в логах смотрю получаю 500 потому что к имени контенера откуда-то приставился айпи адресс этого контейнера т.е вот так
failed: Connection refused: test-service/196.25.0.3:8081
Это webflux как-то подставляет это? Откуда это берётся?
221 2599510
>>599507
Там нетворки нужно еще чтоб согласованы были, возможно стоит копнуть в этом направлении, хотя я не уверен, просто что-то подобное было, когда я начал поднимать все не через композ, а по отдельности и тоже не находило нихуя по имени сервиса

docker network ls
image.png19 Кб, 347x416
222 2599511
>>599510
Да я и композ с туториалов взял. Даже chatgpt попросил написать мне, думал может как всегда в туториалах говно не рабочее, да нет, выдал тоже самое, только версию бампнул с 2 до 3
223 2599517
Java Spring или C# .Net?
Где перспективы и зарплаты выше?

Вкатывался в Android-разработку - а там работы сейчас нет. В фронтенде тоже.
Куда идти?
224 2599519
>>599517
Вкатывайся в C# .NET.
225 2599520
>>599519
Почему? Там перспективы лучше?
226 2599522
>>599520
Очевидно, да.
227 2599524
>>599520
Научишься говорить на петушином
228 2599525
>>599517
Курьером. Айти все, кончилось.
229 2599527
>>599507

>Откуда это берётся?



Учи сети. В частности - что такое hostname и как он резолвится в айпишник.

В случае с докером один контейнер доступен из другого по имени, если оба они сидят в одной докеровой сети.
230 2599528
>>599511
А ты уверен что test-service хостит именно на порту 8081, а не на 8091?
231 2599529
>>599517
На фронт.

Поумнее в джава треде ничего не мог спросить?
232 2599531
>>599517
в джава не иди, я иду
233 2599548
>>599484
Я тоже об этом думал, что лучше уделить внимание больше какому-нибудь спрингу или хибернейту. Под http ты что подразумеваешь? Как работает протокол? Алсо, теорию tcp/udp надо хорошо знать? Просто в вакансиях такого даже не встречал, хотя, это вроде как одна из баз. Или та же модель osi? Раньше ее часто встреаал упоминание, сейчас уже тоже не вижу.
234 2599578
http://spring-projects.ru/understanding/hateoas/
Что это дает вообще? Не придется на клиенте формировать url? Или что?
235 2599595
>>596713 (OP)
Попал на проект, где интегрируются с огромной легаси-хуиткой, которая стартует полчаса и жрет столько ресурсов, что рабочий мак начинает задыхаться. Раньше просто мокал зависимости через ваейрмок или мокито, но тут развесистая логика на стороне той хуитки и мокать замучаешься, т.к. дергая одну ручку она создает кучу сущностей на своей стороне. Как лучше всего организовать процесс тестирования? Охуел, что в команде есть выделенный микрочелик, который ручками тыкает запросы на отдельном тестовом контуре. Разработка фичи может растягиваться на месяцы...
236 2599601
>>599595
пусть эта легаси хуитка крутится на тестовом серваке
237 2599605
>>599601
Хотелось бы поиметь автотесты, которые бы гонялись на CI, но если хуитка будет крутиться на тестовом серваке и туда будут ломиться запросы при прогоне тестов, то все похерится, когда будет выполняться много тестов с разных пулл-реквестов. Хз как стейт чистить после каждого теста...
238 2599616
у вас бывает такое, что сидя кодить не хочется прям вообще, но в постельке полежать - покодить было бы норм, но ноута нет? что делаете в такой ситуации?
239 2599619
>>599616
Конечно бывает. Потом я вспоминаю, что мне нужны деньги, чтобы оплатить аренду квартиры, ипотеку, что-то купить пожрать, стоматолога оплатить и еще отложить на черный день и всю эту дурь как ветром сдувает.
240 2599621
>>599619
так купи себе постельку и ноут. работа должна приносить удовольствие
изображение.png1,3 Мб, 1000x734
241 2599625
давно пора внедрить в офисы вместо столов и табуреток это. тупые кабаны не понимают что вкладываются в эффективность в перспективе.
242 2599626
>>599621

>работа должна приносить удовольствие


Распространенное заблуждение, между прочим. За годы гребли попалась реально классная команда и интересный проект. В основном гребешь на унылых проектах, которые тебе не интересны, а работа вызывает отвращение. Но что поделать - нужно же на что-то жить.
243 2599628
>>599625

>вкладываются в эффективность в перспективе.


Буквально единицы вкладываются в оснащение офисов и продуктивность разработчиков. Покупают дорогие кресла, мощные ноутбуки/рабочие станции и т.д. Большинство выдает забитые пылью ноутбуки HP/DELL, которым сто лет в обед и которые начинают завывать когда разворачиваешь проект.
244 2599638
>>599628

>Буквально единицы вкладываются в оснащение офисов и продуктивность разработчиков.


а кровать так никто и не поставил
245 2599688
Объясните, плиз, что именно делает JPA/Hibernate, за что отвечает? Я пишу код для работы с бд, но хер знает что есть хибер, а что нет? @Entitiy это хибернет? Когда пишет какой-нибудь кастомный метод в имплементацию CrudRepository вроде findByField, это хибернейт? Что именно он делает и где его границы.
246 2599702
>>599625
Ой бля нее. Ты че - школьник? Только оный и уместится в эту детскую стенку блять.

Большущий стол - вот тема. Особенно с подъёмным механизмом. И хорошее большое удобное кресло.
247 2599707
>>599548
Имею ввиду как spring mvc работает с http запросом. Боди, параметры, хедеры, корсы. Интерсепторы, фильтры, адвайсы. Все на практике потыкать.
Ну и теорию с диспетчер сервлетом.
Нет, tcp/udp знать не надо.
248 2599715
>>599688
это попытка совместить объекты и реляционные базы, чтобы автоматом гонялось туда обратно. Получилось не очень, но на примитивных операциях данных оно работает
249 2599727
>>599493
У нас даже конченых дебилов не прут.
250 2599736
>>599688
Все просто, чекай пакеты. Если пакет начинается с javax.persistence (как у Entity), значит это JPA. Если org.hibernate - значит хибернейт. Ну а если org.springframework.data - значит Spring Data.
251 2599805
Это правда что интервью будет длится 1-2 часа ? 0_0 И будет +- 30 вопросов...
252 2599810
>>599805
И фистинг будет. Если два кулака не пролазят, то тебе перезвонят.
253 2599820
>>599810
лол
254 2599869
>>599805
У дудя всегда такие интервью
255 2599878
>>599493

>где проходит та грань, перейдя которую, тебя попрут с испытательного?


Это не обязательно испытательный срок и не обязательно джюн. У каждого проекта есть заказчик, сроки и бюджет. Если вы в команде не укладываетесь по срокам, то будь ты хоть мидлом или сенькой - разговор будет один. Сначала тебе прямо говорят, чтобы ты наверстывал темп и быстрее и качественнее делал задачи. Если ты не понимаешь или не вывозишь и из-за тебя команда продалбывает очередной спринт, то тебе просто говорят писать по собственному и все.
256 2599899
Для тестировки в спринге JUnit достаточно будет? Для пета, чтоб на собесах показывать.
257 2599910
>>599527
Ну так у меня они и сидят на одной докерой сети, нет? spring-cloud-network.
>>599528
Ну в application.yml он стоит 8091, но ведь сам докер контейнер же хостится на 8081, везде говорится по порту контейнера подключаться.
Это вот я так я думал до того как ты написал, попробовал поставить 8091 и оно теперь мне другим ебёт мозг. Выдаёт 400 Bad Request (а реквест то рабочий, без контенерезации всё норм)
Пиздец я ебал эту ебалу, ща буду по флешке архивы передавать. Спасибо за подсказку, буду разбираться
258 2599962
а как в спринг jpa можно суррогатный ключ описать? везде вижу только составной ключ. мне надо, чтобы в таблице можно было создавать уникальные комбинации по 3 столбцам.

делать из 2 айдишников 1 составной, потом из 1 составного и оставшегося айдишника делать снова составной? мне кажется это хуйня какаято-то...
259 2599985
>>599805
Меня как то 4 часа собесили. Оправдывали это тем что "ну клево общаемся же, душевно". Что кстати было правда, пообщались хорошо, ненапряжно.
image.png28 Кб, 695x336
260 2599988
>>599899
Я бы ожидал, чтобы джун уже умел в спринг тесты мосkMvc + testcontainers с реляционкой. https://bootify.io/spring-rest/spring-boot-integration-tests-with-testcontainers.html
261 2599992
>>599910

>Ну так у меня они и сидят на одной докерой сети



Да, верно, я не сразу заметил. Более того, айпишник то он тебе, судя по тому мессгау из логов, зарезолвил. А вот на порту 8081 никого не нашел.

>но ведь сам докер контейнер же хостится на 8081, везде говорится по порту контейнера подключаться.



Я всех деталей щас не вспомню, но скорее всего это работает немного не так как ты думаешь. Директива ports в докер-композе - это биндинг портов контейнера на докер-хост (докер-хост - это твой пека, на котором докер развернут). На биндинг портов внутри контейнера эта директива никак не влияет: они там будут биндиться ровно туда, куда ты спрингу скажешь, вне зависимости от того, есть у тебя ports в докер композе или нет

Короче, попробуй порт в урле вебфлакса поменять на 8091.
262 2599994
>>599985
И что, тебя туда взяли ?
263 2600004
>>599805
У меня собес шёл где-то 1.5 часа, задавали много несложных вопросов по стеку, спрашивали теорию про нормальные формы, вычислительную сложность алгоритмов и подобное. Решал две задачи с алгоритмами. Ещё по приколу спросили, знаю ли я C++, и дальше несколько вопросов про отличие умных указателей от сборки мусора и про отличие шаблонов от дженериков.
264 2600006
>>599992
Да, попбробовал 8091 и действительно находит, только как написал выше, bad request. Пиздец кароче
265 2600007
пытаюсь руками сделать двухфазный коммит. Выяснил, что нужен датасорс с XA имплементацией. Нагуглилось некий Atomikos. Но не вижу где тут руками ставить PREPARE TRANSACTION
Что за говно
266 2600034

> отличие шаблонов от дженериков


Не понял, каких шаблонов еще? И при чем тут дженерики?
im2tTSTWfV.png44 Кб, 1161x669
267 2600039
>>600007
ощущение что я копаюсь в глубинах какого-нибудь древнего сервера приложений. Тут оказывается нет задания урл базы, только название ibm сервера
268 2600050
>>600034
В C++ есть шаблоны (template), их можно использовать примерно как джавовские дженерики, внешне выглядят похоже, но есть много своих нюансов. Например, они при компиляции копируют шаблонный код, подставляя туда типы, с котороыми это шаблоны использовали, и после компиляции получается несколько копий одних и тех же классов и функций с разными типами, это похоже на макросы. Шаблоны бывают рекурсивными, через них можно реализовать вычисление выражений при компиляции и ещё много чего.
В любом случае, если о C++ ты знаешь только то, что существует такой язык, задаваться этими вопросами не нужно.
изображение.png63 Кб, 867x439
269 2600051
как такие таблицы правильно называть?
1. абстрагироваться по смыслу? в таком случае, ее можно было бы назвать movie_person
2. или опираться на техническую составляющую? т.е. если она ссылается внешним ключом на какую-либо таблицу, то указывать ее в названии "movie_person_role" (на пике сейчас этот вариант)
270 2600059
>>600051
обычно так и называют. Бывает ещё вариант movie_x_person_x_role
271 2600064
>>600051
Зачем выделять роль в отдельную таблицу от movie_person_role?
Если у одного актера в одном фильме несколько ролей?
272 2600077
>>600050
Ааа, пон, я просто подумал, что в джаве какие-то шаблоны есть, о которых я не знаю. Эт тебя на джуна по крестам гоняли так?
273 2600082
>>600064
не понял вопроса. ты имеешь ввиду, чтобы было так?
_movie_id___|___person_id__|_role_name_|
____1_______|_____50_______|____actor___|
____1_______|_____51_______|__director___|
так составной ключ будет по movie_id и person_id только, тогда не получится делать так
_movie_id___|___person_id__|_role_name_|
____3_______|_____55_______|____actor___|
____3_______|_____55_______|__director___|
плюс дублировать строку - тяжелее по ресурсам, чем ссылаться на int
RXeAOjGAon.png80 Кб, 972x659
274 2600098
>>600039
нашел рабочий пример. Оказывается все это есть искаропки и в jdbc постгрес драйвера
275 2600113
>>600077
Не сказать, что гоняли, просто по приколу спросили, типа понять, что ещё знаю, кроме джавы. Хз, зачем.
276 2600114
>>600113
И че ты кроме джавы знаешь?
277 2600115
>>600114
Да не трясись ты, вкатун, лол.
278 2600116
>>600114
На уровне, достаточном для работы, знаю только джаву. А так много чего тыкал, и петухон с машобом, и JS с реактами, и шарп, и андроид, даже с хаскеллем когда-то игрался. Времени было очень много.
279 2600117
>>600116
Как бабу трахать знаешь?
280 2600119
>>600117
Нет, для работы это не нужно мы вам перезвоним
281 2600129
>>600119
А кабаныч даст указание трахнуть бабу, что ты будешь делать?
282 2600141
>>600051
Назови movie_cast. Или movie_crew, если там из ролей не только актеры.
283 2600148
>>600129
Спрошу у сеньора.
284 2600158
>>600148
Сеньор скажет ебись с этим сам
285 2600160
>>600158
засуну хуй с рукой в пизду и начну дрочить
286 2600163
>>600158
Тогда посмотрю на stackoverflow или баелдунге.
287 2600173
Вообще таска просто "трахнуть бабу" очень плохо расписана - явно не джунская, минимум мидловская.
288 2600175
>>600173
Нормальная таска. Если джун с такой справится не может - зачем брали, спрашивается?
изображение.png7 Кб, 446x91
289 2600177
я же правильно понимаю, что вторая строка должна удалять существующие таблицы и создавать их заново? если я прав, то почему он не удаляет старые таблицы? если не прав, то как это сделать?
290 2600183
>>600175
Джуну надо расписать каждое движение. Провести доскональное ревью. Если не понимает сразу, выполнить таску вместе с ним.
291 2600189
Нужно ли покупать мак для программирования на джаве?
292 2600192
293 2600194
>>600189
Нет, как ты на маке вебсферу запустишь?
294 2600220
>>600189
да, без него не освоить циклы и написание программы хеллоуворлд
295 2600224
Такой вопрос к джавогосподам.
Почему ваша жава - такое неструктурированное добро? Один проект - не похож на другой. Смотришь в код, а там каждый ТВОРЕЦ, блядь. Один так положит файлики, другой - так. Один так обзывает, другой так.
Я не знаю. Но блин. Я вот, как шарпоняшка, просто горю с того, как среднестатистический проект устроен. Будто разраб на джаве - испытывает некую неудовлетворенность и желание быть таким же крутым как С++'ер, и намеренно код распихивает максимально дурацки.
Но я могу ошибаться. Возможно, в этом есть либо какой-то смысл, либо это какие-то особенности языка. А потому - хотел бы от вас услышать ответа.
Но просто взгляните на этот пиздец в сравнении. Абсолютно же ебануться можно, пока найдешь то что тебе надо.
296 2600227
>>600224

>когда впервые в жизни увидел проект больше, чем на 6 классов

297 2600230
>>600224

>и желание быть таким же крутым как С++'ер


Вот это проекции, аж серанул.
298 2600233
>>600224
Так исторически сложилось, и ничего не сделать. Никому это не нравится, хуй вспомнишь, в какой из сотен пакетов засунули нужный класс, из-за чего всем приходится юзать автоимпорты, в итоге без IDE код писать невозможно.
299 2600239
>>600233
В том то и прикол, что у нас есть IDE, а не виндовс блокнот для написания кода,
и нам можно куда угодно сувать классы (в теории, на практике - оно непосредственно связано с качество дизайна, ведь расположение классов напрямую берётся из того, как разработчик себе представляет проект, структура пакетов - это что-то того рисунка проекта на бумажке, поэтому и у спринга такое говнорасположение классов, потому что он сам говно и сборник кала от десятка тысяч серунов).

А для посвящения в проект профанов должна быть ВИКИ, не надо заставлять их понимать, как работает проект по сурсам.
300 2600241
>>600224

>Почему ваша жава - такое неструктурированное добро? Один проект - не похож на другой. Смотришь в код, а там каждый ТВОРЕЦ, блядь. Один так положит файлики, другой - так. Один так обзывает, другой так.


хуйню несешь
дальше не читал твой жир
.png2,9 Мб, 1920x2160
301 2600245
>>600227
Я ж не про это. А про какие-нибудь практики, которые должны быть общими для разработчиков внутри экосистемы.
Вот на шарпе - есть гайд от майков, как называть что. В шарпе - есть общие правила по названиям папочек и общей структуре проектов. Ты открываешь один проект - и быстро "просекаешь", как оно работает.
А в джаве - я буквально несколько проектов открывал и часа 4 потратил, чтобы понять где что лежит. Думал, ну, наверное так принято у них. Открываю другой - совсем иначе штуки лежат. Открываю третий - опять.
Еще: один - делает вложенные классы. Другой - не делает. Третий делает иногда. В шарпе, для публичных штук это считается харамом.
>>600241
Вот я открыл https://github.com/spring-projects/spring-framework. Вот я открыл https://github.com/thingsboard/thingsboard
В каких местах они похожи?
>>600239
Ну вот я - сижу в деревне на удаленке. Мне прилетает уведомление на телефон, нужно чет быстро поправить. На шарпе я просто вимом открываю папку с проектом, нахожу быстро нужное место, правлю, делаю pr и иду дальше коров доить. Как я блин должен это сделать на джаве?
302 2600247
хватит отвечать этой шарпобляди долбоебы
303 2600249
>>600245

>Ну вот я - сижу в деревне на удаленке. Мне прилетает уведомление на телефон, нужно чет быстро поправить. На шарпе я просто вимом открываю папку с проектом, нахожу быстро нужное место, правлю, делаю pr и иду дальше коров доить. Как я блин должен это сделать на джаве?


Ну это же совсем жирофрения уже.
304 2600251
>>600247
Нет, будем отвечать.
305 2600255
>>600249
Так реальный кейс... Когда на ковиде разогнали - уехал в родную деревню и там сидел с ноутбуком, ставить студию - было влом. Нормально делал задачки.
306 2600256
>>600245

>Ты открываешь один проект - и быстро "просекаешь", как оно работает.


Ты хочешь сказать, что благодаря тому, что на петушарпе не делают вложенных классов (между прочим, которые на джаве пишут как раз для увеличения читабельности кода в исключительных случаях, когда класс не нужен за пределами того, в котором он объявлен) и перед названиями интерфейсов пишут уродскую букву I, там становится гораздо легче разобраться в работе проекта по сурцам? Жирный, плиз.
307 2600259
алишев за пару часиков рассказал мне про спринг жопа
в то время я нахуй весь день потратил на создание пары таблиц со всеми видами отношений хотя во время просмотра все изи казалось
ебало мое?
image.png932 Кб, 1280x789
308 2600260
309 2600267
Подскажите литературу по JVM в разрезе программирования. Чтобы было расписано как выделяется память под объекты, массивы всякие. Как мусор собирается. Желательно, ещё как JVM взаимодействует с внешним миром (с ОС).
310 2600268
>>600259
А теперь репрезентуй свое ебало после того, как я тебе скажу, что статья о спинг жопа на спрингосайте отмечена как 15-минутная.
311 2600274
>>600256
Благодаря тому, что структура проектов похожа один на другой. Ты открываешь проект на шарпе номер раз. Открываешь проект номер два. Открываешь проект номер 3.
Везде видишь папочки
Model
Events
Controllers
Services
Resources
Utils

В библиотеках:
Internal
Hosting
Extensions

Короче. Все +- одинаково, специфичные части - легко заметить. Именование тоже +- одинаковое у всех.
Из-за этого ты знаешь куда первым делом смотреть. Знаешь где какого рода штуки лежат. И быстро вникаешь.
В жаве, я часа 4 потратил чтобы просто найти, где ж там модельки лежат.
312 2600275
надо ли под каждую сущность делать свой сервис с бизнес-логикой? или лучше один общий сервис для одного контроллера? или лучше контроллеров под каждый сервис?
313 2600279
>>600274
джава проекты тоже делаются так, просто мы используем специальный шифр, который рассылаем каждому джависту. шифр меняется в 0:00 каждого дня. делается это для того, чтобы пидорасы типо тебя горели и не могли понять что насрано в проекте
314 2600281
>>600268
у меня больше проблем вызвало то, что я постоянно путался со связями один-к-одному/один-ко-многим/многие-ко-многим. не привычно было так же воспринимать отсутствие непосредственно поля в таблице, на которое ссылается другая таблица. т.е. я сначала пытался это все представить так, потом только начал потихоньку понимать и уходить от навязчивой мысли засунуть поле в таблицу. вместо этого абстрагировался. поле как бы есть, но оно в другом месте (внешний ключ)
315 2600284
>>600281
выкатывайся, джава мертва
316 2600288
>>600274
Нашел, чем гордиться. Структура должна быть такой, чтобы классы как можно меньше работали с классам из других пакетов - то есть основное сообщение с однопакетниками, чуть поменьше с теми, кто в одном пакете более выского уровня, ещё меньше с теми, кто вообще далеко, и так далее. Внешние библиотеки стоят особняком, потому что их структура не видна при работе.

Такой подход позволяет достигать максимальной инкапсуляции, выполняя то, зачем вообще нужна структура пакетов - структурирование проекта прежде всего в голове разработчика. А у тебя что? Ущерб дизайну в угоду надоям.
317 2600289
>>600275
Нет.
318 2600290
>>600281

>постоянно путался со связями один-к-одному/один-ко-многим/многие-ко-многим


Потому что фримверк сделан нелогично и просто нет логике в этих OneToMany и ManyToOne. А все ошибки ты ловишь в рантайме. Пока проект маленький, то фидбек получаешь мгновенно. Когда он разрастается, то ты можешь ждать по минуте, чтобы потом получить огромную портянку из стектрейсов в которых будешь копаться еще минут 5 в попытках правильно расставить аннотации.
А когда ты столкнешься с проблемой N+1 и попробуешь решить ее с помощью хубирнейта, то вообще на стены полезешь с диким воем.
319 2600297
>>600284
нихуя

>>600290
я больше не с фреймворком ебался, а с представлением самих таблиц в башке. фреймворк больше сбивает количеством аннотаций, которые надо сразу все как-то в голове уложить и понять что каждая делает. я правильно понял, что можно указывать однонаправленную связь и хибер под капотом сам все поймет, но лучше всегда делать двунаправленную для читаемости кода?
320 2600299
>>600289
на какой вопрос ответ?
321 2600303
>>600299
На все.
322 2600309
Часто ли на практике на работе вам приходится применять Spring AOP? Для джуна это актуально?
323 2600317
>>600275
Пока тута, объясню как в шарпе делается. Хотя не уверен, что одними и теми же словами то же самое называем.
Сущности - анемичны. Просто набор свойств обычно. Иногда атрибутами - ограничения могут устанавливаться.
Сервис - объединяет в себе какую-то бизнес-область. Типа сервис оплаты. Сервис управления пользователями. Сервис выдачи заказов. Внутри одного сервиса могут использоваться различные сущности.
Контроллеры - просто передают запрос нужному сервису, получив ответ - отдает клиенту.
На уровне фильтров/миддлваря - происходит базовая валидация запроса. На уровне сервиса - может быть валидация по правилам предметной области.
Как-то так. Да.

Ну да ладно. Я так понял, меня почему-то посчитали троллем. Я не хотел таким показаться. Просто последнее время - нужно много кода на джаве смотреть. И меня просто смутило, что все проекты по разному выглядят. Такие вот дела.
324 2600318
>>600309
Очень редко.
325 2600319
>>600309
Ежедневно.
326 2600323
>>600297
Там несколько сотен кейсов, которые нужно держать в голове. Чуть накосячил и хубирейнт тебе нагенерит говна, что потом будешь в 4 утра в понедельник разгребать на проде.
327 2600328
>>600224

>>на этот пиздец в сравнении


Там в обоих случаех пиздец. Но это либы, хуле ты ожидал там увидеть?
328 2600334
Как господин Бугаенко относится к жуку?
329 2600335
>>600334
Тебя ебет?
330 2600336
>>600335
Ебет только твою мамку.
331 2600337
>>600336
Че так грубо?
332 2600340
>>600337
Твоей мамке так нравится.
333 2600342
>>600340
Пиздец... И ты надеешься на помощь после таких слов?
334 2600345
>>600342
Как будто ты мне собирался помочь, высравшись этим постом >>600335, обмудок.
335 2600349
>>600345
Ну теперь-то уж точно не собираюсь... Адьос!
.png278 Кб, 650x538
336 2600351
А вообще. Чет вы мне понравились.
Я наверное начну джаву учить и буду перекатываться. Все равно, считаю, что сидеть 5 лет на одном стеке - такое. С плюсов на шарп перекатился, думаю пора опять перекатываться. Так что если что - буду к вам захаживать. Да.
337 2600354
>>600351
Как-то мы понравились одному петухонщику, до сих пор долбоеб после 500 постов перекатывает. Уёбывай.
338 2600379
>>600309
на этом говне была сделана либа для "аудита". Все действия юзера в специальной таблице в админке
339 2600380
>>600334
оказалось что жук платный. Бесплатная версия - самый минимум, скомпиленный под новейшей жабой (19). А чонить опенсорсное есть? Помню была queryDsl
340 2600385
>>600380
Охуеть. Вот пидорасы!
341 2600399
>>600380
чегооо
DA3K617nrq.png101 Кб, 1065x854
342 2600403
>>600399
и бесплатная версия отказалась работать под 11 жабой, пришлось обновляться на 19
343 2600404
>>600380
QueryDSL даже более ООП-шный, чем жук. Юзай на здоровье.
344 2600412
Хорошо, что жук платный. Продолжаю клепать raw SQL с JdcTemplate.
345 2600417
>>600403
У меня проект в продакшене на 11 жаве на фри жуке.
Какие функции тебе обязательно нужны из платных версий? Лично я не заметил ничего прям совсем нужного.
346 2600419
>>600354
лол
347 2600420
>>600351
Говорят на С++ не решают задачи, там идет борьба с компилятором.
348 2600430
Хочу изучить ещё один язык программирования. Что лучше, c++ или c# ?
349 2600433
>>600430
По задачам.
350 2600441
>>600430
Kotlin, scala, js+ts, чистый си, питон, го. Ну в крайнем случае плюсы. Шарп джависту учить смысла явно нет. На нем никаких общеинфраструктурных вещей не написано, в связке они с джавой не нужны. А ниша по сути та же - тырпрайз веб + умирающий виндовый десктоп и юнити.
А просто учить голый язык без экосистемы - это бесполезно. Так можно и хаскель какой-нибудь разучивать.
351 2600444
>>600417
Жук свежий? Еще не понравилось что надо обятельно генерить сущности из базы. Руками инсерт не получилось. Кверидсл лучше кароч
352 2600450
>>600441
Так юнити норм тема, геймдев выглядит намного интереснее тырпрайза
353 2600458
>>600450

>умирающий виндовый

354 2600460
Почему на джаве нет геймдева, чем он хуже крестов и шарпа?
майнкрафт а расчет не берем
355 2600461
>>600444
На свежем у меня сервис на 17. 3.17 внутри активно использует 17 джаву(sealed types, records, instanceof pattern matching). На 11 жук 3.16 годовалый где-то.
Генерация это основная фишка для запросов. Она и обеспечивает всю типобезопасность маппинга.
Маппинг имен таблиц/колонок и типов колонок задается на уровне кодогенерации. И когда ты все сгенерил, ты не передашь в запрос хуй знает что в строчках, если пользоваться типобезопасными апишками.
Но можно и так как на пике 2 писать, не понимаю, что у тебя не получилось. Апи без генерации приходится использовать для временных таблиц, типа сте или для создания таблиц или колонок в рантайме.
И еще фишка генерации - все констрейнты и индексы тоже генерятся в код. Их поля, типы констрейнтов и имена. На уникальных констрейнтах и уникальных частичных индексах у меня завязана кое-какая логика.
356 2600463
.png149 Кб, 206x244
357 2600468
>>600460
Джава слишком медленная и тормозная для тяжёлых вычислений.
358 2600473
>>600460
Игры это по сути гуй.
А игровые движки - специфичные гуй библиотеки.
У жабы с гуем не задалось, особо удачных библиотек никогда не было.
Шарп всегда был ориентирован на виндовый гуй.
359 2600482
>>600460

Почему майнкрафт не берем в расчет? Чем он тебе не гейдев?

Так то на джаве игры встречаются время от времени, даже в стиме. Сходу помимо кубача вспомню project zomboid и mindustry. Просто так кости упали, что на джаве не нашлось завирусившегося игрового движка уровня unity, и как результат, не сложилось конкурентного коммьюнити, вот и все. А вообще - есть и движки на джаве (jmonkeyengine3), и нативные биндинги на графику (lwjgl). Какую нить индюшатину по фану слабать можно и сегодня.
360 2600484
>>600473
Гуй формошлепский с гуем (или даже лучше сказать - HUDом) в играх не имеет вообще ничего общего. Ни целей, ни подходов к дизайну, ни решений. Бессмысленно пенять на свинги.
361 2600496
>>600468
Тормозной твой батя был 16 лет назад, а джава со всеми новейшими оптимизациями побыстрее плюсов будет.

И геймдев есть, и майнкрафт как раз берём в расчёт - его доля на рынке больше чем всех юнитиподелий вместе взятых, умноженных на 10 раз. Так что это на петушарпе геймдева нет, а не на джаве. На джаве он как раз есть.
362 2600497
>>600468
Тормоз - это ты. А в джаве с вычислениями все вполне себе неплохо, с учетом JITа, интринсиков, оптимизаций и всяких биндингов на нативные либы. Даже CUDA при желании прикручивается.
363 2600499
>>600496
Вот это ОТРИЦАНИЕ
364 2600500
>>600499

>пук


По делу есть что сказать?
365 2600501
>>600484
Ну так шарп с юнити чудом выстрелил. Это один продукт, а не тенденция. Да и шарп там не полноценный, а моно.
366 2600507
>>600501
Ничего просто так не происходит. Всегда всему есть причины. И в случае с петушарпом причина - майкрософт.
367 2600508
>>600501
Ну вообще хз насколько это не тенденция. Возможно, тут сролял тот факт, что игорьки в основном всегда писались на плюсах под виндой, и все игровое коммьюнити разрабов уже тогда (когда не то что юнити - даже шарпов не было) все ходило под майками. А майки в свою очередь уже в дошарповые времена были ниибаца доминаторами в нише разработке на плюсах под виндой. Такой тандем явно имел в нише геймдева фору над sun/oracle, которые в игорьки никогда не играли.

Но ты прям ниибаца упрощаешь, говоря что:

>игровые движки - специфичные гуй библиотеки.



Это прям пиздец как неточно. Настолько неточно, что можно сказать - пиздеж, сорян. Каким бы клевым шарп ни был для проектирования десктопных приложух, никакое преимущество ему это не дает при разработке игр.
368 2600517
>>600507
>>600508
Когда юнити появился играми заведовали сони. У майков был писи рынок, который мало прибыли приносил. И только первый иксбокс, который и в подметки не годился второй плойке по охвату аудитории и прибыльности от игр.
369 2600519
>>600517
Ну вот писи рынок развился, который уже тогда был под контролем, и петушарп вместе с ним. Не тупи.
370 2600520
>>600519
Ну такое. Я вот посмотрел и первый год юнити вообще был онли под мак.
А то что ты говоришь похоже на очередную теорию заговора по завоевание мира злым майкрософтом.
371 2600523
>>600520

>Я вот посмотрел и первый год юнити вообще был онли под мак.


Как будто что-то отменяет. Ты логику вообще понял, или лишь бы пукнуть?

>на очередную теорию заговора по завоевание мира злым майкрософтом.


Какая ещё теория заговора, лол блядь? Это очевиднейшие, открытые факты, которые никто даже не скрывает.
372 2600526
>>600224
>>600245

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

Какие нахуй гайды от майков. Какие харамы, что ты несешь, болезный? О чем ты вообще. Все гайды - хуйня, маня. На какой бы язык они не писались, если этот язык их не энфорсит, и не ебет программистов по рукам линейкой, валя к хуям компиляцию в случае хоть малейшего нарушения, никто никогда их соблюдать не будет. Просто прими это как факт - так работает мир разработки реальных приложений для человеков, с техдолгом и кранчами. Стайлинг решается лишь аппаратно-техническими средствами, и эти средств в джаве хоть жопой жуй. Были еще гоферы, пытались решить проблему стайлинга через ортогональность прям языка нахуй. Хуй их знает насколько у них это получилось. Но вот уж с кем с кем, а не с нубом-шарпистом говорить об ортогональности, ты и слова то такого наверное не знаешь.

Все остальные твои претензии - чисто твои загоны. Ты привык читать шарповый код, поэтому код на джаве априори будет для тебя непонятнее. Для меня - наоборот. И хули тогда остается ответить на твои выгладки и полотна, кроме как не послать тебя нахуй?
373 2600528
>>600526

>Какие нахуй гайды от майков.


Ты так говоришь, как будто бы эти гайды не хуйня из под коня и которые вообще нихуя не преимущество петушарпа. Обоссывание майкобляди стоит начинать не с того, что он пиздит, а с того, что даже если его манямирок это правда - это всё ещё хуйня.
374 2600531
>>600528

>и которые не вообще нихуя не преимущество петушарпа.


быстрофикс
375 2600540
>>600517
Еще раз, чел. Майки были доминаторами в плюсах, и их доминаторство в этой нише было чуть ли не со времен первых виндовсов. Их плюсовый компилятор был лучшим среди конкурентов и единственным в своем роде. Все игры компилировались им, и линковались с их SDKями. Под майками был DirectX, выдававший в те времена лучшую производительность и не имевший конкуренции, на нем работали литералли все игры. Они на геймерском дерьме собаку сьели.

Причем тут влажные фантазии сонибоев с их соснолью и ее временным периодом успеха? Сколько сони существует со своим поленом, и сколько - майки.
376 2600549
>>600528
Да вот еще ты поучи меня, как ебланов в айти попускать. Ты то куда лезешь? Мне вообще похуй на его шарпистское гражданство.
377 2600557
>>600528

> это всё ещё хуйня


Ну не знаю... Когда в коммунити - люди плюс-минус в одном стиле пишут, имеют похожие структуры проектов, похожие структуры файлов с исходным кодом и т.д. как-то проще я считаю..
Вот опять же, в шарпе принято:
class ClassName
{
//события
//поля
//конструкторы
//свойства
//публичные методы
//приватные методы
//реализации интерфейсов
}
Вот такая структура файла класса - в абсолютном большинстве исходников на шарпе. И это позволяет сразу открыть файл и понять куда смотреть.
Я хз че такого плохого, когда в коммунити - есть принятый стиль и люди стараются его придерживаться.

>>600526

> никто никогда их соблюдать не будет


В коммунити шарпа - соблюдают в массе. В абсолютном большинстве проектов следуют гайду от майкрософта. А молодых сильно ругают, чтобы они тоже следовали.
А упрощается следование тем, что в шарпе на уровне проекта, можно настроить кодстайл и отход от него будет генерировать варнинги. При этом - можно сделать так, чтобы варнинги воспринимались как ошибка, и соответственно твой проект просто не соберется, если ты сильно много себе вольностей в плане стилистики позволяешь.
378 2600561
>>600557
Ну и нахуя ты опять натягиваешь сову на глобус? Ты сначала привел как пруф, что в джавовских проектах нет единой структуры проектов (и слава богу!), а теперь высираешься за порядок данных в классе, что и в джаве есть и что контролируется идеей, как будто я сказал, что слава богу что такой структуры нет.
379 2600562
>>600561

> нет единой структуры пакетов

380 2600563
>>600561

>что слава богу что такого порядка нет.

381 2600565
>>600557

>В коммунити шарпа - соблюдают в массе



Иди нахуй, пиздабол. Соблюдают в массе эти правила до первого кранча, когда всех на уши поднимут овертаймить и лишние условности отходят на второй план.

>А упрощается следование тем, что в шарпе на уровне проекта, можно настроить кодстайл и отход от него будет генерировать варнинги.



А в джаве значит по твоему такого нет? Одни шарписты до такого по твоему додумались, это ты мне хочешь чтоли сказать, кусок ты предвзятого дерьма блять?

Ты хули вообще включил евангелистскую шарманку то, чмо? Ты мне шарп свой нахуя продать пытаешься? Я и без тебя знаю что в любом серьезном языке существуют стайлинг-чекеры, мне твоя вот эта вот лекция обзорная по возможностям шарпа не нужна. Мой тезис не про то, у кого код чище. Мой тезис - в том, что ты - кусок дерьма, а твой гнилой наброс - продукт твоего воспаленнного надмозга, не имеющий никакой корреляции с реальностью, и не несущий никакого конструктива. Есть что по существу ответить? Нет? Вот и иди нахуй.
382 2600580
Предлагаю переименовать тред в тред имени майкрософта.
383 2600586
Почему шарперы за 25 лет так и не отошли от комплекса того, что они на клоне джавы пишут?
Причем не только местные шизики шарписты. Вот дослушал https://youtu.be/1PvzqL2xdX8 и нарратив продолжается.

>У нас это как в джаве


>А это как в джаве, но лучше


>А этого вообще нет в джаве


>А этого, как в джаве нет, но потому что это нинужна.


Откуда такая джавазависимость? А если зритель с джавой не знаком? Я вот десятки видосов про джаву видел. И нигде не упоминается Шарп. Всем тупо насрать на него.
384 2600588
>>600586
Потому что петушарп - паразит джавы.
385 2600589
>>600540
Кстати интересно, а майки в джава экосистему как-то контрибутят? У Гугла вот есть голованг, но они с джавой до конца не порвали.
386 2600592
>>600589
Майнкрафт они контрибутят, бесконечный поставщик вкатунов в джаву.
387 2600593
>>600586

Еще один с ебанутыми конспирологическими теориями, с целью разжечь.

Какой в пизду комплекс? Комплексы - у местных шизов-двачеров. А докладчики просто этим трюком расширяют целевую аудиторию доклада, чтобы не только шарписты могли понять о чем речь, но и джависты приобщиться. Или по твоему что - подкаст подлодки исключительно шарпистская тусовка чтоли?

Таких же отсылок к джаве можно найти в докладах по котлину и скале. По той же причине.
388 2600594
>>600593

>с целью разжечь.


Что за перефорсы?
389 2600597
>>600593
Послушай рассказ про джаву Тагирки там же. Джава в свое время отталкивалась от плюсов. Но он это в начале сказал и о плюсах забыл. А тут я про джаву слышал постоянно.
Этот подкаст для не знакомых с языком. И если бы не был знаком с джавой, писал бы только на питоне или жсе для меня бы эти отсылки к джаве только добавляли непоняток.
Я слушал их подкаст про го, питон и ерланг и нигде нету таких постоянных ссылок на другой язык.
390 2600598
>>600589
Чето контрибьютят. Из недавнего промелькивал тут https://github.com/microsoft/openjdk-aarch64.

Кроме того, у майков есть azure, и они не могут тупо игнорить поддержку джавы в нем.
391 2600602
>>600597
И на основе этого всего ты сделал вывод о каком то комплексе? Ты дипломированный психолог? Или как это у тебя работает?

>И если бы не был знаком с джавой, писал бы только на питоне или жсе для меня бы эти отсылки к джаве только добавляли непоняток



Ну так поэтому их там и не делают. Питон в каком месте на джаву похож? Вообще и в каком. А в шарпе с джавой очень много схожих черт, поэтому джависты отсылки поймут - можно и вставить. То же самое и с Тагиркой. Какой смысл делать много отсылок на плюсы, если джава с плюсами практически ничего общего не имеет?
392 2600606
>>600593

>>подкаст подлодки исключительно шарпистская тусовка чтоли?


это ж вроде какие то яндексоиды? в любом случае про жабу там вряд ли будет что то толковое, лучше жокера навернуть
393 2600607
>>600598
А кто основные столпы джавы, кроме оракла, редхата, вмваре и ибма? Нетфликс и линкедин пилят инфраструктурные продукты. У Амазона есть jdk. Гугл вроде уменьшает вложения в экосистему джавы.
Эпл и Фейсбук что-то внесли в джаву?
394 2600608
>>600606
Озоноиды скорее.
395 2600609
>>600607
Хз, гугл в помощь
396 2600610
>>600602

>>Питон в каком месте на джаву похож?


в котлине

>>поэтому джависты отсылки поймут


но зачем жавистам слушать про пеушарп? Я уж лучше го поковыряю или жс обмажусь - пользы и то больше будет.
397 2600611
>>600607
ИБМ и редхат тут лишние. Они нихуя не делают.
398 2600614
>>600611
Да и вмваре нихуя не делает. Один оракл тянет всю жабу.
399 2600617
>>600610

>в котлине



В каком месте?

>но зачем жавистам слушать про петушарп. Я уж лучше го поковыряю или жс обмажусь - пользы и то больше будет.



А типа чо - если тебе не нужно, значит не нужно вообще всем джавистам? Почему тебя вообще это так заботит?
400 2600619
>>600614
Вмварь пивотал зохавал, весь спринг теперь под ними.
401 2600621
>>600619
Ну так 99,(9) спринга пилится опенсорс лохами, а эти пидарасы просто донатики собирают.
402 2600623
>>600614
Вмваре принадлежит спринг. У ибм и редхата свои ждк и сервера приложений. У редхата есть кейклок написанный поверх jboss.
403 2600625
>>600621
Почти все в попенсорсе пишется людьми на зарплате больших корпораций. Левые васяны только мелкие баги правят.
404 2600626
>>600623
Уже поверх кваркуса.
405 2600627
>>600623
Спринг: >>600621
И какая польза от этих ждк? Никто ими не пользуется, а если и пользуется, то за секунду перейдут на какой нибудь беллсофтовый или боже упаси оракловый.
406 2600628
>>600625
Вот это копиум.
407 2600631
>>600621
Не скажи. Основные контрибьютеры крупных штук типа спринга как раз в основном сидят на зарплате. Рандомные челики забегают чето фиксить в основном тогда, когда сталкиваются сами с каким нибудь дерьмом и им нужен фикс лично.
408 2600632
>>600621

> 99,(9)


Так это же ровно 100.
409 2600633
>>600628
Задел твои попенсорсовые религиозные чувства?
410 2600637
>>600633
Так это я твои чувства задел, опенсурсный лох.
411 2600642
>>600627
На западе java ee вполне себе имеет вес и ждк вендорные в придачу. А вот белсофт с фсбшными закладками там нахуй не нужен.
412 2600651
>>600627
Пользуются.

Обычно ждк в основе своей - тот же самый хотспот что и опендждк. Но дополнительно эти кастомные ждк могут добавлять свои уникальные фишки, типа AOT (Excelsior Jet) или GC (Azul). В перспективе наработки этих вендоров могут уходить в апстрим.
413 2600672
>>600632
Хочешь сказать 100 - %x>0% = 100?
414 2600682
>>600672
Нет.
99.(9) = 99 + 0.(9) = 99 + 0.(3) ⚹ 3 = 99 + 1/3 ⚹ 3 = 99 + 3/3 = 99 + 1 = 100
Подвоха нет, это не сокращение нулей, как у доказательств, что 2⚹2 = 5
https://ru.wikipedia.org/wiki/0,(9)
415 2600686
>>600682
ты дурак или притворяешься?
416 2600688
>>600682
И каким хуем ты 0.(3) приравнял к 1/3?
417 2600689
>>600688
такой же вопрос
418 2600690
>>600688
Даун, ты в школе не учился что ли?
419 2600691
>>600690

> наукобот увидел фразу, идущую в разрез с манямиром наукобота


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> .


> Даун, ты в школе не учился что ли?

420 2600692
>>600691
Собака сутулая, пиздуй обратно в пятый класс изучать десятичные дроби.
421 2600693
>>600692
Лол.
422 2600694
>>600693
0.3 это какая дробь, братик?
423 2600695
>>600694

>братик?


Обратно во впарашу, быстро.
424 2600696
>>600695
понял) 0.3 = 3/10. как ты 3/10 преобразовал в 1/3?
425 2600697
>>600696
Что ты несёшь блядь?
426 2600698
>>600696
Жопой читаешь? Не отличаешь 0.(3) от 0.3?
427 2600699
428 2600700
>>600699
0.(3) = 0.333333...
429 2600701
>>600700
Ты докажи, что 0,(3) = 1/3, наукобот.
430 2600710
>>600621

>99,(9) спринга пилится


Командой, которая сидит на зарплате у VMWare. Какой-нибудь Netty пишется челиками из Гугла, Эппла и прочего фаанга, которые там на зарплате и используют эту либу для своих поделок. Лид проекта вообще сидит на зарплате у Эппл. Какой-нибудь gRPC пилится инженерами из гугла и всякие клиенты для того же котла или джявы снова пишут зарплатные из гугла.
ELK стек пилится инженерами из самого эластика, которые там на зарплате. Кейклоак, кваркус, инфиниспан - редхат, хейзелкаст - снова ребята на зарплате.
431 2600715
>>600710
И всё пиздёж и мантра. Всё попенсорсное пилится попенсорс комьюнити, а те, что на зарплате получают зарплату за нихуя.
432 2600723
433 2600724
СУКА КАКОГО ХУЯ В КВЕРИ ДСЛ EQUALS И GREATERTHAN НАЗВАНЫ БЛЯДЬ КАК EQ И GT СУКА!!!! ЧТО ЗА ПЕТУХОНЩИНА БЛЯДЬ!!!!!!!
434 2600848
Сап, двач!
Имеется: разраб на удаллёнке в одной маленькой конторе в г. Казань
Стек разраба: Java + Postgres
Стаж: около 2-х лет (2 года ровно в мае)
ЗП в конторе: 75к на руки
Параллельно проверяю java-домашки по Spring на местном сайте с обучением программированию
На следующей неделе должны в конторе повышать ЗП. Перед повышением хотят услышать мои ожидания.
А я без понятия сколько можно просить? Хочется 150+, но не нагло ли просить в 2 раза больше? Есть страх отказа и что буду смотреть на меня косо, если назову слишком большую цифру
Как грамотно просить повысить ЗП?
Знакомые получают все по-разному, но все больше, чем я (с аналогичным стажем или меньше)
Сейчас джуны, у которых я домашки проверял, на 70 - 100 к залетают
435 2600887
>>600848
Называешь цену, например 300к, тебе говорят максимум 150к, говоришь b + (a - b)/2 (где а - твоя последняя цена, b - их последняя цена) итого 225к, если отказывают и не предлагают новую цену, решаешь соглашаться или нет. Если предлагают новую цену выше, например 180, говоришь 202,5 и т.д. пока не сойдетесь
436 2600888
>>600887

>говоришь 202,5


И тебя шлют нахуй.
437 2600890
Насколько реально нарваться на обман в вакансиях, где вкатыша могут эксплуатировать и нахуй послать? Попадаются периодически подозрительные вакансии, где единственными требованиями стоит наличие любого опыта на хотя бы одном из представленных яп, адекватность и желание учиться? Ага блядь, вот так просто взяли вкатуна и начали ему попку подтирать? В чем подвох? Там могут неиронично выбирать лучшего из 10к резюме месяцами?
438 2600891
>>600890
Там будет по сути оплачиваемая стажировка, после неё, если адекватный, берут джуном. Почему бы и нет? Много компаний выращивает джунов.
439 2600929
>>600848
Идёшь собесишься и получаешь офферы на 300к/сек, после идёшь к своему начальству и говоришь, что меня зовут на 300к/сек, а тут я получаю копейки. Они сразу тебе предложат больше, если захотят удержать, если же нет, то пишешь заявление и уходишь.
440 2600959
>>600929
Нормально ли просить прибавку к зп, если ты джун на испыталке? Или сразу после испыталки хотя б
441 2600961
>>600959
А ты заслужил?
442 2600981
>>600701

>Ты докажи, что 0,(3) = 1/3, наукобот.


Вот поэтому тред и не надо перекатывать на 500 постах.

мимопроходил
443 2600988
>>600981
Ну вообще 1/3 + 1/3 + 1/3 = 1 а 0,(3) + 0,(3) + 0,(3) < 1 так что, наверное, они не равны
444 2601001
Бляяя с кем я на одной борде сижу
445 2601005
O(2N)
446 2601027
>>601001
Ты че долбоеб? По-твоему 0,(9) = 1? Даун?
447 2601028
>>600888
говорю: вы еще об этом пожалеете и эффектно ухожу
448 2601036
как заставить спринг сгенерить таблицу, чтобы не было timestamp, а была date по заданному шаблону?
449 2601039
>>600433
Без задач, просто интересно... И полезно.
>>600441
А если C++ ?
450 2601063
>>601039
Сложно найти применение плюсов для джависта. Разве что писать инфраструктурные штуки, где нужны будут платформозависимые байтоебские вставки.
Или лезть читать кишки jvm.
Больше кейсов не могу придумать.
451 2601150
>>601036
Указать нужный тип в @Column(columnDefinition = "")
452 2601154
>>600929
Если дадут оффер на 300к/с то смысл на старом месте оставаться?
453 2601155
>>600929
Если дадут оффер на 300к/с то смысл на старом месте оставаться?
454 2601157
>>601154
>>601155

Бывают кейсы, когда и на старом месте тебе готовы дать 300к, чтобы ты остался.
455 2601168
>>600988
Пиздец.
Простейшее доказательство:
x = 0,(3)
10x = 3,(3)
10x - x = 3,(3) - 0,(3) = 3
9x = 3
x = 3/9 = 1/3

Аналогично доказывается, что 0,(9) = 1

Жабач образовательный, программа средней школы эдишн.
456 2601222
>>601168
25 - 45 = 16 - 36
Далее прибавим (9/2)^2 ко обеим частям ур-ия:
25 - 45 + (9/2)^2 = 16 - 36 + (9/2)^2
5^2 - (259)/2 + (9/2)^2 = 4^2 - (249)/2 + (9/2)^2
(5-9/2)^2 = (4-9/2)^2, обе части положительны, можно извлечь квадратный корень
5 - 9/2 = 4 - 9/2
Далее прибавим 9/2 ко обеим частям ур-ия:
5 = 4 что и требовалось доказать
Следовательно 2*2 = 5

шиз
457 2601229
>>600848
У нас в украине джунам предлагают 40к - 60к рублей... Жити.
P.S.- 20 - 30к грн.
458 2601235
>>601229
1 вакансия в моем городе нахрнэн. Похоже, буду год у мамы дома сидеть и моды писать для майнкрафта :(
459 2601236
>>601222

> можно


Нельзя.
460 2601247
>>601236
Это схуя
461 2601267
Есть 2 сервиса в одном приложении, есть webflux. Для каждого из сервиса делать по своему webfluxconfig-у с разными baseurl и некоторыми мелочами или делать один конфиг и потом отличия ручками прописывать во время деланья реквестов? Какой в этих случаях best-practice?
462 2601308
>>601028
Свинья смеется над убогим выебоном омежки вместе с кабаном. На ближайших 50 дейликах как минимум раз тебя да вспомнят. На 51 день кабан ебёт свинью и платит ей за это 450к.

Твои действия?
463 2601313
>>601308

>ебёт свинью и платит ей за это 450к


Очевидно дать кабану себя выебать
464 2601318
https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
это частая практика? я вообще удивлен что смог эту хуйню нагуглить, уже час сижу мозги ебу, сервак тупо высирает лярд строк, которые похожи одна на другую и никакого ответа не отсылает, и я не понимал что ему надо было...
465 2601332
>>601318
Чел, а продебажить? toString перепиши ручками и будет работать
466 2601337
>>601332
я дебажил... я не понимал нихуя что происходит, он меня по хз чьему коду дрочил. дебажить фреймворки - это не мой лвл. я по старинке через sout проверял, объекты с бд приходили, а ответа от сервака не было, что добавляло только больше вопросов...
467 2601339
>>601332

>toString


я видел, что его всегда переписывали, но я думал это просто для удобного вывода объекта в консоль, а мне это не нужно было, поэтому я не стал его переопределять
468 2601369
лол. так получается никакие джоины не нужны чтоли? jpa своим findAll() все зависимости сама тянет из таблиц?
469 2601400
>>601369
да, причем скорее всего одним из самых неоптимальных способов. При том что взаимодействие с бд это бутылочное горлышко. А чтобы заставить jpa делать оптимальные запросы, нужно хорошо знать sql + очень хорошо знать кишочки хибернейта и его грабли и ограничения.
Сперва вкатуны радуются что всё работает, а вот потом с опытом приходит понимание, что за это нужно платить, и плата слишком высока
470 2601403
у меня получается хуевый json, но зато с таким подходом в бд меньше места занимает хранение. если role убрать из movie_person_role и добавить в person, то будет все наоборот. какая практика лучше?
изображение.png112 Кб, 991x136
471 2601413
>>601400
т.е. всегда можно по сути написать свой запрос? при чем лучше не доверять это хибернейту, а самому его написать? как на пикриле? просто не понятно зачем jpa использовать, если ты запросы сам пишешь все равно? в любом случае, если sql знаешь, написать свой запрос не сложно и не долго, в чем тогда преимущество jpa?
472 2601418
>>601413

>в чем тогда преимущество jpa?


ну типа там автоматически работают инсерт, апдейт и дилит, не надо их руками писать. Ещё getById есть искаропки. Ну ещё может что сущность не надо руками собирать, все поля автоматом проставляются из результата запроса
473 2601424
>>601403

>у меня получается хуевый json


>с таким подходом в бд меньше места занимает хранение



JSON на рестах и сущности на уровне БД не имеют, не могут иметь и не должны иметь ничего общего. У тебя явно есть косяк где то в декомпозиции на слои. Ты сущности ORM случайно не отдаешь как респонз из рестов?
474 2601432
>>601424
вот так отдаю. ты имеешь ввиду их надо компоновать вручную перед возвращением? как это лучше и правильно делать? или я не понял тебя
475 2601459
c# vs c++
476 2601460
>>601459
По задачам.
477 2601463
>>601432
Ну да, так я и думал.

Чтобы у тебя не возникало таких дилемм, никогда не делай ORMные сущности ДТОшками на рестах. У рестов должны быть свои структуры, у базы - свои. Тогда ты сможешь БД и ресты развивать независимо друг от друга.

Выгрузил сущности из сервиса, преобразовал их в рестовые сущности, отдал. Преобразовывать можно руками, удобно это делать через стримовые map. Еще слышал об инструменте object mapper, который вродле как и создан для таких преобразований, но я его не пробовал.
478 2601467
>>601463
Обьебался с названием тула. https://modelmapper.org/
479 2601474
>>601463
Зачем руками, когда есть mapstruct
480 2601476
>>601463

>Выгрузил сущности из сервиса, преобразовал их в рестовые сущности, отдал.


т.е. это надо в слое контроллера делать? не лучше в том же сервисе?
481 2601478
>>601474
Ну или мапстрактом. Не важно как, важно сделать.
482 2601481
>>601476

>т.е. это надо в слое контроллера делать? не лучше в том же сервисе?



Это вопрос дискуссионный. Я оставлю ответ на него на твое усмотрение, ибо считаю что на новичковом уровне ответ на него не так сильно важен. Попробуй так и эдак, огреби граблей, тогда и обсудим.
483 2601514
>>601459
с++ не имеет применения
484 2601515
>>601463
в случае с жуком можно было бы сразу заполнять дтошки руками из результата sql запроса. Не нужно эти мапперы дополнительно лепить
485 2601535
Что нужно знать в кафке, чтобы добавить ее в резюме вкатышу? Достаточно набросать пет с консумером и продюсером, прокинуть пару раз мессаге или там чет еще есть из обязательного к ознакомлению?
486 2601543
>>601535
Достаточно. Ну и мочь кратко рассказать про партишены.
487 2601546
>>601515
Дак я ж спорю разве? Можно.
488 2601561
>>601515
Не понял, а если у тебя сучность на 20+ полей? Руками как-то впадлу поля сетать, разве что у тебя оплата построчная
489 2601563
>>601561
потратить 10 минут и написать сраный маппер это сложно? Лучше с хибернейтом мудохаться часами и каждый запрос проверять?
490 2601565
>>601476
Мой подход в том, что в контроллере только то что нельзя спустить на уровень сервиса. Аннотации с хттп маппингами параметрами, аннотации валидации и отлов их ошибок, всякие аннотации свагера. Логирование запроса.
Все остальное, включая маппинг дто лучше спустить на уровень сервиса.
По формированию конечной дто. Тебе в дальнейшем возможно придётся дообогащать свой ответ ещё запросами в базу или в другой сервис. И вызов других сервисов и репошек это явно не дело контроллера.
Советую попробовать моделмаппер. Он медленнее чем мапстракт из-за рефлексии, но проще в использовании.
491 2601566
Как найти работу без хибернейта?
сущность.jpg14 Кб, 480x360
492 2601568
>>601561

>>а если у тебя сучность на 20+ полей?


Назови поля в дто также как в сущности - и оно само смапится. С агрегированными данными тоже канает. Типы жук сам подгонит, если надо.
493 2601574
>>601565

>>моделмаппер. Он медленнее чем мапстракт из-за рефлексии, но проще в использовании.


Мне он тоже казался проще, но с мапструктом сложно только в первый раз. Потом уже не оторваться.
494 2601582
>>601561
Если у тебя полный update, всех полей или insert, то там вовсе не обязательно сетить по одному. Преобразуешь сущность в jooq рекорд и сохраняешь все.
https://stackoverflow.com/a/54131550
495 2601590
>>601566
Хз как. Меня на нынешней работе с жуком гоняли по хиберу на собесе. Не сильно конечно, но я тогда жука не знал.
Проходил кстати стажировку на одном легасиговне. И там кроме хибера были хранимки на 100 строчек в jdbcTemplate
496 2601591
>>601568
Хуя се, это только в платном такое, или везде? Жуком прост не пользовался, а там оказывается какой-то маппер встроенный есть
497 2601599
>>601591
У меня на проде бесплатный и не помню случаев чтоб платный нужен был. Разве что для жсонб постгреса методов у него нет, но не факт что в платном они есть - решается просто постановкой стринги с sql запросом.
Но такой автомапинг это магия, надо соблюдать осторожность - проебешься с неймингом и не покроешь тестами - словишь нулы в неожиданных местах.
498 2601607
499 2601618
>>601403
похоже, с моими связями в таблице, используя маппинги хибера невозможно сделать так, чтобы дубликаты персон удалились, а их роли объединились в список и были добавлены в объект персоны.

для такой реализации, как минимум нужно добавлять поле List<Role> в сущность Person, а так нельзя, потому что Person уже связан с Role через MoviePersonRole... т.е. остается только убирать связь role ---< movie_person_role и делать role ---< person? но тогда, как я уже говорил, это будет неэффективно с точки зрения занимаемого места в бд... ебнуться просто
500 2601627
>>601618
Че за тема?
изображение.png1 Кб, 214x42
501 2601629
502 2601632
>>601629
Выглядит как говно ебаное, спасибо за название, буду обходить стороной.
503 2601635
>>601618

>невозможно сделать так, чтобы дубликаты персон удалились, а их роли объединились в список и были добавлены в объект персоны.



Ты опять выдумал чето непонятное. Проговори опять языком кабана, что делать пытаешься?
504 2601641
>>601635
хочу, чтобы возвращался один шварц, со списком ролей внутри себя (снова пики скину).

как уже выяснили, мой жсон сейчас работает исключительно по связям таблиц. т.е. хибер возвращает результат из бд, а джэксон (или кто там этим управляет?) собирает мне жсон на основе ответа. так делать не надо, лучше создать DTO, которое я буду возвращать пользователю.

я сейчас пытаюсь это DTO собрать, пока оно у меня такое (пик3). и тут начинается проблема, Person у меня не содержит List<Role> , вместо этого он связывается с MoviePersonRole (пик 4), собственно поэтому я и имею пик 1.

чтобы MovieDTO работало так, как мне надо, мне надо либо поменять эту связь Person с Role через MoviePersonRole, что приведет к неэффективному хранению на бд (так что этот вариант не подходит), либо... либо я должен как-то собрать этот объект сам, чтобы его структура была какая мне надо
persons: [
_person: {
__firstName: "asda"
__roles: [
___ ....
__]
_}
]
и я уже голову всю сломал, как это можно сделать стримами, плюс сам их синтаксис кажется какой-то кашей, в которой только путаешься больше. бля... это даже объяснить все сложно... либо я упускаю какой-то момент и не понимаю
505 2601645
>>601641
Либо мне надо создать какой-нибудь PersonDTO, где будет List<Role> и который я буду передавать в MovieDTO ( List<PersonDTO> )? DTO - это же по сути просто вспомогательные классы? т.е. это даже не сущности? и связей в них нет никаких? я просто думаю как эту структуру описать в этом MovieDTO, не меняя связей в бд....
506 2601647
>>601247
Потому что 4 - 9/2 < 0, очевидно, что корень извлекать нельзя.
А тот анон дал строгое доказательство.
507 2601651
>>601647
Ну т.е. извлечение корня из квадрата - это модуль, а не просто 4 - 9/2
508 2601656
>>601641

Ну сделай не стримами. Перебери циклом как получится, на стримы потом перепишешь.
509 2601695
>>601656
бля, это такой пиздец... в такие моменты чувствуешь себя просто конченным тупым говноедом, просто животным ебаным...

реквестирую нормальные способы решить эту проблему
510 2601729
>>601695
https://www.baeldung.com/mapstruct - вот это решит, надо будет просто правильно @Mapping прописать.
511 2601746
>>601695
Перенеси это на уровень сервисов, в контрллере логики быть не должно.

var uniquePersonMap = moviePersonRoles
.stream()
.collect(
Collectors.groupingBy(x->x.getPerson(),
Collectors.mapping(x->x.getRoles))
пишу без ИДЕ - сам поправишь/допишешь под свои классы

var personsDto =
uniquePersonMap.entrySet()
.stream()
.map(m -> newPersonDto(m.getKey().getName,m.getValue()))
.collect(Collectors.toList())

Ну и далее в таком духе. Стримы это стильно, модно, молодежно. А циклы и мутабельные листы - ебанина какая то.

PS какая версия жабы? Если 11+ используй var, а то рябит от типов. Идея подсветит что там в варе, если запутаешься.
512 2601768
>>601695
Зачем ты вешаешь @Component на дэтэошки? Ты идиот? Не лезь, короче, чел. Ты не понимаешь как работает спринг фримверк.
.png136 Кб, 1148x643
513 2601794
>>601695
Цэ пиздец, топовое программирование. Дальше не читал
514 2601821
>>601794
и что не так? к чему доеб вообще? если ты к самой конструкции, то она вся такая. ты мои связи в таблице видел вообще для начала? а писал я это в лоб через циклы, чтобы хотя бы написать в принципе эту хуйню

>>601768
ты вообще иди на хуй, у меня 5 часов утра уже было, и до этого я сидел без вылазно 18 часов, прогал свою хуйню, я даже не помню как его ставил вообще

>>601729
тут кто-то писал уже что его настраивать сложно, поэтому не стал. про modelmapper тоже читал, немного, не понял преимуществ, поэтому пока не стал юзать (потом мб попробую получше вникнуть в эти мапперы)

>>601746
проблема еще в том, что я стримы не особо знаю. не знаю их всех возможностей, до этого пытался только через map и distinct решить задачу, но получалась лапша вложенная, от которой башка взрывалась только. у них синтаксис пиздец специфичный для меня
515 2601836
>>601821

>у меня 5 часов утра уже было


Ты просто не понимаешь как работает спрэнг, чел... Просто не лезь в айти. Иди лучше таксуй или грузаном в пятерочку - пользы кратно больше будет.
516 2601844
>>601836
отгрузил тебе в рот, чсвшный уебок
517 2601855
>>601836

>>и что не так? к чему доеб вообще?


- Глобальные переменные, некогда объяснять, вы будете локальными.
Ты, List<Role> roles будешь списком, то есть списочным массивом с одним элементом, увидимся на следующем шаге.
518 2601858
>>601821

>>и что не так? к чему доеб вообще?


- Глобальные переменные, некогда объяснять, вы будете локальными.
Ты, List<Role> roles будешь списком, то есть списочным массивом с одним элементом, увидимся на следующем шаге.
519 2601860
>>601836
Сорян, >>601855 не тебе
изображение.png54 Кб, 867x198
520 2601863
>>601858
так я должен же как-то проинициализировать значение в мапе, когда его добавляю впервые, оно у меня - список. он может быть как из 1 элемента, так и из нескольких (у одной персоны может быть несколько ролей). о каких глобальных переменных вообще идет речь? ты хочешь сказать, что List<Role> должна быть глобальной? или что?
521 2601869
>>601746

>Если 11+ используй var, а то рябит от типов.


С типами лучше читается, или нахуй.
522 2601872
Не отвечайте этому вкатуну с кинопоиском, он уже неделю со своей хуйней анонов доебывает, хотя по-моему уже всем очевидно, что он там себе надумал исполнить нихуя не сможет. А если вы за него все сделаете, то он энивей ничему не научится. Пусть пиздует разбираться а стримах и прочей хуйне, которую не знает.

>>601858
>>601794
>>601768
изображение.png88 Кб, 973x431
523 2601880
>>601872
с чего ты взял вообще что за меня тут кто-то что-то делает? я только спрашиваю про практики и другие улучшения того, что уже сам сделал, потому что хочу знать как правильно.

>Пусть пиздует разбираться а стримах и прочей хуйне, которую не знает


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

>>601746
я в итоге так переписал, стало чуть лучше, вроде... алсо, к стримам надо привыкнуть и про их методы почитать. groupingBy оч полезным в данной ситуации оказался
524 2601881
>>601872
Кому хочу, тому и отвечаю. Иди лечись лучше.
525 2601882
да этому клоуну шарписты под кроватью жопу порвали, до сих пор оправиться не может
526 2601911
Какая у вас ОС стоит, ребзя?
527 2601941
>>601880
Вкатун с кинопоиском, все ты правильно делаешь, ты молодец.
Не слушай хуесоса выше. Разве что простыни текста мог бы делать покороче, читать очень сложно.
Я бы тебе помог, но хибера почти не знаю.
528 2601942
>>601911
Виндовс 11 с wsl. А у тебя?
529 2601954
>>601880
Такой дроченый маппинг, тем более написанный руками точно должен быть в сервисе.
Контроллер по-хорошему вообще не должен видеть класс с сущностями, только дтошки.
530 2601958
а как насчет такой практики? я вообще решил создать конструктор для того, чтобы можно было в контроллере просто передать Movie, который преобразуется в MovieDTO и возвращается клиенту >>601880
531 2601975
>>601954
я уже задавал этот вопрос итт, мне сказал один анон, что надо на практике самому и так и так попробовать, а когда с проблемами столкнусь, тогда и можно будет порассуждать на тему как лучше - в сервисе или в контроллере. алсо, я тоже логически больше склонен к слою в сервисе, но с другой стороны от сервиса же по сути требуется только вернуть обработанные данные, но под обработкой я подразумеваю какие-то специфичные обработки, типа исключения чего-то не нужного, объединения, добавления, запросы мб какие-то другому сервису. а контроллер по сути просто должен или не должен преобразовать эти обработанные данные в DTO.

что думаешь про это? >>601958

еще такой вопрос, если из бд приходит сразу все что нужно, например всего два поля с id и name, нужно ли сверху еще наворачивать абстракцию в виде DTO, которая будет возвращать абсолютно те же данные? я понимаю, что если есть вероятность изменения этих DTO, то об этом можно заранее позаботится, но если такое неизвестно заранее?
уставшийВкатун.jpg129 Кб, 1280x854
532 2601980
Ребята-програмята, я устал.
В 2020 году начал свой вкат - и сначала я вкатывался в Python, хотел сделать свой YouTube на Django.
Потом вкатывался в JS.
Потом - в Android-разработку, учу Java и Kotlin.
Потом решил вкатиться в блокчейн-разработку - и учил Rust с Solidity.
Теперь, наслушавшись историй про то что IT-рынок сейчас в кризисе, решил идти на бэкенд-разработку - ведь в ней, по словам экспертов, возможности получить работу выше.
Но не могу определиться, куда пойти: в Java Spring или в C# .NET Core.

Параллельно теплится в душе надежда сделать игру на C# Unity и заработать на ней миллионы долларов - после чего стать директором своей Rockstar Games и прикуривать от стодолларовых купюр.

Помогите мне, дайте совет: куда пойти и что делать? Инбч иди нахуй
533 2602004
>>601911
винда конечно
534 2602006
>>601975

>>сказал один анон, что надо на практике самому и так и так попробовать


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

>>от сервиса же по сути требуется только вернуть обработанные данные


там вся логика, он для этого как бы и нужен. У тебя при правильном подходе там ничего и не будет - достал и репозитория, передал мапперу, вернул результат. Но в проде там могут быть еще какие то запросы в другие сервисы, проверка доступов и ролей (чтоб не выдавать фильмы 18+ если ты не указал возраст, например), все что придумает кабаныч

>>а контроллер по сути просто должен


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

>>преобразовать эти обработанные данные в DTO.


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

>>что думаешь про это?


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

>>нужно ли сверху еще наворачивать абстракцию в виде DTO


ты ж на джаве пишешь - всегда нужно больше абстракций
535 2602007
>>601980

>куда пойти и что делать?


пойти нахуй кусать захуй

не читал твой высер лол
войтивайти.png502 Кб, 1957x1636
536 2602008
>>601980

>>куда пойти и что делать?


Надо пройти путь до конца. Завершить так сказать цикл.
537 2602009
>>602006

>ты ж на джаве пишешь - всегда нужно больше абстракций


звучит как жирный троллинг
538 2602015
>>601975

>если из бд приходит сразу все что нужно, нужно ли сверху еще наворачивать абстракцию в виде DTO


Ну за всех сказать не могу, но у нас обязательно. Для контроллеров есть интерфейсы и они лежат в отдельном апи мавен-сабмодуле, вместе с дтошками. А вся реализация в сабмодуле импл. Ну и апи ничего не знает про импл, импл зависит от апи. Поэтому я вообще не могу отдавать не-дтошки.
Но видел продовый код, где таким не заморачиваются.
>>601958
В архитектуре, на которой я работаю так сделать нельзя, дто ничего не знают про энтити. Можно сделать наоборот, ебануть конвертер внутри энтити, но это тоже не очень. Лучше иметь отдельный метод контвертер в сервисе или класс-конвертер, или маппить с помощью библиотек.
539 2602022
>>602009
в данном случае это была метаирония

Абстракции конечно хуево ооп пидоры до сих пор лепят интерфейс для единственного сервиса, но джава это обычно сурьезный бизнес и попавшая на слой представления ентити может потом создать проблемы, поэтому лучше сразу привыкать писать везде полностью контролируемые дто.
540 2602056
>>601942
10ка. Вот думаю переходить на 11ку или нет.
541 2602064
>>601980
Забей чел. Вкатывайся в Java Legacy.
Тоесть найди компанию которая поддерживает говно динозавра, и просто чиль и хуй пинай
542 2602095
>>602056
Нет, смысла нет. Я переходил, чтобы поиграть с windows subsystem for android. Поиграл и забил.
В остальном разницы не вижу.
543 2602103
>>602064
Как понять, что компания, в которую ты собесишься легаси?
544 2602122
>>602103
Пишут на 8 джаве или ниже.
545 2602202
ПЕРЕКАТ >>2602200 (OP)
ПЕРЕКАТ >>2602200 (OP)
ПЕРЕКАТ >>2602200 (OP)
546 2602373
ЖАБА ГОРАЗДО ХУЖЕ ЧЕМ ШАРП
547 2602423
>>602373
Это закрывающий тег?
548 2602877
Народ,вы писали диплом на джаве? У вас его хоть раз запускали или тупо пролистали код? Мне лень хуячить фронт к диплому и я думаю тупо сделать пустую формочку и нафотошопить туда данных,бэк делаю по честному. Какие подводные?
549 2602881
>>599736
А если jakarta?
550 2602923
>>602881
Все просто, чекай пакеты. Если пакет начинается с jakarta.persistence (как у Entity), значит это JPA. Если org.hibernate - значит хибернейт. Ну а если org.springframework.data - значит Spring Data.
551 2603062
>>601872
Глилой ты ебаный кусок дерьма.

А вот ответь, козлина, кому тогда отвечать то? Очередному сотому по счету нытику, проходящему в прямом эфире пять стадий принятия, задерживаясь на торге и депрессии, вместо того чтоб взять и хоть что то попытаться сделать? Кинопоиск-анон хоть пытается понять и хоть пробует штуки, собирает грабли и учится, вместо того чтобы в тысячный раз на двощах разжечь тупой и бессмысленный срач с шарпистами, выклянчить роадмап или поплакать о том, что вакух на стажерство не осталось в РФ.

Презираю таких как вы. Кинопоск-куну мое уважение.
552 2603067
>>601958
Согласен с предыдущим аноном. Если есть какая-то логика в маппинге, то у нас на проекте создается маппер-сервис и в нем методы toDto(), toEntity(). Если логики нет, то просто используй jackson, встроенный в спринг.
new ObjectMapper().convertValue(entity, EntityDto.class)
алсо new ObjectMapper() можно просто инжектнуть
553 2603072
>>602006

>Анон какой то хуеплет попался



Сам ты хуеплет блять. Хули толку челика вдобавок еще и бестпрактисами душить? Таких душнил и без тебя у него на будущей работе хватать будет, он еще тридцать раз от них выгорит и станет постоянным клиентом у какого нибудь психотерапевта, ибо иначе с вами уродами работать тупо не возможно.

У него и без практисов щас приключений хватает. Пусть доделает проект до конца, хоть по-говенному, но до конца, чтоб работало.
554 2603182
>>603062
Хуя ты порвался, большинство сами сидят и разбираются, а не на двощах срут своими простынями. Надеюсь этот вкатун к тебе в контору попадет и будет подходить каждый час спрашивать как комит сделать, спок, шиз.
555 2603195
>>603072

>>бестпрактисами душить?


Чел не знает как правильно и спрашивает совета, а ты ему говоришь "делай как хочешь" - считай что нахуй посылаешь. Он сам не знает как хочет.

>>Таких душнил и без тебя у него на будущей работе хватать будет


Хуй знает повезло мне так или нет, но мне ни раньше ни сейчас никто почти не говорит как же правильно. Может "душнить" не хотят, а может и сами нихуя не знают. А может просто всем похуй - твой код ты и ебись.
Критика по существу лучше равнодушия.

>>он еще тридцать раз от них выгорит


Потому и выгорит, что не знает как надо. На работке и так куча всего нового будет, чтоб еще и охуевать, что последний год делал все неправильно и теперь надо переучиваться.

>>иначе с вами уродами работать тупо не возможно.


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

>>У него и без практисов щас приключений хватает.


Ему эти беспрактисы помогут пройти приключения проще. Их не просто так придумали и назвали соответсвенно..
556 2603390
>>603182
Ну и заебись. Я много людей менторил и онбордил, мне не западло на вопросы вкатунам отвечать. А вот с таким гнильем как ты я бы предпочел никогда не работать.
557 2603624
>>603195
Ок, как скажешь. Считай так если хошь, я буду считать иначе.

Мне это дерьмо джавистское под названием "бест практисы" всегда мешало. А решенная до конца задача - всегда мотивировала двигаться дальше. И по настоящему расти в синьорность я стал только тогда, когда пришел для себя к выводу, что "бестпрактисы" - всего лишь не имеющий под собой никаких обьективных обоснований свод пустых стереотипов. Фанаты "бестпрактисов" и их поделки, попадавшиеся мне по пути, редко из себя представляли хоть что-то достойное, поэтому сорян за мой скепсис, я никогда не стану пропагандировать это дерьмо. Сами варитесь в этом котле. Я - по обьективным вещам, а не по фанбойству.
Тред утонул или удален.
Это копия, сохраненная 6 апреля 2023 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски