Сохранен 557
https://2ch.hk/pr/res/2596713.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Java #244 thread java /java/

 Аноним 02/02/23 Чтв 13:31:44 #1 №2596713 
image
image
image
image
Программирование - это не столько про анальное крудошлёпство, сколько про стиль мышления. Высокоуровневая абстракция, поиск сходных черт, оптимизация - всё это высшие интеллектуальные способности, что образуют такой прочный симбиоз с программированием на 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)
Аноним 02/02/23 Чтв 13:36:41 #2 №2596720 
Пишу полтора года на спринге. С бд работаю на jooq. Думаю менять работу. Стоит выдрачивать хибер? Неохота прям сильно, но в большинстве вакансий хибер.
Что еще надо на мидла?
Аноним 02/02/23 Чтв 13:42:07 #3 №2596728 
ЖАБА ГОРАЗДО ХУЖЕ, ЧЕМ ШАРП!!!
Аноним 02/02/23 Чтв 13:49:50 #4 №2596735 
>>2596720
>в большинстве вакансий хибер
это легаси
Аноним 02/02/23 Чтв 14:01:02 #5 №2596748 
Какую тему юзаете?
Аноним 02/02/23 Чтв 14:09:03 #6 №2596758 
>>2596748
high contrast
Аноним 02/02/23 Чтв 14:15:23 #7 №2596762 
>>2596735
Ну даже если мы предположим, что хибер есть только на легаси проектах, то легаси большинство.
Ну и кстати вопрос, сильно будет после пиления нескольких микросервисов почти с нуля садиться на легаси с монолитом/микросервисами/распределенным монолитом?
Аноним 02/02/23 Чтв 14:16:03 #8 №2596763 
>>2596748
реальную
Аноним 02/02/23 Чтв 14:17:04 #9 №2596764 
image.png
>>2596748
Вот эту
Аноним 02/02/23 Чтв 14:24:05 #10 №2596770 
>>2596748
Дефолтную светлую тему. Глаза меньше устают. У меня и в терминале светлая тема.
Аноним 02/02/23 Чтв 15:03:55 #11 №2596833 
>>2596748
дефолтную светлую. Даркула это кулхацкерам
Аноним 02/02/23 Чтв 15:17:56 #12 №2596855 
>>2596748
У именно меня от светлой глаза устают. Все коллеги используют темную. Но насколько я понимаю, это индивидуально.
Я себе темную поставил везде и в идее и в мессенжерах и в ос. Пробовал даже расширение для браузера, чтобы на страницах фон перекрашивало - плохо работает.
Аноним 02/02/23 Чтв 15:20:37 #13 №2596860 
>>2596855
на дваче со светлой не устает, а в идее в светлой устает?
Аноним 02/02/23 Чтв 15:24:30 #14 №2596863 
>>2596860
Уже лет 7 использую muon. Раньше на том тирече стандартная тема раздражала, поэтому сидел на нульче.
Аноним 02/02/23 Чтв 15:36:10 #15 №2596875 
Аноны, вопрос к вам. Скоро хочу пойти и попробоваться на собесах, при себе есть один проект на гитхабе, в котором используются практически все технологии, которые знаю, но есть проблема: этот проект хуйня без задач и я вообще не ебу как его преподнести. Если вкратце, там можно оставлять комменты на отдельной странице, есть админка с возможностью редачить комменты или удалять, есть более менее норм секурити с возможностью входа через ауф, небольшой парсер новостей на главной, который далеко не идеально работает, но все же, еще пара страниц чисто для вида, типо страницы с моими линками и все. Я даже не ебу как мне этот проект описать одним словом, когда спросят, разве что начать называть сразу какие технологии там используются и какие фичи есть. Мне кажется это проблема, ведь собеседующий может посчитать, что я сделал какую-то залупу хуй знает зачем хотя на деле так оно и есть А если спросят про пользу, которую он приносит, мне на это тоже нечего ответить, даже общаться там проблематично в комментах, ибо сделан он на таймлифе. Короче хэлпуйте, может можно все-таки как-то подать этот проект, будто он совсем не бесполезный и даже имеет коммерческую перспективу это же вроде как важно заново выдумывать что-то и переписывать конечно впадлу, я на него прилично времени убил
Аноним 02/02/23 Чтв 15:39:42 #16 №2596882 
в чем отличие <?> от <T> (параметризированный метод/класс) ?

в контроллерах спринга возвращают ResponseEntity<?>. зачем? контроллер работает с конкретными сущностями, почему явно не указывают класс сущности?
Аноним 02/02/23 Чтв 16:12:27 #17 №2596936 
джуну надо знать spring sequrity и spring cloud, чтобы найти первую работу?
Аноним 02/02/23 Чтв 16:12:49 #18 №2596937 
>>2596936
>security*
Аноним 02/02/23 Чтв 16:19:56 #19 №2596951 
>>2596875
А на сишарпе с блейзором мог бы запилить современное полноценное веб-приложение
Аноним 02/02/23 Чтв 16:21:13 #20 №2596954 
>>2596882
Т - если планируешь использовать параметр, а ? если тебе пофиг на него, лишь бы скормить компилятору.
Аноним 02/02/23 Чтв 16:23:21 #21 №2596956 
>>2596954
так а в чем преимущество? я не понимаю. я сам не знаю так ли это, но логически если подумать, мне кажется, чем конкретнее указываешь компилятору какой тип использовать, тем более он тебе оптимизирует байт код.
Аноним 02/02/23 Чтв 16:25:33 #22 №2596960 
>>2596956
Байт-код ничего не знает про дженерики. Читай книгу Философия Java на 1000+ страниц, там эта тема очень подробно разбирается.
Аноним 02/02/23 Чтв 16:27:42 #23 №2596965 
>>2596960
ну тогда в чем преимущество то епта? в том что ты 1 символ ставишь вместо N символов?
Аноним 02/02/23 Чтв 16:31:17 #24 №2596970 
>>2596965
Чтобы не писать методы для работы с каждым классом. К примеру, если пишешь калькулятор, то пришлось бы писать отдельный метод для сложения int и отдельно для double.
Аноним 02/02/23 Чтв 16:34:03 #25 №2596976 
>>2596970
так я бы мог создать типизированный метод и с тем же успехом вызывать ResponseEntity<T> method<T>(...)
Аноним 02/02/23 Чтв 16:36:12 #26 №2596979 
>>2596936
Мое мнение, что клауд не нужен вообще.
С нулевыми знаниями секурити тоже можно найти место. Но лучше быть готовым что на тестовом дадут минимальную авторизацию с basic auth. https://www.youtube.com/watch?v=7uxROJ1nduk вот этого видоса будет за глаза.
Аноним 02/02/23 Чтв 16:37:32 #27 №2596982 
>>2596951
Чем блейзор от ваадина отличается?
Аноним 02/02/23 Чтв 16:39:11 #28 №2596986 
ломбок это для латентных пидоров
Аноним 02/02/23 Чтв 16:41:27 #29 №2596991 
>>2596986
а явно писать геттеры-сеттеры-конструкторы-билдеры для открытых пидоров
Аноним 02/02/23 Чтв 16:43:27 #30 №2596995 
>>2596982
Ваадин что-то типа WebForms, создаёт высокоуровневый абстракции над вебом, чтобы приблизить работу к десктопу. В итоге гоняет тяжёловесные пакеты между фронтом и бэком.
Блейзор же - результат длительной эволюции фреймворков на базе ASP.NET. Он не скрывает детали реализации. Можно напрямую писать html, создавать свои компоненты. Это полноценная альтернатива фреймворкам типа реакта и ангуляра.
Аноним 02/02/23 Чтв 16:43:27 #31 №2596996 
так писали олды явы
олды явы пидорами не были
следовательно ты не прав
Аноним 02/02/23 Чтв 16:43:40 #32 №2596997 
>>2596875
але сука прокомментируйте
Аноним 02/02/23 Чтв 16:47:07 #33 №2597004 
что будет если придти на собес с пет проектом ява игры на мобиле
Аноним 02/02/23 Чтв 16:47:59 #34 №2597008 
>>2596995
Можно напрямую писать html, создавать свои компоненты.
То есть это шаблонизатор что-ли ебучий просто прокаченный? Нахуй он тогда нужен? Анону нужно на ресте практиковаться.
Аноним 02/02/23 Чтв 16:48:40 #35 №2597011 
>>2596995
>в петушарп завезли тормозящий сахар
рррррряя, питушарп лучший, сахарок, никакого бойлерплейта!
>в петушарп не завезли тормозящий сахар
ррррря, чё, не мужик что ли?))0))0 зачем тебе тормозящие пакеты какие то гонять? деды на голом хтмл писали и мы будем))00)
Аноним 02/02/23 Чтв 16:51:01 #36 №2597017 
>>2597008
Там два варианта. Есть серверный, где клиент все нажатия кнопочек отсылает на сервер. И веб-ассембли, который полностью работает на стороне клиента.
Преимущество в том, что пишешь на сишарпе и не надо учить жс/тс. Если собираешь в фуллстеки, то сразу учи жс/тс.
Аноним 02/02/23 Чтв 16:51:34 #37 №2597018 
>>2596997
>Я даже не ебу как мне этот проект описать одним словом, когда спросят, разве что начать называть сразу какие технологии там используются и какие фичи есть.
Никто ничего не спросит с вероятностью 90%. А если спросят, то только про технологии которые трогал в пете, про пользу это шиза. Если у тебя ненужные технологии типа шаблонизаторов, то страдай. Ну и просто акцентируй внимания на других технологиях из пета, более актуальных, связанных с бд например.
Аноним 02/02/23 Чтв 16:51:40 #38 №2597019 
>>2596875
Показал бы хоть, чё у тебя там.
Аноним 02/02/23 Чтв 16:54:03 #39 №2597023 
>>2597017
Ебаться с жс/тс - намного более адекватное вложение времени, чем вкладывать его в веб ассемблер, шаблонизатор и библиотеку-обертку для них, типа твоего вишневого блейзера.
Аноним 02/02/23 Чтв 16:54:47 #40 №2597025 
>>2597019
Ну ща мож ссылки уберу и в клауд на виртуалку закину, потом сюда ссылку дам а может и нет
Аноним 02/02/23 Чтв 17:20:04 #41 №2597059 
Как я могу получить ауфентикационный юзернейм внутри метода commence(...) AuthenticationEntryPoint? httpServletRequest.getUserPrincipal() и SecurityContextHolder.getContext().getAuthentication() возвращают null.
Аноним 02/02/23 Чтв 17:54:13 #42 №2597105 
бэкендщику надо знать про реакт и прочее гомопидорство? как происходит разработка в реальном проекте? сначала бекенд пишут, роуты, только потом фронтендщик сам подстраивается? или бекендщик подстраивается? или все роуты обговариваются заранее?
Аноним 02/02/23 Чтв 17:59:13 #43 №2597121 
>>2597105
> бэкендщику надо знать про реакт и прочее гомопидорство?
Нет.
> сначала бекенд пишут, роуты, только потом фронтендщик сам подстраивается? или бекендщик подстраивается? или все роуты обговариваются заранее?
Бэкендер продумывает ручки и дтохи, описывает их фронтендеру. Дальше пилят параллельно, бэкендер пишет логику, фронтендер красит кнопки и дёргает ручки.
Аноним 02/02/23 Чтв 18:06:38 #44 №2597134 
>>2597017
>>Преимущество в том, что пишешь на сишарпе и не надо учить жс/тс.
Я пишу на джаве и мне тоже не надо учить жс/тс. Для этого фронты есть.
>>фуллстеки
2 мидла по цене одного, еще и дорогим сенькой никогда не станет
Аноним 02/02/23 Чтв 18:09:29 #45 №2597138 
>>2597121
>фронтендер красит кнопки
Вот ты пренебрежительно относишься к работе фронтендера, типа легкая хуйня их работа, но ведь на деле современный фронтенд будет посложнее бека.
Аноним 02/02/23 Чтв 18:11:53 #46 №2597144 
>>2597138
Это рофл такой, как бэкендеры, грузящие жсоны в базу.
Аноним 02/02/23 Чтв 18:14:55 #47 №2597149 
>>2597138
Работа сложная потому что муторная, но тупорылая. Это как камни таскать.
Аноним 02/02/23 Чтв 18:28:23 #48 №2597170 
>>2597149
А крудошлепство стало вдруг не муторным и тупорылым?
Аноним 02/02/23 Чтв 18:35:49 #49 №2597180 
>>2597170
Ну я вот например не крудошлёпством занимаюсь, на бэкенде. Фронта в принципе интереснее нет, а на беке много жемчужин.
Аноним 02/02/23 Чтв 19:16:56 #50 №2597236 
>>2597105

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

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

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

По всякому. Иногда идут от бэкенда. Иногда оба идут от API (spec-first). А иногда (вот как у нас, например), бэк и фронт идут вслепую параллельно, а потом начинается баттл-рояль под названием "интеграция фронта с бэком".
Аноним 02/02/23 Чтв 19:26:52 #51 №2597250 
>>2597019
Ну вот короче, только с телефона хуево выглядит, ауф через гугл не работает тк домена нет, офну через час
http://89.208.209.143/api/view/main
Аноним 02/02/23 Чтв 19:34:53 #52 №2597261 
image
>>2597250
Не переходите по ссылке. Долбоеб решил заскамить на аккаунты.
Аноним 02/02/23 Чтв 19:36:19 #53 №2597265 
>>2597261
че ты несешь там есть своя регистрация
Аноним 02/02/23 Чтв 19:36:50 #54 №2597267 
>>2597265
Нахуй тебе фулл рид энд врайт, чучело?
Аноним 02/02/23 Чтв 19:39:04 #55 №2597271 
>>2597267
тебя ебет? я в скоупе юзер выставил на похуй
Аноним 02/02/23 Чтв 19:50:35 #56 №2597286 
Как использовать ебучий @RestClientTest слайс, если мне в сервисе нужен RestTemplate бин с квалифаером?
Аноним 02/02/23 Чтв 19:56:05 #57 №2597294 
>>2597261
>>2597267
ладно, из-за тебя долбоеба пришлось выключить ауф
Аноним 02/02/23 Чтв 20:32:28 #58 №2597333 
>>2597250
все я вырубил свою хуйню
Аноним 02/02/23 Чтв 21:12:04 #59 №2597373 
>>2597333
по мне так ты молоца. Красиво, плюс знаешь как это хостить. Код не смотрел
Аноним 02/02/23 Чтв 21:43:24 #60 №2597418 
>>2597373
Спасибо, но я немного обьебался конечн, постоянно выкидывало из аккаунта внутри приложения, как я понял, это из-за того, что я сделал скейл на три инстанса на всякий, а айди сессии спринг хранит подефолту в какой-то коллекции внутри приложения я это не менял и когда перекидывало на другой инстанс, происходил редирект на логин пейдж опять. Еще сейчас понял, что сисрф задезейблен был и можно было б базу засрать через постман какой-нибудь тк валидация быоа только на формах стоит.
Аноним 02/02/23 Чтв 22:45:31 #61 №2597501 
>>2596875
Ты не бизнес менеджер, чтоб создавать успешный коммерческий продукт. Так и преподноси, что это проект для оттачивания навыков и демонстрации разных технологий. А вот то что там общаться проблематично, это минус и претензия к тебе. То что используется таймлиф - не оправдание, зачем тогда выбрал эту технологию?

Алсо, подскажи, как хостил?
Аноним 02/02/23 Чтв 23:13:37 #62 №2597537 
Как же охуенен Stream Pipeline. Когда нибудь я и напишу что-нибудь такое же охуенное, как Stream Pipeline.
Аноним 02/02/23 Чтв 23:22:45 #63 №2597547 
>>2597537
Не напишешь.
Аноним 02/02/23 Чтв 23:27:02 #64 №2597549 
>>2597547
Напишу!
Аноним 02/02/23 Чтв 23:34:33 #65 №2597552 
>>2597501
>Ты не бизнес менеджер, чтоб создавать успешный коммерческий продукт
Да сейчас с большой неохотой берут без коммерческого опыта, а если кандидат хороший, но нигде до этого не работал, пытаются выдать его пет проект за этот опыт. У меня знакомого об этом примерно спрашивали на собесе, видимо все-таки это немаловажно.

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

>как хостил?
Просто в кубер закинул, который в отечественном клауде создал, не уверен на счет того, что так можно и нужно делать, но сделал как умею
Аноним 03/02/23 Птн 00:34:29 #66 №2597598 
>>2597552
>пытаются выдать его пет проект за этот опыт
Это будет когда ты уже трудоустроишься и твоя аутсорс компания будет пытаться продать тебя иностранному заказчику, думаю тебе помогут с этим. А в саму компанию, в которую ты устраиваешься, нет смысла делать вид что ты сделал какой-то реальный коммерческий продукт
Аноним 03/02/23 Птн 01:06:04 #67 №2597613 
>>2596713 (OP)
> Скажите, на spring только сайты пишут ? Или можно лаунчер для майнкрафта написать ?

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

А вообще можно запилить бэкенд с таймлифом, и в портативный браузер засунуть а ля электрон
Аноним 03/02/23 Птн 01:11:11 #68 №2597615 
>>2596713 (OP)
А как профилировать веб сервисы?

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

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

Я знаю как это делать по принципу здравого смысла, ака смотреть на базу в первую очередь, логи писать итд, мне интересно что вы делаете когда совсем пизда
Аноним 03/02/23 Птн 01:24:58 #69 №2597618 
8ugkllmjcqs31.png
Анон, уже не на первом собесе спрашивают рассказать про сборщики мусора, реализации и как работают. Шо почитать/посмотреть можно?
Аноним 03/02/23 Птн 07:26:39 #70 №2597678 
https://www.falkhausen.de/Java-8/java.util/Collection-Hierarchy.html
прикольный сайт
Аноним 03/02/23 Птн 07:47:01 #71 №2597680 
>>2597615
java melody
Аноним 03/02/23 Птн 12:11:06 #72 №2597843 
изображение.png
чувствую хуйню какую-то сделал, но не знаю как лучше
идея в том, что я не могу использовать 1 составную таблицу (movie и person), потому что один person может быть в одном фильме и актером, и режиссером (как пример). поэтому комбинации movie_id и person_id бы повторялись, но в таком случае нельзя было бы идентифицировать по роли person. тогда можно было бы добавить 3 колонку role_type (varchar или указывать id роли), но тогда не понятно какой составной PK делать. а PK по 3 столбцам нельзя делать (вроде)
Аноним 03/02/23 Птн 12:22:58 #73 №2597847 
изображение.png
>>2597843
т.е. вот так сделать...
но как я уже сказал, составной PK не сделать в таблице movie_person
но нужен ли он там вообще?
я руководствуюсь лишь тем, чтобы не было дубликатов в таблице, чтобы это сделать, нужно определить PK в ней по нескольким столбцам. по всем трем нельзя. по 2 не получится тоже, потому что это не даст одному и тому же фильму с одним и тем же person создавать разные роли
Аноним 03/02/23 Птн 12:36:38 #74 №2597861 
>>2597618
https://www.freecodecamp.org/news/garbage-collection-in-java-what-is-gc-and-how-it-works-in-the-jvm/
И Шипилева можешь глянуть - он любит про кишочки жвм рассказывать
Аноним 03/02/23 Птн 12:52:20 #75 №2597874 
>>2597843
>>2597847
>>не понятно какой составной PK делать
Просто сделай суррогатный ключ и ограничение уникальности по 3 полям, not_null для каждого не забудь
UNIQUE (movie_id, person_id, role_id)

>>3 колонку role_type (varchar или указывать id роли),
лучше ид, если роли могут добавляться/меняться

>>нужен ли он там вообще?
Теория реляционных баз данных говорит, что первичный ключ должен быть в каждой таблице. В Postgres такого жёсткого требования нет, но обычно лучше ему следовать.
Аноним 03/02/23 Птн 12:58:53 #76 №2597882 
Без литкода можно стать хорошим программистом?
Аноним 03/02/23 Птн 13:00:31 #77 №2597888 
>>2597847
Чел, делай всегда primary key как рандомный UUID и все твои проблемы решатся. А на столбцы, если надо будет как-то часто искать по ним, индексы просто повесишь и все. Вторая картинка выглядит лучше первой, потому что в профиле человека ты сможешь легко собрать все его роли.
Аноним 03/02/23 Птн 13:08:10 #78 №2597910 
>>2597882
Можно. Но я бы все же не стал бы тебя отговаривать от попыток пошевелить мозгами на литкоде.
Аноним 03/02/23 Птн 13:23:43 #79 №2597928 
>>2596982
ваадин годится исключительно для создания внутренних админок или прототипов. ui-кастомизация там, как и гвт - кромешный пиздец.
Аноним 03/02/23 Птн 13:32:57 #80 №2597933 
vaadin.png
blazor.png
>>2597928
Ну как мы видим - уровень ненужности технологий примерно одинаковый.
Аноним 03/02/23 Птн 13:53:27 #81 №2597947 
Как я полагаю, Application context и Dipendency injection работают являются частью spring Core ?
Аноним 03/02/23 Птн 13:53:54 #82 №2597948 
>>2597861
>Examples of such Garbage Collection roots are:
>Local variables and parameters of the currently executing methods
Кек, на последнем собесе так и сказал, а мне в ответ "Неееет, гк работает только с хипом! Неверно!".
Аноним 03/02/23 Птн 13:57:07 #83 №2597950 
>>2597933
Зачем работать на джаве, если хочешь дрочить формочки?
Аноним 03/02/23 Птн 14:03:55 #84 №2597958 
>>2597950
Без понятия. Спроси у шарпопетуха зачем он какой-то стремный web-ui костыль постоянно тащит, как достижение. Хотя им даже в его дотнете никто не пользуется - на 700 вакух на асп.нет блейзер есть в 40.
Аноним 03/02/23 Птн 14:09:05 #85 №2597961 
>>2597947
Да. Контекст это механизм, реализующий di паттерн. Контекст - это основной функционал спринга, с которого он и начинался 20 лет назад. И сейчас его функционал лежит в артефакте spring-core
Аноним 03/02/23 Птн 14:18:37 #86 №2597973 
>>2596936
Достаточно Spring Core, Spring Data и Spring MVC.
Аноним 03/02/23 Птн 14:19:34 #87 №2597974 
>>2597973
буте и тесты
Аноним 03/02/23 Птн 14:43:40 #88 №2597988 
>>2597680
Не выглядит особенно полезным, все эти метрики должны и при обычном мониторинге собираться
Аноним 03/02/23 Птн 16:26:53 #89 №2598070 
поясните за микросервисы. допустим
1. у меня есть клиент, который хочет получить данные из бд
2. чтобы он это мог сделать, ему необходимо отправить куда-то запрос
3. предположим, этот запрос принял контроллер, осуществил запрос к бд и вернул ответ

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

какие вообще есть простые архитектуры для того, чтобы можно было познакомиться с микросервисами и написать свой?
Аноним 03/02/23 Птн 16:46:15 #90 №2598084 
>>2598070
Через кафку, не?
Аноним 03/02/23 Птн 16:53:16 #91 №2598091 
>>2598084
через раббит в кафку, потом в кликхаус. И никак иначе
Аноним 03/02/23 Птн 17:22:18 #92 №2598123 
>>2598091
Principal architect в треде, не иначе
Аноним 03/02/23 Птн 17:36:37 #93 №2598136 
Только узнал про существование ключевого слова record. Блять. Кто-нибудь еще в курсе про его существование? Кто-нибудь пользуется?
Аноним 03/02/23 Птн 17:51:06 #94 №2598149 
>>2598136
@Data удобнее. И вообщеу меня жук, иди нахуй со своими жава,ланг,рекордами нахуй.
Аноним 03/02/23 Птн 17:59:16 #95 №2598156 
>>2598149
Нахуй нужен жук, когда существует @Query?

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

@Query - путь настоящих хардкорных sql мужыков.
Аноним 03/02/23 Птн 18:24:18 #96 №2598188 
1675437858882.png
А VSCode для джавы это мем? В том же питоне, особенно в дарте, очень хорошо себя показывает. Неужели как с шарпом придётся использовать жирный кал вижуал студии, только теперь она будет зваться интелькой?
Аноним 03/02/23 Птн 18:26:49 #97 №2598194 
>>2598188
идея комьюнити бесплатная. Я вообще хз кому нужна идея ультимейт
Аноним 03/02/23 Птн 18:32:47 #98 №2598198 
>>2598194
Мне нужна, там удобная консолька с ораклом и ещё можно дебажить вебсферу.
Аноним 03/02/23 Птн 18:33:26 #99 №2598199 
Moviesearch.png
microservicemoviesearch.png
изображение.png
>>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 бд...
Аноним 03/02/23 Птн 18:35:41 #100 №2598202 
>>2598198
оракл через консольку? Чо там в консольке можно делать?
> и ещё можно дебажить вебсферу.
в вебсфере нет стандартного способа дебага?
Аноним 03/02/23 Птн 18:49:58 #101 №2598228 
>>2598202
> оракл через консольку? Чо там в консольке можно делать?
Писать запросы, редактировать таблицы мышкой.
> в вебсфере нет стандартного способа дебага?
Есть какая-то древняя IDE от IBM, только ну её нахуй.
Аноним 03/02/23 Птн 18:51:54 #102 №2598234 
>>2598228
>Есть какая-то древняя IDE от IBM, только ну её нахуй.
пиздос. Я думал в конфиге открыл какой-нибудь порт и дебагируй на здоровье
Аноним 03/02/23 Птн 19:33:33 #103 №2598269 
Аноны хэлпуйте, спрашивали на собесе про план запросов, а я про него впервые услышал вообще, там сложно разобраться? Что вообще вкатышу там знать надо?
Аноним 03/02/23 Птн 20:02:48 #104 №2598288 
>>2598269
чё за план запросов?
мимо 2 года опыта
Аноним 03/02/23 Птн 20:09:01 #105 №2598297 
>>2598288
ну типо я щас читаю, там можно в постгресе эксплеин нажать и тебе напишет, как запрос будет происходить подробно, типо это полезно для анализа, наверное. вроде этот план можно даже в каких-то субд менять, но как я понял в их число постгрес не входит

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

алсо понял, что вообще пропустил тему с индексами в бд, надеюсь там тоже немного
Аноним 03/02/23 Птн 20:16:21 #106 №2598311 
>>2598288
Вкатуны 2021: итоги
Аноним 03/02/23 Птн 20:40:39 #107 №2598331 
>>2598199
я сейчас задумался: а надо ли вообще писать микросервис в качестве пет проекта, чтобы взяли джуном??? что-то я вообще не хочу с ними на своем этапе сталкиваться... а писать "микросервис", у которого 1 rest api лежит прослойкой между клиентом и базой данных, как-то стыдно...
Аноним 03/02/23 Птн 20:45:59 #108 №2598343 
>>2598269
Вот забыл разраб создать индекс на нужные столбцы, пишет запрос, понимает, что тот работает медленно, смотрит план запроса и видит "full scan" на каких-то атрибутах из where. Создаёт индексы на эти столбцы, в плане уже "index range scan", работает намного быстрее, заебись, не надо обходить всю таблицу целиком. Это только в хеллоуворлдах создание индексов тривиально, но не в легаси говне с тысячей таблиц, в некоторых из которых по 50 столбцов. Да и индексы не бесплатны.
Аноним 03/02/23 Птн 20:58:39 #109 №2598352 
image.png
Есть кучка soap ендпоинтов, для каждого эндпоинта сделал по своему конфигу в котором свои маршалы и анмаршелы и прочее. Всё работает, но меня смущает что у меня генерится дохуя этих фабрик и ещё какой-то пароль кидает в логи.
Это нормальный подход или нужно на похуях всё в одну папку закинуть и чтобы одна фабрика разбиралась со всем?
Аноним 03/02/23 Птн 21:05:49 #110 №2598357 
https://habr.com/ru/post/682720/
>Минутка рекламы закончена. В этот момент вы должны понять, что Docker — это хорошо, а если не поняли — закрыть статью, отформатировать свой жесткий диск и пойти мести крыши.

имагинирую ебало этого агрессивного чсвшного прыщавого додика, писавшего в этот момент эту хуету
Аноним 03/02/23 Птн 21:14:36 #111 №2598365 
>>2598357
Ебать тебя порвало от безобидного рофла. Тебе больше нравятся душные сухие мануалы?
Аноним 03/02/23 Птн 21:21:28 #112 №2598369 
>>2598352
Ты точно уверен, что тебе в 2023 году нужно изучать SOAP?
Аноним 03/02/23 Птн 21:29:06 #113 №2598376 
>>2598369
собеседовался 2 месяца назад на проект с соапами. вопросы?

хотя справедливости ради меня там про соап даже не спросили
Аноним 03/02/23 Птн 21:29:25 #114 №2598377 
>>2597948
А ты уверен что правильно понял смысл этой цитаты и правильно ее передал на собесе?

В цитате сказано, что локальные референсы являются источниками сборки мусора. Тот факт что они являются источниками, еще не означает то, что сборщик мусора их собирает
Аноним 03/02/23 Птн 21:37:43 #115 №2598389 
>>2598365
Рофл в том, что эта омежка агрессивная даже сама не поняла, как начала брызгать слюной. Даже, если не слюной, небольшой мондраж и постукивание зубами точно были. Почитай статью, там где он специально рофлит, сразу заметно по хуевому пикабушному чувству юмора. Если человек :) использует, это уже звоночек...
Аноним 03/02/23 Птн 21:38:24 #116 №2598390 
>>2598369
У меня были пару собесов до этого, везде спрашивали с чем работал, говорил с рестом всегда, когда молчал про соап говорили плоха.
А вообще ща такие клиенты, ты вот обмажся рестами, но когда тебе 10 страховых компаний кидают только wsdl и xsd чтобы ты соап запросы им делал, то хуй им чё скажешь
Аноним 03/02/23 Птн 21:40:09 #117 №2598393 
>>2598389

Щас бы разбирать повадки хабралеммингов. Никогда такого не было и вот опять.
Аноним 03/02/23 Птн 21:41:00 #118 №2598395 
Сервлеты можно разрисовывать swing'om, а javaFx'om можно ?
Хочу перейти на фикус.
Аноним 03/02/23 Птн 21:46:05 #119 №2598400 
>>2598376
На "проекте с соапами" есть давно устоявшийся подход, где никто не задаётся вопросами о фабриках и нормальных подходах, потому что конфиги написали динозавры 15 лет назад, а остальные просто делают всё по аналогии до тех пор, пока изживший себя соап окончательно не выпилят из проекта.
>>2598390
Вызывать готовые соап-сервисы легко, там не нужно знать, как писать их самому.
Аноним 03/02/23 Птн 21:51:04 #120 №2598406 
>>2598395
Что ты там разрисовывать собрался? Сервлеты - это тупо спецификация для реализации HTTP. Клиент пиши хоть на WinAPI, сервлетам похуй.
Аноним 03/02/23 Птн 21:58:03 #121 №2598412 
>>2598406
Ой, это апплеты разрисовывают...
Аноним 03/02/23 Птн 22:14:57 #122 №2598428 
>>2598412
Апплеты депрекейтнуты сотню лет назад. Большой удачей будет если ты вообще хоть чето на них запустишь.
Аноним 03/02/23 Птн 22:27:55 #123 №2598437 
>>2598412
Можно через JFXPanel, который запускает JavaFX поверх свинга. Гугл говорит, что с апплетами будет работать.
Аноним 03/02/23 Птн 22:30:13 #124 №2598442 
Подскажите пожалуйста, в чем разница между Dependency Injection и Inversion Of Control ?
Аноним 03/02/23 Птн 22:51:42 #125 №2598456 
>>2598442
На Википедии всё написано.
IoC - это подход большинства фреймворков, когда в начале развешиваешь коллбеки и другие компоненты и дальше вызываешь main loop, который начинает обрабатывать события и сам вызывает методы твоих компонентов.
DI - разновидность IoC, где компоненты указывают, какие ещё компоненты им нужны для работы, а фреймворк их ищет и передаёт компонентам так, чтобы компоненту не нужно было самому создавать и инициализировать другие компоненты и можно было сразу писать логику.
Аноним 03/02/23 Птн 23:03:04 #126 №2598464 
Алишев говорит что IoC это когда мы используем интерфейс, который создает зависимости !
Аноним 03/02/23 Птн 23:04:59 #127 №2598465 
>>2598464
Чё за Алиешев? Ещё один инфоцыган?
Аноним 03/02/23 Птн 23:16:17 #128 №2598471 
>>2598464
Скорее всего он говорит что-то другое. Кидай референс где он такое ляпнул. Интерфейс не может ничего создавать.
Аноним 03/02/23 Птн 23:22:11 #129 №2598476 
>>2598471
А как же статические методы?
Аноним 03/02/23 Птн 23:31:17 #130 №2598480 
>>2598476
Интерфейс их не создает, он их декларирует. Это другое
Аноним 04/02/23 Суб 02:11:13 #131 №2598504 
>>2596713 (OP)
увидел 3-й пик, обосрался. Подумал с моего компа скрин. Что скажете об этом курсе?
Аноним 04/02/23 Суб 02:25:09 #132 №2598507 
>>2598504
Очень поверхностно. Ддя вкатуна пойдет, для джуна+ уже недостаточно.
Аноним 04/02/23 Суб 08:16:55 #133 №2598572 
Подскажите пожалуйста. Есть приложение на javafx. Его возможно запаковать таким образом, чтобы был один файл, который бы содержал в себе уже все необходимое для работы (без установки)? Про то как запустить на разных ОС (с установкой) я так понимаю тут написано https://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm
Возможно ли запаковать jar в apk для установки и запуска на android?
Аноним 04/02/23 Суб 10:39:52 #134 №2598627 
Как в новом уи от идеи установить даркулу? Стандартный цвет слишком тёмный, неудобно.
Аноним 04/02/23 Суб 11:58:32 #135 №2598661 
>>2598627
В том же меню, где и раньше.
Новый юай полное говно, имхо
Аноним 04/02/23 Суб 12:07:23 #136 №2598666 
>>2598572
Можно запаковать в один жарник. Дальше, если нужен exe, ебаться в launch4j.
Аноним 04/02/23 Суб 12:15:02 #137 №2598669 
>>2598471
Ну типа, класс Б не должен быть зависим от класса А. Они оба должны быть зависимы от интерфейса. Во.
Аноним 04/02/23 Суб 13:05:32 #138 №2598726 
>>2598661
А мне, в принципе, нравится. Сначала было непривычно, а потом привык.
Аноним 04/02/23 Суб 13:07:55 #139 №2598727 
>>2598726
говно жрать тоже нравится?
Аноним 04/02/23 Суб 13:09:28 #140 №2598731 
>>2598727
В новой идее можно билдить, не открывая меню мавена справа.
Аноним 04/02/23 Суб 13:10:48 #141 №2598733 
>>2598731
КАК???
Аноним 04/02/23 Суб 13:11:33 #142 №2598734 
>>2598733
В верхней панели синяя плашка с кнопками.
Аноним 04/02/23 Суб 13:11:53 #143 №2598736 
>>2598734
ПОКАЖИ
Аноним 04/02/23 Суб 13:12:28 #144 №2598738 
>>2598731
Всю жизнь билжу через идеевский терминал, мавенским меню не пользуюсь. В чем не прав?
Аноним 04/02/23 Суб 13:21:24 #145 №2598744 
.png
>>2598731
Никогда этим неудобным говном не пользовался, всегда собирал через конфигурации.
Аноним 04/02/23 Суб 13:23:11 #146 №2598747 
>>2598744
>>2598738
>>2598736
Сука, так оно и раньше было! Впрочем, не отменяет то, что нажать на большую кнопку удобнее, да и на дурак хд мониторе места не занимает лишнего меню с мавеном.
Аноним 04/02/23 Суб 13:28:55 #147 №2598755 
До сих пор сижу на идее 2019 года, обновлять не планирую.
Аноним 04/02/23 Суб 14:38:22 #148 №2598828 
>>2598755
И на 8 джаве в проде. Все знают таких пердунов.
Спасибо, что не на 7.
Аноним 04/02/23 Суб 15:47:39 #149 №2598893 
>>2598755
Сижу на эклипсе и похуй на зумеров
Аноним 04/02/23 Суб 16:16:33 #150 №2598932 
>>2598828
Сижу на идее 2021, обновил бы, но я в РФ, а жиды - нет. В старой идее ждк 17+ запрещается запускать что ли?
Аноним 04/02/23 Суб 16:40:15 #151 №2598988 
изображение.png
кто-нибудь использовал seata для реализации саги в микросервисах? как оно? про нее инфы нет почти, никто не обсуждает, статьями с ней не срут. неужели никто ее не использует? есть ли какие-то более известные аналоги? и что делать, когда видишь пикрил?
Аноним 04/02/23 Суб 16:56:21 #152 №2599028 
>>2598988
Впервые слышу.
Аноним 04/02/23 Суб 16:58:51 #153 №2599032 
>>2598988
Сдаётся мне, все пишут распределённые транзакции вручную.
Аноним 04/02/23 Суб 17:02:36 #154 №2599038 
>>2598932
А в чем проблема?
Аноним 04/02/23 Суб 17:04:48 #155 №2599041 
>>2599038
Вангую, что в корпоративном сервере лицензий.
Аноним 04/02/23 Суб 17:14:37 #156 №2599050 
image.png
Аноним 04/02/23 Суб 17:15:00 #157 №2599054 
>>2599032
вот только примеров почему-то нигде нет. зато 1001 статья создания "микросервиса" с одной апишкой и одной бд. даже если учесть, что распределенные транзакции это анти-паттерн, то подобного рода статьи все равно не раскрывают сути микросервисов. алсо, в реальности я уверен распределенные транзакции есть, без них почти невозможно, или это уже не микросервис, а распределенный монолит с shared базой данных.
Аноним 04/02/23 Суб 17:16:30 #158 №2599055 
lic.JPG
>>2599038
>>А в чем проблема?
Аноним 04/02/23 Суб 17:17:03 #159 №2599056 
>>2599055
А кто мешает на триалках сидеть?
Аноним 04/02/23 Суб 20:12:37 #160 №2599221 
>>2599056
Зачем ебаться с триалкой, если можно просто не обновляться?
Что там такого ценного завезли за пару лет?
Аноним 04/02/23 Суб 21:12:12 #161 №2599261 
>>2598988

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

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

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

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

Для начала - чекнуть что конкретно там за "уязвимость", потому что эти механизмы частенько фолс-позитивят. Ну а потом, ждать апдейтов. Или забить проконсультироваться с СБ своей шараги.
Аноним 04/02/23 Суб 21:15:43 #162 №2599264 
>>2599261
я чот не понял про эту сагу. Это типа надо делать ручку для "отката транзакции" в виде новой транзакции? Сохранил заказ, потом пришла команда отмены, и в новой транзакции удаляешь этот заказ. Так чтоли?
Аноним 04/02/23 Суб 21:18:17 #163 №2599269 
>>2599221
Новую картинку в прямоугольничек загрузки. И ещё новое уи.
Аноним 04/02/23 Суб 21:27:48 #164 №2599279 
>>2599264
>Это типа надо делать...

Типа да. Но это ничего не меняет, причем неважно - делаешь ты это тулом или руками. Такие вещи - не мейнстрим. Их делают от безнадеги в узком спектре задач, и они всегда приносят боль. Здесь нет ничего элегантного, что можно было бы подсветить в статьях и словить хайп. Здесь нет хороших практик, которые "каждый должен знать". Это - просто грязная жопа, следствие чужих проебов, технического дефолта. У распределенных транзакций не может быть фанатов.
Аноним 04/02/23 Суб 21:31:28 #165 №2599283 
>>2599279
ну так это суть хваленых микросервисов. Если нужна транзакционность то нужен монолит
Аноним 04/02/23 Суб 21:40:49 #166 №2599293 
>>2599283
Нужно просто резать на сервисы так, чтобы транзакции нужны были только для сущностей внутри сервиса.
Аноним 04/02/23 Суб 21:44:52 #167 №2599296 
>>2599283
Нет. Это ни в коем случае не суть, не цель и не фишка хваленых микросервисов. Это как раз темная сторона микросервисной архитектуры. Как все в этом проклятом мире айти - микросервисы что-то упрощают, усложняя что-то другое.

Суть микросервисов в том, что ты делишь свою единую монолитную модель на такие контексты, в которых тебе нет нужды обеспечивать сиюминутную консистентность (и как следствие, нет нужды в распределенных транзакциях между этими двумя кусками). Данные в этих двух разделенных моделях-контекстах могут некоторое время пребывать в рассинхроне, но при этом быть eventually consistent за счет более мягких механизмов синхронизации вроде event sourcing'а. Иногда бывает так, что мягких механизмов не хватает, тогда (и только тогда) приходится городить саги, а иногда даже саг не хватает, и тогда городят, прости господи, двухфазный коммит. Но саги и расщепление транзакций - нихера не самоцель деления на микросервисы.
Аноним 04/02/23 Суб 21:46:26 #168 №2599297 
>>2599283

Вот этот чел >>2599293 шарит
Аноним 04/02/23 Суб 21:49:11 #169 №2599299 
>>2599293
клиент создает заказ, платит деньги и получает товар

Нужно ли делить на микросервисы "заказы", "платежи" и "склад"? Если да то как без транзакций?
Аноним 04/02/23 Суб 21:57:06 #170 №2599304 
>>2599299
Платежи с заказами в одном сервисе. На сервис склада инфа идет не транзакционно - сообщением из кафки после транзакции на изменение заказа и платежа.
Аноним 04/02/23 Суб 22:03:13 #171 №2599311 
>>2599304
хм. Т.е. делить на микросервисы надо так, чтобы транзакционность была только внутри сервиса?
Аноним 04/02/23 Суб 22:08:59 #172 №2599314 
>>2599293
Чел, вот ты то мне и нужен. Чекни тут >>2598704 (OP) 1ый и 2 пик, можешь не читать пасту. Как это можно разбить без зависимостей? Я уже третий день ебу себе голову и мне буквально хуево от этого всего. Я действительно уже готов писать монолит (хз вообще с чего я решил, что написать микросервис это престижней, чем монолит в качестве пета...). Или написать микросервис, но условиться так: если админ захочет добавить новый фильм в базу через клиент, ему это нужно будет сделать в несколько этапов, сначала добавить в movie, затем только после успешного добавления вручную так же добавлять постер, скриншоты и трейлер. С удалением из бд сложней, тут таблицы не связаны локально, каскадирования нет. Потому решение такое же тупое: сначала медиа всю удалить и только после успешного удаления браться удалять сам фильм. Но тут проблема в том, что у сервиса с юзерами есть тоже зависимость с фильмами. Тогда придется вторым этапом не фильм удалять, а все зависимости у юзеров, и третьим этапом сам фильм. Но в реальности такая ситуация возможна? Т.е. ты условно админ бд с фильмами, нахуя тебе ее делать меньше? (разве что пыпа запретил фильмнейм, поэтому нада удолить)
Аноним 04/02/23 Суб 22:10:05 #173 №2599317 
>>2599299
>клиент создает заказ, платит деньги и получает товар

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

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

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

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

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

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

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

Детали могут отличаться в зависимости от конкретных требований, но суть одна.
Аноним 04/02/23 Суб 22:15:55 #174 №2599322 
>>2599314
Чел, я тебе ответил банальную вещь из первого абзаца любой статьи про микросервисам.
А читать конкретные таблицы и схему конкретных сервисов и переразбивать их это уже работа. А у меня выходной и я на самом деле таким никогда не занимался.
Аноним 04/02/23 Суб 22:20:04 #175 №2599325 
>>2599322
Мне анон в прошлом треде отвечал, но я тогда не был еще готов анализировать это все. Да и бд не было как таковой. Он мне про кафку тогда говорил и эвент сурсинги, но для меня это сложно пездец еще... Блин, тот анон тоже толковый был, но он потерялся походу...
Аноним 04/02/23 Суб 22:29:17 #176 №2599337 
>>2599317
То есть на примере эти эвенты несколько сервисов и пишут и читают в один и тот же топик? В эвенте статус заказа айди заказа, сумма платежа, айди товара на складе. В складе и в платежах при формировании заказа формируется запись в таблице заказов, где есть айдишник и нужная сервису-консьюмеру информация. И когда они видят статус, который они не только сохраняют, но и обрабатывают, то они делают обработку и кидают сообщение с измененным статусом в тот же топик.
Примерно так?
Аноним 04/02/23 Суб 22:34:47 #177 №2599344 
>>2599314
Мне лень читать твои простыни, но, похоже, тебе нужен микросервис-оркестратор, который будет вместо твоего web client. Там сосредоточена логика работы с многоэтапными процессами, по порядку отправляются запросы в нужные микросервисы, ответы складываются в единый результат и отправляются пользователю. При оркестрации микросервисы обычно не взаимодействуют друг с другом напрямую, всё идёт через оркестратор. Остаётся решить, как сделать так, чтобы оркестратор не превратился в очередной монолит.

мимо
Аноним 04/02/23 Суб 22:43:53 #178 №2599358 
>>2599344
В этом и суть, хочется без этих распределенных транзакций и их разновидностей. Без саг, оркестров, и хореографов. Я пытался найти хоть какие-то примеры кода в купе со спрингом, как это правильно и лучше сделать. Но ничего не нашел абсолютно. Пытался понять чем тут может помочь кафка, но не осилил. Базовую идею вроде понял, но потом начинается какой-то пиздец, суть теряется, и уже даже не уверен способно мне это как-то помочь в моем случае или нет. Если решений в принципе простых нет для такого рода дел, то я походу скорее всего плюну и напишу монолит, либо сделаю менеджмент фильмами, как писал выше - в несколько этапов. Я еще думал, может просто бд хуево как-то разбил, но иначе там никак, без зависмостей не обойтись все равно.
Аноним 04/02/23 Суб 22:52:17 #179 №2599386 
>>2599337
Топология эвентов - отдельная большая тема.

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

2. В сообщении - только та инфа, которая нужна получателю (получателям). Если "заказам" от "склада" нужно только подтверждение резервации, в сообщении от "склада" будут айдишник заказа и тип "резервация прошла успешно/резервация отклонена".
Аноним 04/02/23 Суб 23:01:12 #180 №2599394 
>>2599386
Ну я просто с раббитом не работал, только с кафкой.
Там вроде вместо очереди на каждого консумера принято делать один жирный топик на весь эвент, с лишними сообщениями, просто каждый тип эвентов идет в отдельную партицию, а потом консумер читает только нужную партицию.

Сука, когда нибудь я дочитаю кабанчика и перейду к книжке по микросервисам, по эвент-дривен девеломпенту и кишкам постгри.
Аноним 04/02/23 Суб 23:01:17 #181 №2599395 
Что джуну могут дать написать в первый день на работе? Всегда интересно было... Вот я прихожу - чел, который только крудошлепить мог простые запросы. Что мне делать? Я открываю проект, и ахуеваю. Неиронично, даже за неделю, я вряд ли смогу понять там хоть что-то, если буду постоянно просто смотреть код.
Аноним 04/02/23 Суб 23:01:22 #182 №2599396 
>>2599358
Опиши словами, какие у тебя пользовательские сценарии. Не картинками со схемой БД как в ОП-посте, без технических и микросервисных терминов. Словами кабана-заказчика, который в душе не ебет за микросервисы и за джаву.

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


Мимо эвент-сорсинг-чел с прошлого треда, никуда не терялся.
Аноним 04/02/23 Суб 23:03:42 #183 №2599399 
>>2599394
>Там вроде вместо очереди на каждого консумера принято делать один жирный топик на весь эвент, с лишними сообщениями, просто каждый тип эвентов идет в отдельную партицию, а потом консумер читает только нужную партицию.

Ну ок, вроде звучит норм, попробуй так.
Аноним 04/02/23 Суб 23:05:02 #184 №2599401 
>>2599358
Никак ты это без саг не сделаешь. Все используют саги. Потому и примеров нет, что без них никак.
Монолит писать все умеют, там же ничего сложного. Продолжай ебаться с микросервисами, изучишь много того, что пригодится потом.
И нет никаких "сегодняшних реалий", монолиты никуда не денутся, их так и будут писать, потому что микросервисы нужны далеко не всем. Нет такого, что "монолиты только в легаси", сейчас пишут и будут писать новые монолиты.
Аноним 04/02/23 Суб 23:11:47 #185 №2599410 
>>2599395
В первый вообще какую-нибудь дрисню. Конфиги поправить например в 10 сервисах. Тесты написать к уже готовой апишке.
Могут вообще тестовую задачу дать.
Ну а потом через пару неделек поле добавить в сущность. Миграциями в бд, потом в модельку, в репошку, если запрос не генерится, в дтошки.
Добавить фильтры или сортировку в готовый эндпоит.
Потом через месяца два добить новый эндпоит.

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

Я это все разделял логически на 3 базы данных:
1 - фильмы (жанр, заголовок, актеры, рейтинг...)
2 - пользователи (логин, пасс, емеил, фэворит листы фильмов, их оценки фильмам, их обзоры на фильмы...)
3 - статика с медиа данными (скрины, трейлеры, аватары, постеры)
Аноним 04/02/23 Суб 23:22:02 #187 №2599414 
>>2598377
Даже не представляю, как можно будучи русскоговорящим это по-другому понять.
Аноним 04/02/23 Суб 23:22:18 #188 №2599415 
>>2599410
А зачем тестовую давать, если тебя уже приняли? Или ора сложней будет? Что бывает, если ты за весь день никакого результата не добился? Например
>Конфиги поправить например в 10 сервисах.
Вот как ты это себе представляешь? Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить? Порт что ли? Гыгыгы
Я им скорее вообще весь конфиг наебну и они не смогут собрать проект
Аноним 04/02/23 Суб 23:25:51 #189 №2599416 
>>2599395
В первый день? Ничего, я всю неделю ждал, когда исполнят все заявки, принесут пекарню, выдадут все права и доступы, установятся все программы (которые тоже через заявки, самому ставить нельзя), потом три дня ебался с развёртыванием проекта, который поднять - целая наука.
Потом тимлид научил меня дебажить, я этим не пользовался в пет-проектах и всё отлаживал через System.out.println.
А дальше всё как у этого анона >>2599410 , исправление опечаток в текстах ошибок, написание тестов, добавление новых полей в отчёты. Где-то через месяц начали давать более крупные задачи, типа реализовать CRUD-справочник.

Но это у нас большая команда из 50 разрабов, большое легаси и бюрократия, потому что банк лол
Аноним 04/02/23 Суб 23:28:38 #190 №2599418 
>>2599415
> Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить? Порт что ли?
Так тебе в джире задачу распишут очень подробно, какие строки смотреть, на что заменять. Твой код будут ревьюить, т.к. в основную ветку без аппрува ты не можешь подмержить.
Аноним 04/02/23 Суб 23:31:23 #191 №2599419 
>>2599418
>Так тебе в джире задачу распишут очень подробно
>Твой код будут ревьюить
Ахахаха.
Аноним 04/02/23 Суб 23:32:21 #192 №2599421 
>>2599418
Если они сами знают что, где и как поменять, нахуя мне это давать? Чел, который писал этот туториал, мог уже сам все это исправить. Или это западло? Лол. Ну или это специально так мои навыки проверяют? Но о каких правда навыках в такой ситуации может быть речь я хз... По бумажке любая кухарка может буковки подправить.
Аноним 04/02/23 Суб 23:33:16 #193 №2599422 
>>2599415
Тестовый сервис, чтобы новичок ознакомился с стеком и подходами, кодстайлом, гитфлоу и тп. Даю ему сервис с прода для примера, даю упрощенную задачку для сервиса. Задание на неделю. Раз в день-два подхожу, спрашиваю промежуточные результаты.
>Я пришел, о проекте не знаюнихуя. Что я им там могу даже в теории поправить?
ну примерно. надо во всех сервисах что-то скопипастить. Ну и даешь ему сервис откуда копипастить и сслыку репошки сервисов. Он читает коммит откуда копипастит, и делает 10 копипаст, 10 коммитов и 10 мров.

Давал недавно джуну баг найти поправить. Он не смог сходу разобраться. Пришлось за него разобраться и код ему под диктовку надиктовать.
Аноним 04/02/23 Суб 23:34:24 #194 №2599423 
>>2599419
Ну да, у джунов все таски так проходят. Все понимают, что джуны сами не разберутся и правильно не сделают. Джуна надо обучать, чтобы он начинал приносить пользу проекту, иначе смысл его брать.
Аноним 04/02/23 Суб 23:35:16 #195 №2599424 
>>2599422
Блядь, вы там че совсем ебнутые? На собесе словно в наса ракеты строить ищите кандида. А после рефера код диктуете какой писать.
Аноним 04/02/23 Суб 23:40:00 #196 №2599428 
>>2599421
Чтобы тебя обучить. Общеизвестно, что джуны в самом начале убыточны и приносят мало пользы, потому надо обучать. Дальше так подробно расписывать не будут, потому что ты уже это умеешь. Сеньоры, конечно, всё знают и всё могут сами сделать, но на все задачи у них тупо не хватит времени.
Аноним 04/02/23 Суб 23:41:55 #197 №2599429 
>>2599401
> Никак ты это без саг не сделаешь. Все используют саги. Потому и примеров нет, что без них никак.
Не понял логики. Если это делают все, то почему до сих пор ни одного реального кода в качестве примера? Почему 100500 однотипных говно примеров говно микросервисов с одной бдшкой, где даже намека нет на общение между микросервисами?
Аноним 04/02/23 Суб 23:41:57 #198 №2599430 
>>2599424
Ну так я диктовал, потому что он не понял что делать за 2 дня. Не выгонять же его сразу. Если к концу испытательного не перестанет так сильно тупить, тогда и выгоним.
Ну и я хотел все за него просто написать, сэкономил бы час из трех потраченных на него, но после написания под диктовку он хоть что-то понял.
Ну и собесил его тимлид, а онбордингом занимаюсь я, вчерашний джун.
Аноним 04/02/23 Суб 23:44:57 #199 №2599432 
>>2599412

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

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

>>2599314

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

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

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

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

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

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

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

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

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

Предположим один из таких фоновых запросов сказал - "все, фильма нет". Ну и хуй с ним. Опять же вопрос - такая ли уж большая проблема что айдишник одного из фаворитов пользователя больше не резолвится? Берешь и рисуешь заглушку, что "этого фильма нет", оставляя на этой заглушке кнопку "удалить из фаворитов". Или вообще не показываешь несуществующий фильмв списке, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".
Аноним 04/02/23 Суб 23:51:47 #200 №2599436 
>>2599429
Все так делают в проде. Примеры для новичков пишутся авторами, которые сами недалеко ушли, но очень сильно хотят писать статьи. А опытным разрабам, которые могут дать больше конкретики, не до вкатунских пет-проектов, они на работе все заняты.
Вообще, давно заметил, что нормальных примеров мало по чему угодно, разве что по вебговну с реактами ищется всё.
Аноним 04/02/23 Суб 23:57:26 #201 №2599442 
>>2599436
Почему я примеры, как писать изъебистые запросы на малопопулярной nosql субд могу найти, какую нибудь хуйню по эврике или настройке метрик и трейсов могу найти, а саги эти есть только в теоретических книжках?
Аноним 05/02/23 Вск 00:03:53 #202 №2599448 
>>2599442
Забей, чел тебя троллит. Говорить "все лабают саги в микросервисах", это как сказать "все юзают паттерны в джаве". Ничего не сказать.
Аноним 05/02/23 Вск 00:07:49 #203 №2599450 
>>2599442
Там архитектура, а тут конкретные технологии. По технологиям есть единая документация, где и так всё это описано, а в архитектуре никакой общепринятой документации с описанием единого подхода нет и быть не может. Остаётся задаваться теоретико-философскими изысканиями.
>>2599448
Я потому и говорю, что сказать тут действительно ничего нельзя. Анон задаётся вопросом уровня "как писать на джаве так, чтобы не юзать паттерны". Очевидно же, что никак.
Аноним 05/02/23 Вск 00:21:10 #204 №2599454 
>>2599432
>Или ты как себе в монолите это видел - админ одним запросом всю это пачку добавляет?
Ну, вообще, да. Даже, если не одним, т.е. есть возможность потом добавить картинки и видео, все равно должна быть возможность добавить это все сразу. Но если под капотом это будет N отдельных запросов в разные сервисы, то снова все упирается в распределенные транзакции. Потому что без транзакции у тебя 1 запрос успешно выполниться, а другой нет (или вообще потеряется где-то из-за сбоев в сети), но ответ придет от первого ОК. Ты будешь думать, что все действительно ок, а на деле даже не будешь знать о том, что нихуя не ок, пока сам не решишь проверить.

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

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

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

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

>, а в бэке подписываешься сервисом "пользователи" на события удаления фильмов из сервиса "фильмы".
Опять же, не совсем могу представить это событие. Как вообще из пользователей можно удалить фильм? Т.е. обычный пользователь чекал свой список, увидел что какой-то фильм - больше не фильм, удалил его из своего списка и тем самым сгенерировал запрос на удаление остатков из бд с фильмами?
Аноним 05/02/23 Вск 00:32:51 #205 №2599458 
>>2599450
> Я потому и говорю, что сказать тут действительно ничего нельзя. Анон задаётся вопросом уровня "как писать на джаве так, чтобы не юзать паттерны". Очевидно же, что никак.
Вот только примеры паттернов есть и их много разных. А примеров этого говна даже в самом простом виде нет нигде. Если я раньше любил писать говнокод и изобретать велосипед, то сейчас я этого не просто не люблю, но и боюсь. Боюсь утонуть в собственном говне, потерять тонны времени на решение проблемы в проблеме в проблеме в проблеме, в итоге придти на двач (единственное место, где мне могут помочь), но вместо помощи меня только еще сверху калом закидают и потроллят. Я вообще никого не обвиняю из анонов итт, если что. Исключительно констатирую факт, что писать велосипеды, особенно, механизм которых достаточно сложен и запутан - боюсь.
Аноним 05/02/23 Вск 00:51:44 #206 №2599462 
>>2599458
Даже с паттернами не всё так просто. Часть паттернов легко понять и объяснить с примером в 30 строчек. А есть паттерны, которые вызывают скрытые проблемы, и о них надо знать, далеко не в каждой статье про паттерны они вообще упоминаются, не говоря уж о подробном их рассмотрении. Есть и Егор Бугаенко с элегантными объектами и своим собственным видением паттернов. Наконец, есть такие штуки, как MVC и REST, их в каком-то смысле тоже можно отнести к паттернам. MVC далеко не все понимают и пишут SQL-запросы в контроллерах, ещё многие задаются вопросом, как соответствующие классы правильно располагать в проекте, и там нет универсального ответа, кто-то вспоминает про DDD. И REST, который вызывает ещё больше вопросов, никто не знает, как его правильно готовить, в бугурт-треде уже третий год не устают про это сраться.
А микросервисы не изучить так же просто, как обычные технологии, где загуглил готовый пример и всё понял. Надо погружаться, понимать, что делаешь и зачем, много думать, над какими-то вопросами думать неделями, много раз психануть, всё удалить и начать писать заново, читать книги, очень много экспериментировать. Примеры, впрочем, найти можно на каком-нибудь гитхабе, но и там большинство проектов будет единственным микросервисом с одной БД.
Аноним 05/02/23 Вск 00:52:13 #207 №2599464 
>>2599454
>все равно должна быть возможность добавить это все сразу.

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

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

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

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

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

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

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

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

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

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

Консистентность в реальных проектах - не аксиома, а такой же трейдофф как и все остальное.
Аноним 05/02/23 Вск 01:13:52 #208 №2599467 
>>2599458
>>2599462

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

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

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

Тогда по хорошему, надо действительно какой-то сервис, который будет следить за порядком в бд... Но это все равно какое-то кривоватое решение что ли... Хз даже, честно. Я если что с тобой не спорю, просто пытаюсь понять почему все то, о чем ты говоришь - норма в продакшене. Мне вообще даже кажется, если бы у меня спрашивали на собесе "почему ты решил оставлять этот мусор в бд в своем пет проекте?", а я отвечаю "гуглу можно, а мне что нельзя что ли?", меня скорее всего бы уже захотели слить побыстрей.
Аноним 05/02/23 Вск 01:18:09 #210 №2599471 
>>2599468
Ну мне к вышесказанному больше добавить нечего. Насколько я тебя понял, у тебя скорее остался страх перед интервьюерами быть неспособным пояснить за свое решение, нежели вопросы к самим микросервисам. Тогда просто не свети пет в резюме. Джунов по архитектуре обычно не пытают.
Аноним 05/02/23 Вск 01:30:22 #211 №2599474 
>>2599468
Ну и добавлю еще

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

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

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

Но из-за анона, написавшего про тупящего джуна, который таску под диктовку делал, у меня возник вопрос: где проходит та грань, перейдя которую, тебя попрут с испытательного? Типо, что нужно сделать, чтобы тебе сказали пиздовать на улицу, мб два раза так протупить как описывал анон выше? Или нужно все три месяца косячить, самому вообще ничего не написав? Вообще часто бывают такие прецеденты, что джуна шлют к херам в первые недели-месяцы? Может у кого-то тоже есть какие-то подобные случаи, которые вы лично наблюдали или слышали от кого-то, было б интересно почитать, чтоб избежать этого, если когда все-таки получиться дорваться до заветной работки
Аноним 05/02/23 Вск 03:06:36 #216 №2599495 
>>2599493
как обычно зависит от компании
у нас вот и круглых идиотов держат до последнего
Аноним 05/02/23 Вск 03:08:13 #217 №2599496 
>>2598377
Я даже так и сказал, что сначала определяются руты таким вот образом, на что последовал данный панч, и после этого перехотелось уже что-то доказывать
Аноним 05/02/23 Вск 03:36:12 #218 №2599498 
Какое же охуенное новое уи от жидов!
Аноним 05/02/23 Вск 03:52:41 #219 №2599504 
>>2599493
Тебе это вряд ли грозит.
С таким джунами очень сложно столкнуться лично, почти все отсеиваются на этапе собеседования. Какой-то процент тех, кто целенаправленно учится наёбывать собеседующего, всё же может попасть на работу, но и они обычно сами съёбывают через пару месяцев.
Аноним 05/02/23 Вск 04:03:54 #220 №2599507 
Как в webflux подключится к докер контейнеру через имя контейнера?
Прописываю нормально, как в каждом туториале говорится
WebClient webClient = WebClient.create("http://test-service:8081/test);
В докере в логах смотрю получаю 500 потому что к имени контенера откуда-то приставился айпи адресс этого контейнера т.е вот так
failed: Connection refused: test-service/196.25.0.3:8081
Это webflux как-то подставляет это? Откуда это берётся?
Аноним 05/02/23 Вск 04:12:20 #221 №2599510 
>>2599507
Там нетворки нужно еще чтоб согласованы были, возможно стоит копнуть в этом направлении, хотя я не уверен, просто что-то подобное было, когда я начал поднимать все не через композ, а по отдельности и тоже не находило нихуя по имени сервиса

docker network ls
Аноним 05/02/23 Вск 04:18:01 #222 №2599511 
image.png
>>2599510
Да я и композ с туториалов взял. Даже chatgpt попросил написать мне, думал может как всегда в туториалах говно не рабочее, да нет, выдал тоже самое, только версию бампнул с 2 до 3
Аноним 05/02/23 Вск 04:28:26 #223 №2599517 
Java Spring или C# .Net?
Где перспективы и зарплаты выше?

Вкатывался в Android-разработку - а там работы сейчас нет. В фронтенде тоже.
Куда идти?
Аноним 05/02/23 Вск 04:35:58 #224 №2599519 
>>2599517
Вкатывайся в C# .NET.
Аноним 05/02/23 Вск 04:37:14 #225 №2599520 
>>2599519
Почему? Там перспективы лучше?
Аноним 05/02/23 Вск 04:42:52 #226 №2599522 
>>2599520
Очевидно, да.
Аноним 05/02/23 Вск 04:44:59 #227 №2599524 
>>2599520
Научишься говорить на петушином
Аноним 05/02/23 Вск 04:54:07 #228 №2599525 
>>2599517
Курьером. Айти все, кончилось.
Аноним 05/02/23 Вск 05:17:48 #229 №2599527 
>>2599507
>Откуда это берётся?

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

В случае с докером один контейнер доступен из другого по имени, если оба они сидят в одной докеровой сети.
Аноним 05/02/23 Вск 05:19:52 #230 №2599528 
>>2599511
А ты уверен что test-service хостит именно на порту 8081, а не на 8091?
Аноним 05/02/23 Вск 05:21:15 #231 №2599529 
>>2599517
На фронт.

Поумнее в джава треде ничего не мог спросить?
Аноним 05/02/23 Вск 05:58:00 #232 №2599531 
>>2599517
в джава не иди, я иду
Аноним 05/02/23 Вск 08:07:12 #233 №2599548 
>>2599484
Я тоже об этом думал, что лучше уделить внимание больше какому-нибудь спрингу или хибернейту. Под http ты что подразумеваешь? Как работает протокол? Алсо, теорию tcp/udp надо хорошо знать? Просто в вакансиях такого даже не встречал, хотя, это вроде как одна из баз. Или та же модель osi? Раньше ее часто встреаал упоминание, сейчас уже тоже не вижу.
Аноним 05/02/23 Вск 09:11:04 #234 №2599578 
http://spring-projects.ru/understanding/hateoas/
Что это дает вообще? Не придется на клиенте формировать url? Или что?
Аноним 05/02/23 Вск 09:33:03 #235 №2599595 
>>2596713 (OP)
Попал на проект, где интегрируются с огромной легаси-хуиткой, которая стартует полчаса и жрет столько ресурсов, что рабочий мак начинает задыхаться. Раньше просто мокал зависимости через ваейрмок или мокито, но тут развесистая логика на стороне той хуитки и мокать замучаешься, т.к. дергая одну ручку она создает кучу сущностей на своей стороне. Как лучше всего организовать процесс тестирования? Охуел, что в команде есть выделенный микрочелик, который ручками тыкает запросы на отдельном тестовом контуре. Разработка фичи может растягиваться на месяцы...
Аноним 05/02/23 Вск 09:37:54 #236 №2599601 
>>2599595
пусть эта легаси хуитка крутится на тестовом серваке
Аноним 05/02/23 Вск 09:40:30 #237 №2599605 
>>2599601
Хотелось бы поиметь автотесты, которые бы гонялись на CI, но если хуитка будет крутиться на тестовом серваке и туда будут ломиться запросы при прогоне тестов, то все похерится, когда будет выполняться много тестов с разных пулл-реквестов. Хз как стейт чистить после каждого теста...
Аноним 05/02/23 Вск 09:47:09 #238 №2599616 
у вас бывает такое, что сидя кодить не хочется прям вообще, но в постельке полежать - покодить было бы норм, но ноута нет? что делаете в такой ситуации?
Аноним 05/02/23 Вск 09:51:18 #239 №2599619 
>>2599616
Конечно бывает. Потом я вспоминаю, что мне нужны деньги, чтобы оплатить аренду квартиры, ипотеку, что-то купить пожрать, стоматолога оплатить и еще отложить на черный день и всю эту дурь как ветром сдувает.
Аноним 05/02/23 Вск 09:53:17 #240 №2599621 
>>2599619
так купи себе постельку и ноут. работа должна приносить удовольствие
Аноним 05/02/23 Вск 09:58:25 #241 №2599625 
изображение.png
давно пора внедрить в офисы вместо столов и табуреток это. тупые кабаны не понимают что вкладываются в эффективность в перспективе.
Аноним 05/02/23 Вск 09:59:45 #242 №2599626 
>>2599621
>работа должна приносить удовольствие
Распространенное заблуждение, между прочим. За годы гребли попалась реально классная команда и интересный проект. В основном гребешь на унылых проектах, которые тебе не интересны, а работа вызывает отвращение. Но что поделать - нужно же на что-то жить.
Аноним 05/02/23 Вск 10:02:08 #243 №2599628 
>>2599625
>вкладываются в эффективность в перспективе.
Буквально единицы вкладываются в оснащение офисов и продуктивность разработчиков. Покупают дорогие кресла, мощные ноутбуки/рабочие станции и т.д. Большинство выдает забитые пылью ноутбуки HP/DELL, которым сто лет в обед и которые начинают завывать когда разворачиваешь проект.
Аноним 05/02/23 Вск 10:18:27 #244 №2599638 
>>2599628
>Буквально единицы вкладываются в оснащение офисов и продуктивность разработчиков.
а кровать так никто и не поставил
Аноним 05/02/23 Вск 11:47:52 #245 №2599688 
Объясните, плиз, что именно делает JPA/Hibernate, за что отвечает? Я пишу код для работы с бд, но хер знает что есть хибер, а что нет? @Entitiy это хибернет? Когда пишет какой-нибудь кастомный метод в имплементацию CrudRepository вроде findByField, это хибернейт? Что именно он делает и где его границы.
Аноним 05/02/23 Вск 12:07:01 #246 №2599702 
>>2599625
Ой бля нее. Ты че - школьник? Только оный и уместится в эту детскую стенку блять.

Большущий стол - вот тема. Особенно с подъёмным механизмом. И хорошее большое удобное кресло.
Аноним 05/02/23 Вск 12:13:40 #247 №2599707 
>>2599548
Имею ввиду как spring mvc работает с http запросом. Боди, параметры, хедеры, корсы. Интерсепторы, фильтры, адвайсы. Все на практике потыкать.
Ну и теорию с диспетчер сервлетом.
Нет, tcp/udp знать не надо.
Аноним 05/02/23 Вск 12:26:05 #248 №2599715 
>>2599688
это попытка совместить объекты и реляционные базы, чтобы автоматом гонялось туда обратно. Получилось не очень, но на примитивных операциях данных оно работает
Аноним 05/02/23 Вск 12:55:13 #249 №2599727 
>>2599493
У нас даже конченых дебилов не прут.
Аноним 05/02/23 Вск 13:04:03 #250 №2599736 
>>2599688
Все просто, чекай пакеты. Если пакет начинается с javax.persistence (как у Entity), значит это JPA. Если org.hibernate - значит хибернейт. Ну а если org.springframework.data - значит Spring Data.
Аноним 05/02/23 Вск 13:43:53 #251 №2599805 
Это правда что интервью будет длится 1-2 часа ? 0_0 И будет +- 30 вопросов...
Аноним 05/02/23 Вск 13:48:04 #252 №2599810 
>>2599805
И фистинг будет. Если два кулака не пролазят, то тебе перезвонят.
Аноним 05/02/23 Вск 14:00:54 #253 №2599820 
>>2599810
лол
Аноним 05/02/23 Вск 14:51:35 #254 №2599869 
>>2599805
У дудя всегда такие интервью
Аноним 05/02/23 Вск 14:58:30 #255 №2599878 
>>2599493
>где проходит та грань, перейдя которую, тебя попрут с испытательного?
Это не обязательно испытательный срок и не обязательно джюн. У каждого проекта есть заказчик, сроки и бюджет. Если вы в команде не укладываетесь по срокам, то будь ты хоть мидлом или сенькой - разговор будет один. Сначала тебе прямо говорят, чтобы ты наверстывал темп и быстрее и качественнее делал задачи. Если ты не понимаешь или не вывозишь и из-за тебя команда продалбывает очередной спринт, то тебе просто говорят писать по собственному и все.
Аноним 05/02/23 Вск 15:19:38 #256 №2599899 
Для тестировки в спринге JUnit достаточно будет? Для пета, чтоб на собесах показывать.
Аноним 05/02/23 Вск 15:28:35 #257 №2599910 
>>2599527
Ну так у меня они и сидят на одной докерой сети, нет? spring-cloud-network.
>>2599528
Ну в application.yml он стоит 8091, но ведь сам докер контейнер же хостится на 8081, везде говорится по порту контейнера подключаться.
Это вот я так я думал до того как ты написал, попробовал поставить 8091 и оно теперь мне другим ебёт мозг. Выдаёт 400 Bad Request (а реквест то рабочий, без контенерезации всё норм)
Пиздец я ебал эту ебалу, ща буду по флешке архивы передавать. Спасибо за подсказку, буду разбираться
Аноним 05/02/23 Вск 16:28:23 #258 №2599962 
а как в спринг jpa можно суррогатный ключ описать? везде вижу только составной ключ. мне надо, чтобы в таблице можно было создавать уникальные комбинации по 3 столбцам.

делать из 2 айдишников 1 составной, потом из 1 составного и оставшегося айдишника делать снова составной? мне кажется это хуйня какаято-то...
Аноним 05/02/23 Вск 16:51:39 #259 №2599985 
>>2599805
Меня как то 4 часа собесили. Оправдывали это тем что "ну клево общаемся же, душевно". Что кстати было правда, пообщались хорошо, ненапряжно.
Аноним 05/02/23 Вск 16:54:28 #260 №2599988 
image.png
>>2599899
Я бы ожидал, чтобы джун уже умел в спринг тесты мосkMvc + testcontainers с реляционкой. https://bootify.io/spring-rest/spring-boot-integration-tests-with-testcontainers.html
Аноним 05/02/23 Вск 16:57:50 #261 №2599992 
>>2599910
>Ну так у меня они и сидят на одной докерой сети

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

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

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

Короче, попробуй порт в урле вебфлакса поменять на 8091.
Аноним 05/02/23 Вск 17:02:44 #262 №2599994 
>>2599985
И что, тебя туда взяли ?
Аноним 05/02/23 Вск 17:11:55 #263 №2600004 
>>2599805
У меня собес шёл где-то 1.5 часа, задавали много несложных вопросов по стеку, спрашивали теорию про нормальные формы, вычислительную сложность алгоритмов и подобное. Решал две задачи с алгоритмами. Ещё по приколу спросили, знаю ли я C++, и дальше несколько вопросов про отличие умных указателей от сборки мусора и про отличие шаблонов от дженериков.
Аноним 05/02/23 Вск 17:13:11 #264 №2600006 
>>2599992
Да, попбробовал 8091 и действительно находит, только как написал выше, bad request. Пиздец кароче
Аноним 05/02/23 Вск 17:13:23 #265 №2600007 
пытаюсь руками сделать двухфазный коммит. Выяснил, что нужен датасорс с XA имплементацией. Нагуглилось некий Atomikos. Но не вижу где тут руками ставить PREPARE TRANSACTION
Что за говно
Аноним 05/02/23 Вск 17:27:08 #266 №2600034 
> отличие шаблонов от дженериков
Не понял, каких шаблонов еще? И при чем тут дженерики?
Аноним 05/02/23 Вск 17:31:15 #267 №2600039 
im2tTSTWfV.png
>>2600007
ощущение что я копаюсь в глубинах какого-нибудь древнего сервера приложений. Тут оказывается нет задания урл базы, только название ibm сервера
Аноним 05/02/23 Вск 17:41:43 #268 №2600050 
>>2600034
В C++ есть шаблоны (template), их можно использовать примерно как джавовские дженерики, внешне выглядят похоже, но есть много своих нюансов. Например, они при компиляции копируют шаблонный код, подставляя туда типы, с котороыми это шаблоны использовали, и после компиляции получается несколько копий одних и тех же классов и функций с разными типами, это похоже на макросы. Шаблоны бывают рекурсивными, через них можно реализовать вычисление выражений при компиляции и ещё много чего.
В любом случае, если о C++ ты знаешь только то, что существует такой язык, задаваться этими вопросами не нужно.
Аноним 05/02/23 Вск 17:41:47 #269 №2600051 
изображение.png
как такие таблицы правильно называть?
1. абстрагироваться по смыслу? в таком случае, ее можно было бы назвать movie_person
2. или опираться на техническую составляющую? т.е. если она ссылается внешним ключом на какую-либо таблицу, то указывать ее в названии "movie_person_role" (на пике сейчас этот вариант)
Аноним 05/02/23 Вск 17:51:00 #270 №2600059 
>>2600051
обычно так и называют. Бывает ещё вариант movie_x_person_x_role
Аноним 05/02/23 Вск 17:52:51 #271 №2600064 
>>2600051
Зачем выделять роль в отдельную таблицу от movie_person_role?
Если у одного актера в одном фильме несколько ролей?
Аноним 05/02/23 Вск 17:58:03 #272 №2600077 
>>2600050
Ааа, пон, я просто подумал, что в джаве какие-то шаблоны есть, о которых я не знаю. Эт тебя на джуна по крестам гоняли так?
Аноним 05/02/23 Вск 18:00:34 #273 №2600082 
>>2600064
не понял вопроса. ты имеешь ввиду, чтобы было так?
_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
Аноним 05/02/23 Вск 18:07:07 #274 №2600098 
RXeAOjGAon.png
>>2600039
нашел рабочий пример. Оказывается все это есть искаропки и в jdbc постгрес драйвера
Аноним 05/02/23 Вск 18:16:55 #275 №2600113 
>>2600077
Не сказать, что гоняли, просто по приколу спросили, типа понять, что ещё знаю, кроме джавы. Хз, зачем.
Аноним 05/02/23 Вск 18:17:56 #276 №2600114 
>>2600113
И че ты кроме джавы знаешь?
Аноним 05/02/23 Вск 18:20:45 #277 №2600115 
>>2600114
Да не трясись ты, вкатун, лол.
Аноним 05/02/23 Вск 18:21:37 #278 №2600116 
>>2600114
На уровне, достаточном для работы, знаю только джаву. А так много чего тыкал, и петухон с машобом, и JS с реактами, и шарп, и андроид, даже с хаскеллем когда-то игрался. Времени было очень много.
Аноним 05/02/23 Вск 18:22:25 #279 №2600117 
>>2600116
Как бабу трахать знаешь?
Аноним 05/02/23 Вск 18:25:06 #280 №2600119 
>>2600117
Нет, для работы это не нужно мы вам перезвоним
Аноним 05/02/23 Вск 18:38:24 #281 №2600129 
>>2600119
А кабаныч даст указание трахнуть бабу, что ты будешь делать?
Аноним 05/02/23 Вск 18:43:42 #282 №2600141 
>>2600051
Назови movie_cast. Или movie_crew, если там из ролей не только актеры.
Аноним 05/02/23 Вск 18:46:36 #283 №2600148 
>>2600129
Спрошу у сеньора.
Аноним 05/02/23 Вск 18:53:47 #284 №2600158 
>>2600148
Сеньор скажет ебись с этим сам
Аноним 05/02/23 Вск 18:54:55 #285 №2600160 
>>2600158
засуну хуй с рукой в пизду и начну дрочить
Аноним 05/02/23 Вск 18:58:57 #286 №2600163 
>>2600158
Тогда посмотрю на stackoverflow или баелдунге.
Аноним 05/02/23 Вск 19:06:25 #287 №2600173 
Вообще таска просто "трахнуть бабу" очень плохо расписана - явно не джунская, минимум мидловская.
Аноним 05/02/23 Вск 19:08:09 #288 №2600175 
>>2600173
Нормальная таска. Если джун с такой справится не может - зачем брали, спрашивается?
Аноним 05/02/23 Вск 19:09:27 #289 №2600177 
изображение.png
я же правильно понимаю, что вторая строка должна удалять существующие таблицы и создавать их заново? если я прав, то почему он не удаляет старые таблицы? если не прав, то как это сделать?
Аноним 05/02/23 Вск 19:12:52 #290 №2600183 
>>2600175
Джуну надо расписать каждое движение. Провести доскональное ревью. Если не понимает сразу, выполнить таску вместе с ним.
Аноним 05/02/23 Вск 19:16:57 #291 №2600189 
Нужно ли покупать мак для программирования на джаве?
Аноним 05/02/23 Вск 19:17:50 #292 №2600192 
>>2600189
Да.
Аноним 05/02/23 Вск 19:18:49 #293 №2600194 
>>2600189
Нет, как ты на маке вебсферу запустишь?
Аноним 05/02/23 Вск 19:36:01 #294 №2600220 
>>2600189
да, без него не освоить циклы и написание программы хеллоуворлд
Аноним 05/02/23 Вск 19:39:08 #295 №2600224 
.png
.png
Такой вопрос к джавогосподам.
Почему ваша жава - такое неструктурированное добро? Один проект - не похож на другой. Смотришь в код, а там каждый ТВОРЕЦ, блядь. Один так положит файлики, другой - так. Один так обзывает, другой так.
Я не знаю. Но блин. Я вот, как шарпоняшка, просто горю с того, как среднестатистический проект устроен. Будто разраб на джаве - испытывает некую неудовлетворенность и желание быть таким же крутым как С++'ер, и намеренно код распихивает максимально дурацки.
Но я могу ошибаться. Возможно, в этом есть либо какой-то смысл, либо это какие-то особенности языка. А потому - хотел бы от вас услышать ответа.
Но просто взгляните на этот пиздец в сравнении. Абсолютно же ебануться можно, пока найдешь то что тебе надо.
Аноним 05/02/23 Вск 19:45:41 #296 №2600227 
>>2600224
>когда впервые в жизни увидел проект больше, чем на 6 классов
Аноним 05/02/23 Вск 19:46:38 #297 №2600230 
>>2600224
>и желание быть таким же крутым как С++'ер
Вот это проекции, аж серанул.
Аноним 05/02/23 Вск 19:47:31 #298 №2600233 
>>2600224
Так исторически сложилось, и ничего не сделать. Никому это не нравится, хуй вспомнишь, в какой из сотен пакетов засунули нужный класс, из-за чего всем приходится юзать автоимпорты, в итоге без IDE код писать невозможно.
Аноним 05/02/23 Вск 19:52:28 #299 №2600239 
>>2600233
В том то и прикол, что у нас есть IDE, а не виндовс блокнот для написания кода,
и нам можно куда угодно сувать классы (в теории, на практике - оно непосредственно связано с качество дизайна, ведь расположение классов напрямую берётся из того, как разработчик себе представляет проект, структура пакетов - это что-то того рисунка проекта на бумажке, поэтому и у спринга такое говнорасположение классов, потому что он сам говно и сборник кала от десятка тысяч серунов).

А для посвящения в проект профанов должна быть ВИКИ, не надо заставлять их понимать, как работает проект по сурсам.
Аноним 05/02/23 Вск 19:53:04 #300 №2600241 
>>2600224
>Почему ваша жава - такое неструктурированное добро? Один проект - не похож на другой. Смотришь в код, а там каждый ТВОРЕЦ, блядь. Один так положит файлики, другой - так. Один так обзывает, другой так.
хуйню несешь
дальше не читал твой жир
Аноним 05/02/23 Вск 19:56:55 #301 №2600245 
.png
>>2600227
Я ж не про это. А про какие-нибудь практики, которые должны быть общими для разработчиков внутри экосистемы.
Вот на шарпе - есть гайд от майков, как называть что. В шарпе - есть общие правила по названиям папочек и общей структуре проектов. Ты открываешь один проект - и быстро "просекаешь", как оно работает.
А в джаве - я буквально несколько проектов открывал и часа 4 потратил, чтобы понять где что лежит. Думал, ну, наверное так принято у них. Открываю другой - совсем иначе штуки лежат. Открываю третий - опять.
Еще: один - делает вложенные классы. Другой - не делает. Третий делает иногда. В шарпе, для публичных штук это считается харамом.
>>2600241
Вот я открыл https://github.com/spring-projects/spring-framework. Вот я открыл https://github.com/thingsboard/thingsboard
В каких местах они похожи?
>>2600239
Ну вот я - сижу в деревне на удаленке. Мне прилетает уведомление на телефон, нужно чет быстро поправить. На шарпе я просто вимом открываю папку с проектом, нахожу быстро нужное место, правлю, делаю pr и иду дальше коров доить. Как я блин должен это сделать на джаве?
Аноним 05/02/23 Вск 19:57:58 #302 №2600247 
хватит отвечать этой шарпобляди долбоебы
Аноним 05/02/23 Вск 19:58:46 #303 №2600249 
>>2600245
>Ну вот я - сижу в деревне на удаленке. Мне прилетает уведомление на телефон, нужно чет быстро поправить. На шарпе я просто вимом открываю папку с проектом, нахожу быстро нужное место, правлю, делаю pr и иду дальше коров доить. Как я блин должен это сделать на джаве?
Ну это же совсем жирофрения уже.
Аноним 05/02/23 Вск 19:59:14 #304 №2600251 
>>2600247
Нет, будем отвечать.
Аноним 05/02/23 Вск 20:01:58 #305 №2600255 
>>2600249
Так реальный кейс... Когда на ковиде разогнали - уехал в родную деревню и там сидел с ноутбуком, ставить студию - было влом. Нормально делал задачки.
Аноним 05/02/23 Вск 20:03:29 #306 №2600256 
>>2600245
>Ты открываешь один проект - и быстро "просекаешь", как оно работает.
Ты хочешь сказать, что благодаря тому, что на петушарпе не делают вложенных классов (между прочим, которые на джаве пишут как раз для увеличения читабельности кода в исключительных случаях, когда класс не нужен за пределами того, в котором он объявлен) и перед названиями интерфейсов пишут уродскую букву I, там становится гораздо легче разобраться в работе проекта по сурцам? Жирный, плиз.
Аноним 05/02/23 Вск 20:05:56 #307 №2600259 
алишев за пару часиков рассказал мне про спринг жопа
в то время я нахуй весь день потратил на создание пары таблиц со всеми видами отношений хотя во время просмотра все изи казалось
ебало мое?
Аноним 05/02/23 Вск 20:06:00 #308 №2600260 
image.png
>>2600251
Аноним 05/02/23 Вск 20:09:08 #309 №2600267 
Подскажите литературу по JVM в разрезе программирования. Чтобы было расписано как выделяется память под объекты, массивы всякие. Как мусор собирается. Желательно, ещё как JVM взаимодействует с внешним миром (с ОС).
Аноним 05/02/23 Вск 20:09:28 #310 №2600268 
>>2600259
А теперь репрезентуй свое ебало после того, как я тебе скажу, что статья о спинг жопа на спрингосайте отмечена как 15-минутная.
Аноним 05/02/23 Вск 20:11:07 #311 №2600274 
>>2600256
Благодаря тому, что структура проектов похожа один на другой. Ты открываешь проект на шарпе номер раз. Открываешь проект номер два. Открываешь проект номер 3.
Везде видишь папочки
Model
Events
Controllers
Services
Resources
Utils

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

Короче. Все +- одинаково, специфичные части - легко заметить. Именование тоже +- одинаковое у всех.
Из-за этого ты знаешь куда первым делом смотреть. Знаешь где какого рода штуки лежат. И быстро вникаешь.
В жаве, я часа 4 потратил чтобы просто найти, где ж там модельки лежат.
Аноним 05/02/23 Вск 20:12:28 #312 №2600275 
надо ли под каждую сущность делать свой сервис с бизнес-логикой? или лучше один общий сервис для одного контроллера? или лучше контроллеров под каждый сервис?
Аноним 05/02/23 Вск 20:14:13 #313 №2600279 
>>2600274
джава проекты тоже делаются так, просто мы используем специальный шифр, который рассылаем каждому джависту. шифр меняется в 0:00 каждого дня. делается это для того, чтобы пидорасы типо тебя горели и не могли понять что насрано в проекте
Аноним 05/02/23 Вск 20:15:34 #314 №2600281 
>>2600268
у меня больше проблем вызвало то, что я постоянно путался со связями один-к-одному/один-ко-многим/многие-ко-многим. не привычно было так же воспринимать отсутствие непосредственно поля в таблице, на которое ссылается другая таблица. т.е. я сначала пытался это все представить так, потом только начал потихоньку понимать и уходить от навязчивой мысли засунуть поле в таблицу. вместо этого абстрагировался. поле как бы есть, но оно в другом месте (внешний ключ)
Аноним 05/02/23 Вск 20:16:52 #315 №2600284 
>>2600281
выкатывайся, джава мертва
Аноним 05/02/23 Вск 20:18:06 #316 №2600288 
>>2600274
Нашел, чем гордиться. Структура должна быть такой, чтобы классы как можно меньше работали с классам из других пакетов - то есть основное сообщение с однопакетниками, чуть поменьше с теми, кто в одном пакете более выского уровня, ещё меньше с теми, кто вообще далеко, и так далее. Внешние библиотеки стоят особняком, потому что их структура не видна при работе.

Такой подход позволяет достигать максимальной инкапсуляции, выполняя то, зачем вообще нужна структура пакетов - структурирование проекта прежде всего в голове разработчика. А у тебя что? Ущерб дизайну в угоду надоям.
Аноним 05/02/23 Вск 20:18:18 #317 №2600289 
>>2600275
Нет.
Аноним 05/02/23 Вск 20:18:19 #318 №2600290 
>>2600281
>постоянно путался со связями один-к-одному/один-ко-многим/многие-ко-многим
Потому что фримверк сделан нелогично и просто нет логике в этих OneToMany и ManyToOne. А все ошибки ты ловишь в рантайме. Пока проект маленький, то фидбек получаешь мгновенно. Когда он разрастается, то ты можешь ждать по минуте, чтобы потом получить огромную портянку из стектрейсов в которых будешь копаться еще минут 5 в попытках правильно расставить аннотации.
А когда ты столкнешься с проблемой N+1 и попробуешь решить ее с помощью хубирнейта, то вообще на стены полезешь с диким воем.
Аноним 05/02/23 Вск 20:21:40 #319 №2600297 
>>2600284
нихуя

>>2600290
я больше не с фреймворком ебался, а с представлением самих таблиц в башке. фреймворк больше сбивает количеством аннотаций, которые надо сразу все как-то в голове уложить и понять что каждая делает. я правильно понял, что можно указывать однонаправленную связь и хибер под капотом сам все поймет, но лучше всегда делать двунаправленную для читаемости кода?
Аноним 05/02/23 Вск 20:22:43 #320 №2600299 
>>2600289
на какой вопрос ответ?
Аноним 05/02/23 Вск 20:25:30 #321 №2600303 
>>2600299
На все.
Аноним 05/02/23 Вск 20:29:32 #322 №2600309 
Часто ли на практике на работе вам приходится применять Spring AOP? Для джуна это актуально?
Аноним 05/02/23 Вск 20:32:25 #323 №2600317 
>>2600275
Пока тута, объясню как в шарпе делается. Хотя не уверен, что одними и теми же словами то же самое называем.
Сущности - анемичны. Просто набор свойств обычно. Иногда атрибутами - ограничения могут устанавливаться.
Сервис - объединяет в себе какую-то бизнес-область. Типа сервис оплаты. Сервис управления пользователями. Сервис выдачи заказов. Внутри одного сервиса могут использоваться различные сущности.
Контроллеры - просто передают запрос нужному сервису, получив ответ - отдает клиенту.
На уровне фильтров/миддлваря - происходит базовая валидация запроса. На уровне сервиса - может быть валидация по правилам предметной области.
Как-то так. Да.

Ну да ладно. Я так понял, меня почему-то посчитали троллем. Я не хотел таким показаться. Просто последнее время - нужно много кода на джаве смотреть. И меня просто смутило, что все проекты по разному выглядят. Такие вот дела.
Аноним 05/02/23 Вск 20:33:34 #324 №2600318 
>>2600309
Очень редко.
Аноним 05/02/23 Вск 20:34:02 #325 №2600319 
>>2600309
Ежедневно.
Аноним 05/02/23 Вск 20:36:34 #326 №2600323 
>>2600297
Там несколько сотен кейсов, которые нужно держать в голове. Чуть накосячил и хубирейнт тебе нагенерит говна, что потом будешь в 4 утра в понедельник разгребать на проде.
Аноним 05/02/23 Вск 20:40:42 #327 №2600328 
>>2600224
>>на этот пиздец в сравнении
Там в обоих случаех пиздец. Но это либы, хуле ты ожидал там увидеть?
Аноним 05/02/23 Вск 20:46:04 #328 №2600334 
Как господин Бугаенко относится к жуку?
Аноним 05/02/23 Вск 20:47:28 #329 №2600335 
>>2600334
Тебя ебет?
Аноним 05/02/23 Вск 20:48:32 #330 №2600336 
>>2600335
Ебет только твою мамку.
Аноним 05/02/23 Вск 20:49:43 #331 №2600337 
>>2600336
Че так грубо?
Аноним 05/02/23 Вск 20:50:56 #332 №2600340 
>>2600337
Твоей мамке так нравится.
Аноним 05/02/23 Вск 20:51:55 #333 №2600342 
>>2600340
Пиздец... И ты надеешься на помощь после таких слов?
Аноним 05/02/23 Вск 20:54:49 #334 №2600345 
>>2600342
Как будто ты мне собирался помочь, высравшись этим постом >>2600335, обмудок.
Аноним 05/02/23 Вск 20:58:51 #335 №2600349 
>>2600345
Ну теперь-то уж точно не собираюсь... Адьос!
Аноним 05/02/23 Вск 20:59:05 #336 №2600351 
.png
А вообще. Чет вы мне понравились.
Я наверное начну джаву учить и буду перекатываться. Все равно, считаю, что сидеть 5 лет на одном стеке - такое. С плюсов на шарп перекатился, думаю пора опять перекатываться. Так что если что - буду к вам захаживать. Да.
Аноним 05/02/23 Вск 21:00:45 #337 №2600354 
>>2600351
Как-то мы понравились одному петухонщику, до сих пор долбоеб после 500 постов перекатывает. Уёбывай.
Аноним 05/02/23 Вск 21:30:45 #338 №2600379 
>>2600309
на этом говне была сделана либа для "аудита". Все действия юзера в специальной таблице в админке
Аноним 05/02/23 Вск 21:32:16 #339 №2600380 
>>2600334
оказалось что жук платный. Бесплатная версия - самый минимум, скомпиленный под новейшей жабой (19). А чонить опенсорсное есть? Помню была queryDsl
Аноним 05/02/23 Вск 21:35:56 #340 №2600385 
>>2600380
Охуеть. Вот пидорасы!
Аноним 05/02/23 Вск 21:41:18 #341 №2600399 
>>2600380
чегооо
Аноним 05/02/23 Вск 21:43:56 #342 №2600403 
DA3K617nrq.png
>>2600399
и бесплатная версия отказалась работать под 11 жабой, пришлось обновляться на 19
Аноним 05/02/23 Вск 21:45:00 #343 №2600404 
image
image
>>2600380
QueryDSL даже более ООП-шный, чем жук. Юзай на здоровье.
Аноним 05/02/23 Вск 21:50:42 #344 №2600412 
Хорошо, что жук платный. Продолжаю клепать raw SQL с JdcTemplate.
Аноним 05/02/23 Вск 21:54:43 #345 №2600417 
>>2600403
У меня проект в продакшене на 11 жаве на фри жуке.
Какие функции тебе обязательно нужны из платных версий? Лично я не заметил ничего прям совсем нужного.
Аноним 05/02/23 Вск 21:55:39 #346 №2600419 
>>2600354
лол
Аноним 05/02/23 Вск 21:56:22 #347 №2600420 
>>2600351
Говорят на С++ не решают задачи, там идет борьба с компилятором.
Аноним 05/02/23 Вск 22:11:33 #348 №2600430 
Хочу изучить ещё один язык программирования. Что лучше, c++ или c# ?
Аноним 05/02/23 Вск 22:16:50 #349 №2600433 
>>2600430
По задачам.
Аноним 05/02/23 Вск 22:24:43 #350 №2600441 
>>2600430
Kotlin, scala, js+ts, чистый си, питон, го. Ну в крайнем случае плюсы. Шарп джависту учить смысла явно нет. На нем никаких общеинфраструктурных вещей не написано, в связке они с джавой не нужны. А ниша по сути та же - тырпрайз веб + умирающий виндовый десктоп и юнити.
А просто учить голый язык без экосистемы - это бесполезно. Так можно и хаскель какой-нибудь разучивать.
Аноним 05/02/23 Вск 22:26:16 #351 №2600444 
>>2600417
Жук свежий? Еще не понравилось что надо обятельно генерить сущности из базы. Руками инсерт не получилось. Кверидсл лучше кароч
Аноним 05/02/23 Вск 22:35:33 #352 №2600450 
>>2600441
Так юнити норм тема, геймдев выглядит намного интереснее тырпрайза
Аноним 05/02/23 Вск 22:51:38 #353 №2600458 
>>2600450
>умирающий виндовый
Аноним 05/02/23 Вск 22:53:52 #354 №2600460 
Почему на джаве нет геймдева, чем он хуже крестов и шарпа?
майнкрафт а расчет не берем
Аноним 05/02/23 Вск 22:54:10 #355 №2600461 
image.png
image.png
>>2600444
На свежем у меня сервис на 17. 3.17 внутри активно использует 17 джаву(sealed types, records, instanceof pattern matching). На 11 жук 3.16 годовалый где-то.
Генерация это основная фишка для запросов. Она и обеспечивает всю типобезопасность маппинга.
Маппинг имен таблиц/колонок и типов колонок задается на уровне кодогенерации. И когда ты все сгенерил, ты не передашь в запрос хуй знает что в строчках, если пользоваться типобезопасными апишками.
Но можно и так как на пике 2 писать, не понимаю, что у тебя не получилось. Апи без генерации приходится использовать для временных таблиц, типа сте или для создания таблиц или колонок в рантайме.
И еще фишка генерации - все констрейнты и индексы тоже генерятся в код. Их поля, типы констрейнтов и имена. На уникальных констрейнтах и уникальных частичных индексах у меня завязана кое-какая логика.
Аноним 05/02/23 Вск 22:54:49 #356 №2600463 
>>2600430
govno
Аноним 05/02/23 Вск 23:00:34 #357 №2600468 
.png
>>2600460
Джава слишком медленная и тормозная для тяжёлых вычислений.
Аноним 05/02/23 Вск 23:04:45 #358 №2600473 
>>2600460
Игры это по сути гуй.
А игровые движки - специфичные гуй библиотеки.
У жабы с гуем не задалось, особо удачных библиотек никогда не было.
Шарп всегда был ориентирован на виндовый гуй.
Аноним 05/02/23 Вск 23:15:32 #359 №2600482 
>>2600460

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

Так то на джаве игры встречаются время от времени, даже в стиме. Сходу помимо кубача вспомню project zomboid и mindustry. Просто так кости упали, что на джаве не нашлось завирусившегося игрового движка уровня unity, и как результат, не сложилось конкурентного коммьюнити, вот и все. А вообще - есть и движки на джаве (jmonkeyengine3), и нативные биндинги на графику (lwjgl). Какую нить индюшатину по фану слабать можно и сегодня.
Аноним 05/02/23 Вск 23:17:42 #360 №2600484 
>>2600473
Гуй формошлепский с гуем (или даже лучше сказать - HUDом) в играх не имеет вообще ничего общего. Ни целей, ни подходов к дизайну, ни решений. Бессмысленно пенять на свинги.
Аноним 05/02/23 Вск 23:26:10 #361 №2600496 
>>2600468
Тормозной твой батя был 16 лет назад, а джава со всеми новейшими оптимизациями побыстрее плюсов будет.

И геймдев есть, и майнкрафт как раз берём в расчёт - его доля на рынке больше чем всех юнитиподелий вместе взятых, умноженных на 10 раз. Так что это на петушарпе геймдева нет, а не на джаве. На джаве он как раз есть.
Аноним 05/02/23 Вск 23:26:46 #362 №2600497 
>>2600468
Тормоз - это ты. А в джаве с вычислениями все вполне себе неплохо, с учетом JITа, интринсиков, оптимизаций и всяких биндингов на нативные либы. Даже CUDA при желании прикручивается.
Аноним 05/02/23 Вск 23:29:11 #363 №2600499 
>>2600496
Вот это ОТРИЦАНИЕ
Аноним 05/02/23 Вск 23:31:18 #364 №2600500 
>>2600499
>пук
По делу есть что сказать?
Аноним 05/02/23 Вск 23:33:07 #365 №2600501 
>>2600484
Ну так шарп с юнити чудом выстрелил. Это один продукт, а не тенденция. Да и шарп там не полноценный, а моно.
Аноним 05/02/23 Вск 23:45:37 #366 №2600507 
>>2600501
Ничего просто так не происходит. Всегда всему есть причины. И в случае с петушарпом причина - майкрософт.
Аноним 05/02/23 Вск 23:46:26 #367 №2600508 
>>2600501
Ну вообще хз насколько это не тенденция. Возможно, тут сролял тот факт, что игорьки в основном всегда писались на плюсах под виндой, и все игровое коммьюнити разрабов уже тогда (когда не то что юнити - даже шарпов не было) все ходило под майками. А майки в свою очередь уже в дошарповые времена были ниибаца доминаторами в нише разработке на плюсах под виндой. Такой тандем явно имел в нише геймдева фору над sun/oracle, которые в игорьки никогда не играли.

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

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

Это прям пиздец как неточно. Настолько неточно, что можно сказать - пиздеж, сорян. Каким бы клевым шарп ни был для проектирования десктопных приложух, никакое преимущество ему это не дает при разработке игр.
Аноним 06/02/23 Пнд 00:05:13 #368 №2600517 
>>2600507
>>2600508
Когда юнити появился играми заведовали сони. У майков был писи рынок, который мало прибыли приносил. И только первый иксбокс, который и в подметки не годился второй плойке по охвату аудитории и прибыльности от игр.
Аноним 06/02/23 Пнд 00:06:30 #369 №2600519 
>>2600517
Ну вот писи рынок развился, который уже тогда был под контролем, и петушарп вместе с ним. Не тупи.
Аноним 06/02/23 Пнд 00:10:31 #370 №2600520 
>>2600519
Ну такое. Я вот посмотрел и первый год юнити вообще был онли под мак.
А то что ты говоришь похоже на очередную теорию заговора по завоевание мира злым майкрософтом.
Аноним 06/02/23 Пнд 00:13:23 #371 №2600523 
>>2600520
>Я вот посмотрел и первый год юнити вообще был онли под мак.
Как будто что-то отменяет. Ты логику вообще понял, или лишь бы пукнуть?

>на очередную теорию заговора по завоевание мира злым майкрософтом.
Какая ещё теория заговора, лол блядь? Это очевиднейшие, открытые факты, которые никто даже не скрывает.
Аноним 06/02/23 Пнд 00:16:21 #372 №2600526 
>>2600224
>>2600245

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

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

Все остальные твои претензии - чисто твои загоны. Ты привык читать шарповый код, поэтому код на джаве априори будет для тебя непонятнее. Для меня - наоборот. И хули тогда остается ответить на твои выгладки и полотна, кроме как не послать тебя нахуй?
Аноним 06/02/23 Пнд 00:18:19 #373 №2600528 
>>2600526
>Какие нахуй гайды от майков.
Ты так говоришь, как будто бы эти гайды не хуйня из под коня и которые вообще нихуя не преимущество петушарпа. Обоссывание майкобляди стоит начинать не с того, что он пиздит, а с того, что даже если его манямирок это правда - это всё ещё хуйня.
Аноним 06/02/23 Пнд 00:18:53 #374 №2600531 
>>2600528
>и которые не вообще нихуя не преимущество петушарпа.
быстрофикс
Аноним 06/02/23 Пнд 00:31:39 #375 №2600540 
>>2600517
Еще раз, чел. Майки были доминаторами в плюсах, и их доминаторство в этой нише было чуть ли не со времен первых виндовсов. Их плюсовый компилятор был лучшим среди конкурентов и единственным в своем роде. Все игры компилировались им, и линковались с их SDKями. Под майками был DirectX, выдававший в те времена лучшую производительность и не имевший конкуренции, на нем работали литералли все игры. Они на геймерском дерьме собаку сьели.

Причем тут влажные фантазии сонибоев с их соснолью и ее временным периодом успеха? Сколько сони существует со своим поленом, и сколько - майки.
Аноним 06/02/23 Пнд 00:47:23 #376 №2600549 
>>2600528
Да вот еще ты поучи меня, как ебланов в айти попускать. Ты то куда лезешь? Мне вообще похуй на его шарпистское гражданство.
Аноним 06/02/23 Пнд 00:58:12 #377 №2600557 
>>2600528
> это всё ещё хуйня
Ну не знаю... Когда в коммунити - люди плюс-минус в одном стиле пишут, имеют похожие структуры проектов, похожие структуры файлов с исходным кодом и т.д. как-то проще я считаю..
Вот опять же, в шарпе принято:
class ClassName
{
//события
//поля
//конструкторы
//свойства
//публичные методы
//приватные методы
//реализации интерфейсов
}
Вот такая структура файла класса - в абсолютном большинстве исходников на шарпе. И это позволяет сразу открыть файл и понять куда смотреть.
Я хз че такого плохого, когда в коммунити - есть принятый стиль и люди стараются его придерживаться.

>>2600526
> никто никогда их соблюдать не будет
В коммунити шарпа - соблюдают в массе. В абсолютном большинстве проектов следуют гайду от майкрософта. А молодых сильно ругают, чтобы они тоже следовали.
А упрощается следование тем, что в шарпе на уровне проекта, можно настроить кодстайл и отход от него будет генерировать варнинги. При этом - можно сделать так, чтобы варнинги воспринимались как ошибка, и соответственно твой проект просто не соберется, если ты сильно много себе вольностей в плане стилистики позволяешь.
Аноним 06/02/23 Пнд 01:04:06 #378 №2600561 
>>2600557
Ну и нахуя ты опять натягиваешь сову на глобус? Ты сначала привел как пруф, что в джавовских проектах нет единой структуры проектов (и слава богу!), а теперь высираешься за порядок данных в классе, что и в джаве есть и что контролируется идеей, как будто я сказал, что слава богу что такой структуры нет.
Аноним 06/02/23 Пнд 01:04:54 #379 №2600562 
>>2600561
> нет единой структуры пакетов
Аноним 06/02/23 Пнд 01:05:24 #380 №2600563 
>>2600561
>что слава богу что такого порядка нет.
Аноним 06/02/23 Пнд 01:16:19 #381 №2600565 
>>2600557
>В коммунити шарпа - соблюдают в массе

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

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

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

Ты хули вообще включил евангелистскую шарманку то, чмо? Ты мне шарп свой нахуя продать пытаешься? Я и без тебя знаю что в любом серьезном языке существуют стайлинг-чекеры, мне твоя вот эта вот лекция обзорная по возможностям шарпа не нужна. Мой тезис не про то, у кого код чище. Мой тезис - в том, что ты - кусок дерьма, а твой гнилой наброс - продукт твоего воспаленнного надмозга, не имеющий никакой корреляции с реальностью, и не несущий никакого конструктива. Есть что по существу ответить? Нет? Вот и иди нахуй.
Аноним 06/02/23 Пнд 01:35:46 #382 №2600580 
Предлагаю переименовать тред в тред имени майкрософта.
Аноним 06/02/23 Пнд 01:48:20 #383 №2600586 
Почему шарперы за 25 лет так и не отошли от комплекса того, что они на клоне джавы пишут?
Причем не только местные шизики шарписты. Вот дослушал https://youtu.be/1PvzqL2xdX8 и нарратив продолжается.
>У нас это как в джаве
>А это как в джаве, но лучше
>А этого вообще нет в джаве
>А этого, как в джаве нет, но потому что это нинужна.
Откуда такая джавазависимость? А если зритель с джавой не знаком? Я вот десятки видосов про джаву видел. И нигде не упоминается Шарп. Всем тупо насрать на него.
Аноним 06/02/23 Пнд 01:49:29 #384 №2600588 
>>2600586
Потому что петушарп - паразит джавы.
Аноним 06/02/23 Пнд 01:50:44 #385 №2600589 
>>2600540
Кстати интересно, а майки в джава экосистему как-то контрибутят? У Гугла вот есть голованг, но они с джавой до конца не порвали.
Аноним 06/02/23 Пнд 01:52:58 #386 №2600592 
>>2600589
Майнкрафт они контрибутят, бесконечный поставщик вкатунов в джаву.
Аноним 06/02/23 Пнд 01:56:50 #387 №2600593 
>>2600586

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

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

Таких же отсылок к джаве можно найти в докладах по котлину и скале. По той же причине.
Аноним 06/02/23 Пнд 01:58:27 #388 №2600594 
>>2600593
>с целью разжечь.
Что за перефорсы?
Аноним 06/02/23 Пнд 02:02:44 #389 №2600597 
>>2600593
Послушай рассказ про джаву Тагирки там же. Джава в свое время отталкивалась от плюсов. Но он это в начале сказал и о плюсах забыл. А тут я про джаву слышал постоянно.
Этот подкаст для не знакомых с языком. И если бы не был знаком с джавой, писал бы только на питоне или жсе для меня бы эти отсылки к джаве только добавляли непоняток.
Я слушал их подкаст про го, питон и ерланг и нигде нету таких постоянных ссылок на другой язык.
Аноним 06/02/23 Пнд 02:04:21 #390 №2600598 
>>2600589
Чето контрибьютят. Из недавнего промелькивал тут https://github.com/microsoft/openjdk-aarch64.

Кроме того, у майков есть azure, и они не могут тупо игнорить поддержку джавы в нем.
Аноним 06/02/23 Пнд 02:12:39 #391 №2600602 
>>2600597
И на основе этого всего ты сделал вывод о каком то комплексе? Ты дипломированный психолог? Или как это у тебя работает?

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

Ну так поэтому их там и не делают. Питон в каком месте на джаву похож? Вообще и в каком. А в шарпе с джавой очень много схожих черт, поэтому джависты отсылки поймут - можно и вставить. То же самое и с Тагиркой. Какой смысл делать много отсылок на плюсы, если джава с плюсами практически ничего общего не имеет?
Аноним 06/02/23 Пнд 02:17:01 #392 №2600606 
>>2600593
>>подкаст подлодки исключительно шарпистская тусовка чтоли?
это ж вроде какие то яндексоиды? в любом случае про жабу там вряд ли будет что то толковое, лучше жокера навернуть
Аноним 06/02/23 Пнд 02:18:17 #393 №2600607 
>>2600598
А кто основные столпы джавы, кроме оракла, редхата, вмваре и ибма? Нетфликс и линкедин пилят инфраструктурные продукты. У Амазона есть jdk. Гугл вроде уменьшает вложения в экосистему джавы.
Эпл и Фейсбук что-то внесли в джаву?
Аноним 06/02/23 Пнд 02:19:29 #394 №2600608 
>>2600606
Озоноиды скорее.
Аноним 06/02/23 Пнд 02:19:51 #395 №2600609 
>>2600607
Хз, гугл в помощь
Аноним 06/02/23 Пнд 02:19:53 #396 №2600610 
>>2600602
>>Питон в каком месте на джаву похож?
в котлине
>>поэтому джависты отсылки поймут
но зачем жавистам слушать про пеушарп? Я уж лучше го поковыряю или жс обмажусь - пользы и то больше будет.
Аноним 06/02/23 Пнд 02:20:22 #397 №2600611 
>>2600607
ИБМ и редхат тут лишние. Они нихуя не делают.
Аноним 06/02/23 Пнд 02:21:11 #398 №2600614 
>>2600611
Да и вмваре нихуя не делает. Один оракл тянет всю жабу.
Аноним 06/02/23 Пнд 02:23:14 #399 №2600617 
>>2600610
>в котлине

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

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

А типа чо - если тебе не нужно, значит не нужно вообще всем джавистам? Почему тебя вообще это так заботит?
Аноним 06/02/23 Пнд 02:24:00 #400 №2600619 
>>2600614
Вмварь пивотал зохавал, весь спринг теперь под ними.
Аноним 06/02/23 Пнд 02:25:22 #401 №2600621 
>>2600619
Ну так 99,(9) спринга пилится опенсорс лохами, а эти пидарасы просто донатики собирают.
Аноним 06/02/23 Пнд 02:26:43 #402 №2600623 
>>2600614
Вмваре принадлежит спринг. У ибм и редхата свои ждк и сервера приложений. У редхата есть кейклок написанный поверх jboss.
Аноним 06/02/23 Пнд 02:28:47 #403 №2600625 
>>2600621
Почти все в попенсорсе пишется людьми на зарплате больших корпораций. Левые васяны только мелкие баги правят.
Аноним 06/02/23 Пнд 02:28:57 #404 №2600626 
>>2600623
Уже поверх кваркуса.
Аноним 06/02/23 Пнд 02:28:58 #405 №2600627 
>>2600623
Спринг: >>2600621
И какая польза от этих ждк? Никто ими не пользуется, а если и пользуется, то за секунду перейдут на какой нибудь беллсофтовый или боже упаси оракловый.
Аноним 06/02/23 Пнд 02:29:15 #406 №2600628 
>>2600625
Вот это копиум.
Аноним 06/02/23 Пнд 02:30:01 #407 №2600631 
>>2600621
Не скажи. Основные контрибьютеры крупных штук типа спринга как раз в основном сидят на зарплате. Рандомные челики забегают чето фиксить в основном тогда, когда сталкиваются сами с каким нибудь дерьмом и им нужен фикс лично.
Аноним 06/02/23 Пнд 02:30:13 #408 №2600632 
>>2600621
> 99,(9)
Так это же ровно 100.
Аноним 06/02/23 Пнд 02:30:41 #409 №2600633 
>>2600628
Задел твои попенсорсовые религиозные чувства?
Аноним 06/02/23 Пнд 02:32:06 #410 №2600637 
>>2600633
Так это я твои чувства задел, опенсурсный лох.
Аноним 06/02/23 Пнд 02:34:08 #411 №2600642 
>>2600627
На западе java ee вполне себе имеет вес и ждк вендорные в придачу. А вот белсофт с фсбшными закладками там нахуй не нужен.
Аноним 06/02/23 Пнд 02:38:10 #412 №2600651 
>>2600627
Пользуются.

Обычно ждк в основе своей - тот же самый хотспот что и опендждк. Но дополнительно эти кастомные ждк могут добавлять свои уникальные фишки, типа AOT (Excelsior Jet) или GC (Azul). В перспективе наработки этих вендоров могут уходить в апстрим.
Аноним 06/02/23 Пнд 03:05:50 #413 №2600672 
>>2600632
Хочешь сказать 100 - %x>0% = 100?
Аноним 06/02/23 Пнд 03:36:24 #414 №2600682 
>>2600672
Нет.
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)
Аноним 06/02/23 Пнд 04:11:37 #415 №2600686 
>>2600682
ты дурак или притворяешься?
Аноним 06/02/23 Пнд 04:13:05 #416 №2600688 
>>2600682
И каким хуем ты 0.(3) приравнял к 1/3?
Аноним 06/02/23 Пнд 04:14:06 #417 №2600689 
>>2600688
такой же вопрос
Аноним 06/02/23 Пнд 04:15:49 #418 №2600690 
>>2600688
Даун, ты в школе не учился что ли?
Аноним 06/02/23 Пнд 04:17:29 #419 №2600691 
>>2600690
> наукобот увидел фразу, идущую в разрез с манямиром наукобота
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> Даун, ты в школе не учился что ли?
Аноним 06/02/23 Пнд 04:20:57 #420 №2600692 
>>2600691
Собака сутулая, пиздуй обратно в пятый класс изучать десятичные дроби.
Аноним 06/02/23 Пнд 04:21:43 #421 №2600693 
>>2600692
Лол.
Аноним 06/02/23 Пнд 04:27:10 #422 №2600694 
>>2600693
0.3 это какая дробь, братик?
Аноним 06/02/23 Пнд 04:27:42 #423 №2600695 
>>2600694
>братик?
Обратно во впарашу, быстро.
Аноним 06/02/23 Пнд 04:31:59 #424 №2600696 
>>2600695
понял) 0.3 = 3/10. как ты 3/10 преобразовал в 1/3?
Аноним 06/02/23 Пнд 04:33:08 #425 №2600697 
>>2600696
Что ты несёшь блядь?
Аноним 06/02/23 Пнд 04:35:57 #426 №2600698 
>>2600696
Жопой читаешь? Не отличаешь 0.(3) от 0.3?
Аноним 06/02/23 Пнд 04:39:51 #427 №2600699 
>>2600698
>>2600697
Да.
Аноним 06/02/23 Пнд 04:42:19 #428 №2600700 
>>2600699
0.(3) = 0.333333...
Аноним 06/02/23 Пнд 04:57:04 #429 №2600701 
>>2600700
Ты докажи, что 0,(3) = 1/3, наукобот.
Аноним 06/02/23 Пнд 06:03:04 #430 №2600710 
>>2600621
>99,(9) спринга пилится
Командой, которая сидит на зарплате у VMWare. Какой-нибудь Netty пишется челиками из Гугла, Эппла и прочего фаанга, которые там на зарплате и используют эту либу для своих поделок. Лид проекта вообще сидит на зарплате у Эппл. Какой-нибудь gRPC пилится инженерами из гугла и всякие клиенты для того же котла или джявы снова пишут зарплатные из гугла.
ELK стек пилится инженерами из самого эластика, которые там на зарплате. Кейклоак, кваркус, инфиниспан - редхат, хейзелкаст - снова ребята на зарплате.
Аноним 06/02/23 Пнд 06:29:06 #431 №2600715 
>>2600710
И всё пиздёж и мантра. Всё попенсорсное пилится попенсорс комьюнити, а те, что на зарплате получают зарплату за нихуя.
Аноним 06/02/23 Пнд 06:40:10 #432 №2600723 
>>2600715
:)
Аноним 06/02/23 Пнд 06:42:13 #433 №2600724 
СУКА КАКОГО ХУЯ В КВЕРИ ДСЛ EQUALS И GREATERTHAN НАЗВАНЫ БЛЯДЬ КАК EQ И GT СУКА!!!! ЧТО ЗА ПЕТУХОНЩИНА БЛЯДЬ!!!!!!!
Аноним 06/02/23 Пнд 09:56:16 #434 №2600848 
Сап, двач!
Имеется: разраб на удаллёнке в одной маленькой конторе в г. Казань
Стек разраба: Java + Postgres
Стаж: около 2-х лет (2 года ровно в мае)
ЗП в конторе: 75к на руки
Параллельно проверяю java-домашки по Spring на местном сайте с обучением программированию
На следующей неделе должны в конторе повышать ЗП. Перед повышением хотят услышать мои ожидания.
А я без понятия сколько можно просить? Хочется 150+, но не нагло ли просить в 2 раза больше? Есть страх отказа и что буду смотреть на меня косо, если назову слишком большую цифру
Как грамотно просить повысить ЗП?
Знакомые получают все по-разному, но все больше, чем я (с аналогичным стажем или меньше)
Сейчас джуны, у которых я домашки проверял, на 70 - 100 к залетают
Аноним 06/02/23 Пнд 10:38:52 #435 №2600887 
>>2600848
Называешь цену, например 300к, тебе говорят максимум 150к, говоришь b + (a - b)/2 (где а - твоя последняя цена, b - их последняя цена) итого 225к, если отказывают и не предлагают новую цену, решаешь соглашаться или нет. Если предлагают новую цену выше, например 180, говоришь 202,5 и т.д. пока не сойдетесь
Аноним 06/02/23 Пнд 10:41:39 #436 №2600888 
>>2600887
>говоришь 202,5
И тебя шлют нахуй.
Аноним 06/02/23 Пнд 10:43:16 #437 №2600890 
Насколько реально нарваться на обман в вакансиях, где вкатыша могут эксплуатировать и нахуй послать? Попадаются периодически подозрительные вакансии, где единственными требованиями стоит наличие любого опыта на хотя бы одном из представленных яп, адекватность и желание учиться? Ага блядь, вот так просто взяли вкатуна и начали ему попку подтирать? В чем подвох? Там могут неиронично выбирать лучшего из 10к резюме месяцами?
Аноним 06/02/23 Пнд 10:55:35 #438 №2600891 
>>2600890
Там будет по сути оплачиваемая стажировка, после неё, если адекватный, берут джуном. Почему бы и нет? Много компаний выращивает джунов.
Аноним 06/02/23 Пнд 11:49:01 #439 №2600929 
>>2600848
Идёшь собесишься и получаешь офферы на 300к/сек, после идёшь к своему начальству и говоришь, что меня зовут на 300к/сек, а тут я получаю копейки. Они сразу тебе предложат больше, если захотят удержать, если же нет, то пишешь заявление и уходишь.
Аноним 06/02/23 Пнд 12:29:03 #440 №2600959 
>>2600929
Нормально ли просить прибавку к зп, если ты джун на испыталке? Или сразу после испыталки хотя б
Аноним 06/02/23 Пнд 12:30:40 #441 №2600961 
>>2600959
А ты заслужил?
Аноним 06/02/23 Пнд 12:45:02 #442 №2600981 
>>2600701
>Ты докажи, что 0,(3) = 1/3, наукобот.
Вот поэтому тред и не надо перекатывать на 500 постах.

мимопроходил
Аноним 06/02/23 Пнд 12:53:49 #443 №2600988 
>>2600981
Ну вообще 1/3 + 1/3 + 1/3 = 1 а 0,(3) + 0,(3) + 0,(3) < 1 так что, наверное, они не равны
Аноним 06/02/23 Пнд 13:10:35 #444 №2601001 
Бляяя с кем я на одной борде сижу
Аноним 06/02/23 Пнд 13:11:39 #445 №2601005 
O(2N)
Аноним 06/02/23 Пнд 13:23:49 #446 №2601027 
>>2601001
Ты че долбоеб? По-твоему 0,(9) = 1? Даун?
Аноним 06/02/23 Пнд 13:24:20 #447 №2601028 
>>2600888
говорю: вы еще об этом пожалеете и эффектно ухожу
Аноним 06/02/23 Пнд 13:28:27 #448 №2601036 
изображение.png
изображение.png
как заставить спринг сгенерить таблицу, чтобы не было timestamp, а была date по заданному шаблону?
Аноним 06/02/23 Пнд 13:30:35 #449 №2601039 
>>2600433
Без задач, просто интересно... И полезно.
>>2600441
А если C++ ?
Аноним 06/02/23 Пнд 13:55:26 #450 №2601063 
>>2601039
Сложно найти применение плюсов для джависта. Разве что писать инфраструктурные штуки, где нужны будут платформозависимые байтоебские вставки.
Или лезть читать кишки jvm.
Больше кейсов не могу придумать.
Аноним 06/02/23 Пнд 15:21:12 #451 №2601150 
>>2601036
Указать нужный тип в @Column(columnDefinition = "")
Аноним 06/02/23 Пнд 15:21:55 #452 №2601154 
>>2600929
Если дадут оффер на 300к/с то смысл на старом месте оставаться?
Аноним 06/02/23 Пнд 15:22:18 #453 №2601155 
>>2600929
Если дадут оффер на 300к/с то смысл на старом месте оставаться?
Аноним 06/02/23 Пнд 15:23:16 #454 №2601157 
>>2601154
>>2601155

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

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

Жабач образовательный, программа средней школы эдишн.
Аноним 06/02/23 Пнд 16:16:24 #456 №2601222 
>>2601168
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

шиз
Аноним 06/02/23 Пнд 16:26:48 #457 №2601229 
>>2600848
У нас в украине джунам предлагают 40к - 60к рублей... Жити.
P.S.- 20 - 30к грн.
Аноним 06/02/23 Пнд 16:29:24 #458 №2601235 
>>2601229
1 вакансия в моем городе нахрнэн. Похоже, буду год у мамы дома сидеть и моды писать для майнкрафта :(
Аноним 06/02/23 Пнд 16:29:25 #459 №2601236 
>>2601222
> можно
Нельзя.
Аноним 06/02/23 Пнд 16:40:51 #460 №2601247 
>>2601236
Это схуя
Аноним 06/02/23 Пнд 17:01:16 #461 №2601267 
Есть 2 сервиса в одном приложении, есть webflux. Для каждого из сервиса делать по своему webfluxconfig-у с разными baseurl и некоторыми мелочами или делать один конфиг и потом отличия ручками прописывать во время деланья реквестов? Какой в этих случаях best-practice?
Аноним 06/02/23 Пнд 17:40:36 #462 №2601308 
>>2601028
Свинья смеется над убогим выебоном омежки вместе с кабаном. На ближайших 50 дейликах как минимум раз тебя да вспомнят. На 51 день кабан ебёт свинью и платит ей за это 450к.

Твои действия?
Аноним 06/02/23 Пнд 17:46:06 #463 №2601313 
>>2601308
>ебёт свинью и платит ей за это 450к
Очевидно дать кабану себя выебать
Аноним 06/02/23 Пнд 17:49:04 #464 №2601318 
https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
это частая практика? я вообще удивлен что смог эту хуйню нагуглить, уже час сижу мозги ебу, сервак тупо высирает лярд строк, которые похожи одна на другую и никакого ответа не отсылает, и я не понимал что ему надо было...
Аноним 06/02/23 Пнд 17:55:01 #465 №2601332 
>>2601318
Чел, а продебажить? toString перепиши ручками и будет работать
Аноним 06/02/23 Пнд 17:57:49 #466 №2601337 
>>2601332
я дебажил... я не понимал нихуя что происходит, он меня по хз чьему коду дрочил. дебажить фреймворки - это не мой лвл. я по старинке через sout проверял, объекты с бд приходили, а ответа от сервака не было, что добавляло только больше вопросов...
Аноним 06/02/23 Пнд 17:59:33 #467 №2601339 
>>2601332
>toString
я видел, что его всегда переписывали, но я думал это просто для удобного вывода объекта в консоль, а мне это не нужно было, поэтому я не стал его переопределять
Аноним 06/02/23 Пнд 18:25:21 #468 №2601369 
лол. так получается никакие джоины не нужны чтоли? jpa своим findAll() все зависимости сама тянет из таблиц?
Аноним 06/02/23 Пнд 18:47:44 #469 №2601400 
>>2601369
да, причем скорее всего одним из самых неоптимальных способов. При том что взаимодействие с бд это бутылочное горлышко. А чтобы заставить jpa делать оптимальные запросы, нужно хорошо знать sql + очень хорошо знать кишочки хибернейта и его грабли и ограничения.
Сперва вкатуны радуются что всё работает, а вот потом с опытом приходит понимание, что за это нужно платить, и плата слишком высока
Аноним 06/02/23 Пнд 18:50:50 #470 №2601403 
изображение.png
изображение.png
у меня получается хуевый json, но зато с таким подходом в бд меньше места занимает хранение. если role убрать из movie_person_role и добавить в person, то будет все наоборот. какая практика лучше?
Аноним 06/02/23 Пнд 18:55:11 #471 №2601413 
изображение.png
>>2601400
т.е. всегда можно по сути написать свой запрос? при чем лучше не доверять это хибернейту, а самому его написать? как на пикриле? просто не понятно зачем jpa использовать, если ты запросы сам пишешь все равно? в любом случае, если sql знаешь, написать свой запрос не сложно и не долго, в чем тогда преимущество jpa?
Аноним 06/02/23 Пнд 18:58:08 #472 №2601418 
>>2601413
>в чем тогда преимущество jpa?
ну типа там автоматически работают инсерт, апдейт и дилит, не надо их руками писать. Ещё getById есть искаропки. Ну ещё может что сущность не надо руками собирать, все поля автоматом проставляются из результата запроса
Аноним 06/02/23 Пнд 19:01:07 #473 №2601424 
>>2601403
>у меня получается хуевый json
>с таким подходом в бд меньше места занимает хранение

JSON на рестах и сущности на уровне БД не имеют, не могут иметь и не должны иметь ничего общего. У тебя явно есть косяк где то в декомпозиции на слои. Ты сущности ORM случайно не отдаешь как респонз из рестов?
Аноним 06/02/23 Пнд 19:05:20 #474 №2601432 
изображение.png
изображение.png
>>2601424
вот так отдаю. ты имеешь ввиду их надо компоновать вручную перед возвращением? как это лучше и правильно делать? или я не понял тебя
Аноним 06/02/23 Пнд 19:21:58 #475 №2601459 
c# vs c++
Аноним 06/02/23 Пнд 19:23:22 #476 №2601460 
>>2601459
По задачам.
Аноним 06/02/23 Пнд 19:24:54 #477 №2601463 
>>2601432
Ну да, так я и думал.

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

Выгрузил сущности из сервиса, преобразовал их в рестовые сущности, отдал. Преобразовывать можно руками, удобно это делать через стримовые map. Еще слышал об инструменте object mapper, который вродле как и создан для таких преобразований, но я его не пробовал.
Аноним 06/02/23 Пнд 19:27:04 #478 №2601467 
>>2601463
Обьебался с названием тула. https://modelmapper.org/
Аноним 06/02/23 Пнд 19:29:58 #479 №2601474 
>>2601463
Зачем руками, когда есть mapstruct
Аноним 06/02/23 Пнд 19:30:30 #480 №2601476 
>>2601463
>Выгрузил сущности из сервиса, преобразовал их в рестовые сущности, отдал.
т.е. это надо в слое контроллера делать? не лучше в том же сервисе?
Аноним 06/02/23 Пнд 19:30:58 #481 №2601478 
>>2601474
Ну или мапстрактом. Не важно как, важно сделать.
Аноним 06/02/23 Пнд 19:32:42 #482 №2601481 
>>2601476
>т.е. это надо в слое контроллера делать? не лучше в том же сервисе?

Это вопрос дискуссионный. Я оставлю ответ на него на твое усмотрение, ибо считаю что на новичковом уровне ответ на него не так сильно важен. Попробуй так и эдак, огреби граблей, тогда и обсудим.
Аноним 06/02/23 Пнд 20:33:37 #483 №2601514 
>>2601459
с++ не имеет применения
Аноним 06/02/23 Пнд 20:34:51 #484 №2601515 
>>2601463
в случае с жуком можно было бы сразу заполнять дтошки руками из результата sql запроса. Не нужно эти мапперы дополнительно лепить
Аноним 06/02/23 Пнд 20:45:38 #485 №2601535 
Что нужно знать в кафке, чтобы добавить ее в резюме вкатышу? Достаточно набросать пет с консумером и продюсером, прокинуть пару раз мессаге или там чет еще есть из обязательного к ознакомлению?
Аноним 06/02/23 Пнд 20:50:17 #486 №2601543 
>>2601535
Достаточно. Ну и мочь кратко рассказать про партишены.
Аноним 06/02/23 Пнд 20:53:04 #487 №2601546 
>>2601515
Дак я ж спорю разве? Можно.
Аноним 06/02/23 Пнд 21:05:50 #488 №2601561 
>>2601515
Не понял, а если у тебя сучность на 20+ полей? Руками как-то впадлу поля сетать, разве что у тебя оплата построчная
Аноним 06/02/23 Пнд 21:10:18 #489 №2601563 
>>2601561
потратить 10 минут и написать сраный маппер это сложно? Лучше с хибернейтом мудохаться часами и каждый запрос проверять?
Аноним 06/02/23 Пнд 21:13:36 #490 №2601565 
>>2601476
Мой подход в том, что в контроллере только то что нельзя спустить на уровень сервиса. Аннотации с хттп маппингами параметрами, аннотации валидации и отлов их ошибок, всякие аннотации свагера. Логирование запроса.
Все остальное, включая маппинг дто лучше спустить на уровень сервиса.
По формированию конечной дто. Тебе в дальнейшем возможно придётся дообогащать свой ответ ещё запросами в базу или в другой сервис. И вызов других сервисов и репошек это явно не дело контроллера.
Советую попробовать моделмаппер. Он медленнее чем мапстракт из-за рефлексии, но проще в использовании.
Аноним 06/02/23 Пнд 21:13:42 #491 №2601566 
Как найти работу без хибернейта?
Аноним 06/02/23 Пнд 21:15:08 #492 №2601568 
сущность.jpg
>>2601561
>>а если у тебя сучность на 20+ полей?
Назови поля в дто также как в сущности - и оно само смапится. С агрегированными данными тоже канает. Типы жук сам подгонит, если надо.
Аноним 06/02/23 Пнд 21:18:26 #493 №2601574 
>>2601565
>>моделмаппер. Он медленнее чем мапстракт из-за рефлексии, но проще в использовании.
Мне он тоже казался проще, но с мапструктом сложно только в первый раз. Потом уже не оторваться.
Аноним 06/02/23 Пнд 21:21:40 #494 №2601582 
>>2601561
Если у тебя полный update, всех полей или insert, то там вовсе не обязательно сетить по одному. Преобразуешь сущность в jooq рекорд и сохраняешь все.
https://stackoverflow.com/a/54131550
Аноним 06/02/23 Пнд 21:27:59 #495 №2601590 
>>2601566
Хз как. Меня на нынешней работе с жуком гоняли по хиберу на собесе. Не сильно конечно, но я тогда жука не знал.
Проходил кстати стажировку на одном легасиговне. И там кроме хибера были хранимки на 100 строчек в jdbcTemplate
Аноним 06/02/23 Пнд 21:28:42 #496 №2601591 
>>2601568
Хуя се, это только в платном такое, или везде? Жуком прост не пользовался, а там оказывается какой-то маппер встроенный есть
Аноним 06/02/23 Пнд 21:35:45 #497 №2601599 
>>2601591
У меня на проде бесплатный и не помню случаев чтоб платный нужен был. Разве что для жсонб постгреса методов у него нет, но не факт что в платном они есть - решается просто постановкой стринги с sql запросом.
Но такой автомапинг это магия, надо соблюдать осторожность - проебешься с неймингом и не покроешь тестами - словишь нулы в неожиданных местах.
Аноним 06/02/23 Пнд 21:47:49 #498 №2601607 
>>2601599
https://www.jooq.org/doc/3.18/manual/sql-building/column-expressions/json-functions/json-attribute-access/
Часть в 3.18 введут, и в бесплатную тоже.
Аноним 06/02/23 Пнд 22:14:26 #499 №2601618 
изображение.png
изображение.png
изображение.png
>>2601403
похоже, с моими связями в таблице, используя маппинги хибера невозможно сделать так, чтобы дубликаты персон удалились, а их роли объединились в список и были добавлены в объект персоны.

для такой реализации, как минимум нужно добавлять поле List<Role> в сущность Person, а так нельзя, потому что Person уже связан с Role через MoviePersonRole... т.е. остается только убирать связь role ---< movie_person_role и делать role ---< person? но тогда, как я уже говорил, это будет неэффективно с точки зрения занимаемого места в бд... ебнуться просто
Аноним 06/02/23 Пнд 22:24:14 #500 №2601627 
>>2601618
Че за тема?
Аноним 06/02/23 Пнд 22:25:19 #501 №2601629 
изображение.png
>>2601627
Аноним 06/02/23 Пнд 22:29:54 #502 №2601632 
>>2601629
Выглядит как говно ебаное, спасибо за название, буду обходить стороной.
Аноним 06/02/23 Пнд 22:40:54 #503 №2601635 
>>2601618

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

Ты опять выдумал чето непонятное. Проговори опять языком кабана, что делать пытаешься?
Аноним 06/02/23 Пнд 23:00:46 #504 №2601641 
изображение.png
изображение.png
изображение.png
изображение.png
>>2601635
хочу, чтобы возвращался один шварц, со списком ролей внутри себя (снова пики скину).

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

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

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

Ну сделай не стримами. Перебери циклом как получится, на стримы потом перепишешь.
Аноним 07/02/23 Втр 00:37:49 #509 №2601695 
изображение.png
изображение.png
изображение.png
изображение.png
>>2601656
бля, это такой пиздец... в такие моменты чувствуешь себя просто конченным тупым говноедом, просто животным ебаным...

реквестирую нормальные способы решить эту проблему
Аноним 07/02/23 Втр 01:56:52 #510 №2601729 
>>2601695
https://www.baeldung.com/mapstruct - вот это решит, надо будет просто правильно @Mapping прописать.
Аноним 07/02/23 Втр 04:58:53 #511 №2601746 
>>2601695
Перенеси это на уровень сервисов, в контрллере логики быть не должно.


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, а то рябит от типов. Идея подсветит что там в варе, если запутаешься.
Аноним 07/02/23 Втр 06:32:30 #512 №2601768 
>>2601695
Зачем ты вешаешь @Component на дэтэошки? Ты идиот? Не лезь, короче, чел. Ты не понимаешь как работает спринг фримверк.
Аноним 07/02/23 Втр 07:45:30 #513 №2601794 
.png
>>2601695
Цэ пиздец, топовое программирование. Дальше не читал
Аноним 07/02/23 Втр 08:45:39 #514 №2601821 
>>2601794
и что не так? к чему доеб вообще? если ты к самой конструкции, то она вся такая. ты мои связи в таблице видел вообще для начала? а писал я это в лоб через циклы, чтобы хотя бы написать в принципе эту хуйню

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

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

>>2601746
проблема еще в том, что я стримы не особо знаю. не знаю их всех возможностей, до этого пытался только через map и distinct решить задачу, но получалась лапша вложенная, от которой башка взрывалась только. у них синтаксис пиздец специфичный для меня
Аноним 07/02/23 Втр 09:06:25 #515 №2601836 
>>2601821
>у меня 5 часов утра уже было
Ты просто не понимаешь как работает спрэнг, чел... Просто не лезь в айти. Иди лучше таксуй или грузаном в пятерочку - пользы кратно больше будет.
Аноним 07/02/23 Втр 09:13:52 #516 №2601844 
>>2601836
отгрузил тебе в рот, чсвшный уебок
Аноним 07/02/23 Втр 09:36:07 #517 №2601855 
>>2601836
>>и что не так? к чему доеб вообще?
- Глобальные переменные, некогда объяснять, вы будете локальными.
Ты, List<Role> roles будешь списком, то есть списочным массивом с одним элементом, увидимся на следующем шаге.
Аноним 07/02/23 Втр 09:37:06 #518 №2601858 
>>2601821
>>и что не так? к чему доеб вообще?
- Глобальные переменные, некогда объяснять, вы будете локальными.
Ты, List<Role> roles будешь списком, то есть списочным массивом с одним элементом, увидимся на следующем шаге.
Аноним 07/02/23 Втр 09:38:16 #519 №2601860 
>>2601836
Сорян, >>2601855 не тебе
Аноним 07/02/23 Втр 09:55:23 #520 №2601863 
изображение.png
>>2601858
так я должен же как-то проинициализировать значение в мапе, когда его добавляю впервые, оно у меня - список. он может быть как из 1 элемента, так и из нескольких (у одной персоны может быть несколько ролей). о каких глобальных переменных вообще идет речь? ты хочешь сказать, что List<Role> должна быть глобальной? или что?
Аноним 07/02/23 Втр 10:13:09 #521 №2601869 
>>2601746
>Если 11+ используй var, а то рябит от типов.
С типами лучше читается, или нахуй.
Аноним 07/02/23 Втр 10:14:17 #522 №2601872 
Не отвечайте этому вкатуну с кинопоиском, он уже неделю со своей хуйней анонов доебывает, хотя по-моему уже всем очевидно, что он там себе надумал исполнить нихуя не сможет. А если вы за него все сделаете, то он энивей ничему не научится. Пусть пиздует разбираться а стримах и прочей хуйне, которую не знает.

>>2601858
>>2601794
>>2601768
Аноним 07/02/23 Втр 10:29:39 #523 №2601880 
изображение.png
>>2601872
с чего ты взял вообще что за меня тут кто-то что-то делает? я только спрашиваю про практики и другие улучшения того, что уже сам сделал, потому что хочу знать как правильно.
>Пусть пиздует разбираться а стримах и прочей хуйне, которую не знает
одно другому не мешает, нахуя ты меня ограничиваешь источником инфы? ты вообще знаешь сколько у меня вкладок блядь открыто с разной инфой? скажи, ты шиз? тебе внимания не уделяли в детстве? или с чего твоя жопа так подорвалась?

>>2601746
я в итоге так переписал, стало чуть лучше, вроде... алсо, к стримам надо привыкнуть и про их методы почитать. groupingBy оч полезным в данной ситуации оказался
Аноним 07/02/23 Втр 10:32:09 #524 №2601881 
>>2601872
Кому хочу, тому и отвечаю. Иди лечись лучше.
Аноним 07/02/23 Втр 10:33:18 #525 №2601882 
да этому клоуну шарписты под кроватью жопу порвали, до сих пор оправиться не может
Аноним 07/02/23 Втр 10:58:39 #526 №2601911 
Какая у вас ОС стоит, ребзя?
Аноним 07/02/23 Втр 11:18:03 #527 №2601941 
>>2601880
Вкатун с кинопоиском, все ты правильно делаешь, ты молодец.
Не слушай хуесоса выше. Разве что простыни текста мог бы делать покороче, читать очень сложно.
Я бы тебе помог, но хибера почти не знаю.
Аноним 07/02/23 Втр 11:18:52 #528 №2601942 
>>2601911
Виндовс 11 с wsl. А у тебя?
Аноним 07/02/23 Втр 11:23:37 #529 №2601954 
>>2601880
Такой дроченый маппинг, тем более написанный руками точно должен быть в сервисе.
Контроллер по-хорошему вообще не должен видеть класс с сущностями, только дтошки.
Аноним 07/02/23 Втр 11:24:31 #530 №2601958 
изображение.png
изображение.png
а как насчет такой практики? я вообще решил создать конструктор для того, чтобы можно было в контроллере просто передать Movie, который преобразуется в MovieDTO и возвращается клиенту >>2601880
Аноним 07/02/23 Втр 11:31:46 #531 №2601975 
>>2601954
я уже задавал этот вопрос итт, мне сказал один анон, что надо на практике самому и так и так попробовать, а когда с проблемами столкнусь, тогда и можно будет порассуждать на тему как лучше - в сервисе или в контроллере. алсо, я тоже логически больше склонен к слою в сервисе, но с другой стороны от сервиса же по сути требуется только вернуть обработанные данные, но под обработкой я подразумеваю какие-то специфичные обработки, типа исключения чего-то не нужного, объединения, добавления, запросы мб какие-то другому сервису. а контроллер по сути просто должен или не должен преобразовать эти обработанные данные в DTO.

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

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

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

Помогите мне, дайте совет: куда пойти и что делать? Инбч иди нахуй
Аноним 07/02/23 Втр 12:04:36 #533 №2602004 
>>2601911
винда конечно
Аноним 07/02/23 Втр 12:07:00 #534 №2602006 
>>2601975
>>сказал один анон, что надо на практике самому и так и так попробовать
Анон какой то хуеплет попался. Ты конечно можешь как хочешь писать, но каждый первый, кто увидит код, будет тебя заебывать вопросом, а почему у тебя толстые контроллеры, что мешало убрать все в сервисы. Бест практис или шаблонное мышление - уже другой вопрос.

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

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

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

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

>>нужно ли сверху еще наворачивать абстракцию в виде DTO
ты ж на джаве пишешь - всегда нужно больше абстракций
Аноним 07/02/23 Втр 12:09:50 #535 №2602007 
>>2601980
>куда пойти и что делать?
пойти нахуй кусать захуй

не читал твой высер лол
Аноним 07/02/23 Втр 12:10:32 #536 №2602008 
войтивайти.png
>>2601980
>>куда пойти и что делать?
Надо пройти путь до конца. Завершить так сказать цикл.
Аноним 07/02/23 Втр 12:10:42 #537 №2602009 
>>2602006
>ты ж на джаве пишешь - всегда нужно больше абстракций
звучит как жирный троллинг
Аноним 07/02/23 Втр 12:16:17 #538 №2602015 
>>2601975
>если из бд приходит сразу все что нужно, нужно ли сверху еще наворачивать абстракцию в виде DTO
Ну за всех сказать не могу, но у нас обязательно. Для контроллеров есть интерфейсы и они лежат в отдельном апи мавен-сабмодуле, вместе с дтошками. А вся реализация в сабмодуле импл. Ну и апи ничего не знает про импл, импл зависит от апи. Поэтому я вообще не могу отдавать не-дтошки.
Но видел продовый код, где таким не заморачиваются.
>>2601958
В архитектуре, на которой я работаю так сделать нельзя, дто ничего не знают про энтити. Можно сделать наоборот, ебануть конвертер внутри энтити, но это тоже не очень. Лучше иметь отдельный метод контвертер в сервисе или класс-конвертер, или маппить с помощью библиотек.
Аноним 07/02/23 Втр 12:22:31 #539 №2602022 
>>2602009
в данном случае это была метаирония

Абстракции конечно хуево ооп пидоры до сих пор лепят интерфейс для единственного сервиса, но джава это обычно сурьезный бизнес и попавшая на слой представления ентити может потом создать проблемы, поэтому лучше сразу привыкать писать везде полностью контролируемые дто.
Аноним 07/02/23 Втр 12:53:40 #540 №2602056 
>>2601942
10ка. Вот думаю переходить на 11ку или нет.
Аноним 07/02/23 Втр 13:01:27 #541 №2602064 
>>2601980
Забей чел. Вкатывайся в Java Legacy.
Тоесть найди компанию которая поддерживает говно динозавра, и просто чиль и хуй пинай
Аноним 07/02/23 Втр 13:16:23 #542 №2602095 
>>2602056
Нет, смысла нет. Я переходил, чтобы поиграть с windows subsystem for android. Поиграл и забил.
В остальном разницы не вижу.
Аноним 07/02/23 Втр 13:19:57 #543 №2602103 
>>2602064
Как понять, что компания, в которую ты собесишься легаси?
Аноним 07/02/23 Втр 13:32:05 #544 №2602122 
>>2602103
Пишут на 8 джаве или ниже.
Аноним 07/02/23 Втр 14:04:14 #545 №2602202 
ПЕРЕКАТ >>2602200 (OP)
ПЕРЕКАТ >>2602200 (OP)
ПЕРЕКАТ >>2602200 (OP)
Аноним 07/02/23 Втр 15:38:41 #546 №2602373 
ЖАБА ГОРАЗДО ХУЖЕ ЧЕМ ШАРП
Аноним 07/02/23 Втр 16:00:47 #547 №2602423 
>>2602373
Это закрывающий тег?
Аноним 07/02/23 Втр 20:31:55 #548 №2602877 
Народ,вы писали диплом на джаве? У вас его хоть раз запускали или тупо пролистали код? Мне лень хуячить фронт к диплому и я думаю тупо сделать пустую формочку и нафотошопить туда данных,бэк делаю по честному. Какие подводные?
Аноним 07/02/23 Втр 20:33:32 #549 №2602881 
>>2599736
А если jakarta?
Аноним 07/02/23 Втр 20:59:10 #550 №2602923 
>>2602881
Все просто, чекай пакеты. Если пакет начинается с jakarta.persistence (как у Entity), значит это JPA. Если org.hibernate - значит хибернейт. Ну а если org.springframework.data - значит Spring Data.
Аноним 07/02/23 Втр 22:38:59 #551 №2603062 
>>2601872
Глилой ты ебаный кусок дерьма.

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

Презираю таких как вы. Кинопоск-куну мое уважение.
Аноним 07/02/23 Втр 22:42:10 #552 №2603067 
>>2601958
Согласен с предыдущим аноном. Если есть какая-то логика в маппинге, то у нас на проекте создается маппер-сервис и в нем методы toDto(), toEntity(). Если логики нет, то просто используй jackson, встроенный в спринг.
new ObjectMapper().convertValue(entity, EntityDto.class)
алсо new ObjectMapper() можно просто инжектнуть
Аноним 07/02/23 Втр 22:45:31 #553 №2603072 
>>2602006
>Анон какой то хуеплет попался

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

У него и без практисов щас приключений хватает. Пусть доделает проект до конца, хоть по-говенному, но до конца, чтоб работало.
Аноним 08/02/23 Срд 02:32:17 #554 №2603182 
>>2603062
Хуя ты порвался, большинство сами сидят и разбираются, а не на двощах срут своими простынями. Надеюсь этот вкатун к тебе в контору попадет и будет подходить каждый час спрашивать как комит сделать, спок, шиз.
Аноним 08/02/23 Срд 04:43:56 #555 №2603195 
>>2603072
>>бестпрактисами душить?
Чел не знает как правильно и спрашивает совета, а ты ему говоришь "делай как хочешь" - считай что нахуй посылаешь. Он сам не знает как хочет.

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

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

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

>>У него и без практисов щас приключений хватает.
Ему эти беспрактисы помогут пройти приключения проще. Их не просто так придумали и назвали соответсвенно..
Аноним 08/02/23 Срд 12:12:37 #556 №2603390 
>>2603182
Ну и заебись. Я много людей менторил и онбордил, мне не западло на вопросы вкатунам отвечать. А вот с таким гнильем как ты я бы предпочел никогда не работать.
Аноним 08/02/23 Срд 16:18:27 #557 №2603624 
>>2603195
Ок, как скажешь. Считай так если хошь, я буду считать иначе.

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

Отзывы и предложения