Программирование - это не столько про анальное крудошлёпство, сколько про стиль мышления. Высокоуровневая абстракция, поиск сходных черт, оптимизация - всё это высшие интеллектуальные способности, что образуют такой прочный симбиоз с программированием на Java.
>>2602300 Раньше они не оптимизировались нихуя. Плюс, с кривыми руками можно сделать подзапрос, который выполняется для каждой строки. И ещё пару кейсов. А так - ничего плохого.
В общем решил добавить кафку в свой пет, ничего изобретательнее нового сервиса статистики, связь с которым будет происходить из мейн сервиса не придумал, лол. В этом сервисе будет своя бд и лисенеры кафки, которые допустим будут инкриминировать каунт зарегистрированных пользователей, сообщений и тд ну и мб сделаю чет типо сообщений в час, юзеров в неделю, эксепшенов в секунду А на мейн сервисе, в котором это все добро создается, в контроллере или сервисе? будут рассылаться сообщения о добавлении чего-либо в определенные партиции. Хотя уже вижу проблему с тем, что мне бы не хотелось создавать кучу лисенеров разных партиций, а может как-то сделать через один, хотя тогда придется ифами разгребать, что там пришло, так что наверн будет даже хуже смотреться. Вопрос к вам, аноны, не видите ли вы каких-то очевидных для вас проблем в том, что я придумал с кафкой, куда все-таки будет правильнее инжектить кафкутемплейт, в контроллер или сервис или похуй и допустим, если мне понадобится синхронное взаимодействие с кафкой, как мне это сделать? Может заблокировать поток, пока лисенер очереди об успехе не получит подтверждение и снимет блок? и выставить таймаут конечно же
>>2602331 Кафка-листнер с темтлейтом это или сервис или просто компонент в папке листнеров. Зачем тебе несколько партиций я не понял. Ты хочешь в один топик посылать несколько типов сообщений? Можешь руки обломать об десериализацию. А если дто для эвентов одно, то легче сначала ифами/паттерн стратегия.
>>2602407 >Зачем тебе несколько партиций я не понял а бл сори, я просто именно с кафкой пока не возился, думал тут партиция это аналог очереди, а оказывается нет
>>2602416 да тут дело скорее не в статистике, а в том, что хочу прикрутить кафку, что бы было ну и можно было бы рассказать на собесе, а то я скажу, что пользовался, меня начнут спрашивать зачем и почему именно кафка, я и не отвечу нихрена, ибо только для теста прокидывал и все, реальных задач не решал
не совсем понимаю для чего нужны @Min и т.п. валидаторы, если они выбрасывают исключения, которые по сути обобщенные и которые нельзя обработать?
но допустим, я хочу каждую ошибку обработать сам, я создаю MyException, расширяющий RuntimeException и выбрасываю его при условии if (pageNumber < 0) throw new MyException(), которое потом уже ловит @RestControllerAdvice и обрабатывает его. при таком подходе не имеет смысла использовать эти валидаторы вообще?
>>2602466 в данном случае если пришло отрицательное pageNumber, то это действительно похоже на настоящую 400. Если такое поведение не предусмотрено системой, отдавай 400 и ругайся в лог ошибкой.
>>2602466 Я интегрировался с системой, которая принимала только post запросы и всегда возвращала 200 OK, а в теле ответа прилетал жысон, где мог быть код ошибки и сообщение...
>>2602470 >400 кстати, прочитал такое, проверил, но у меня все равно ответ 500 приходит, хотя, необработанное исключение от валидатора в консоли есть.
но мой вопрос был не про коды, а про исключения. в данном случае у меня валидаторы вообще не работают, потому что их исключения нигде не обрабатываются, а обработать их самому нельзя, как я понял. там исключение класса jakarta.validation.ConstraintViolationException, если я его даже буду как-то обрабатывать, оно будет общим для всех подобных случаев для всех эндпоинтов, где используются эти валидаторы. поэтому хз даже как его обработать, чтобы при одном исключении был ответ 400 с сообщением "страница неверна", а при другом "возраст неверный".
для этого приходится, как я уже сказал >>2602452 создавать свои исключения и обрабатывать каждое отдельно, но тогда смысл в использовании валидаторов продает для меня. поэтому я не понимаю зачем они вообще нужны
>>2602479 хз, в терории это может иметь смысл, если об этом всем сразу известно. просто воспринимаешь как данность и ищешь конкретику в этом теле. в чем я не прав?
>>2602452 https://stackoverflow.com/a/33664636 BindingResult в параметрах контроллера и возврат списка ошибок и 400 в ResponseEntity или @ExceptionHandler(MethodArgumentNotValidException.class) в адвайсах. Ошибок валидации может быть много. Так можно будет вывалить список правильных сообщений об ошибках на фронт.
>>2602523 Смотри, лично сталкивался с таким. Делаю запрос в сторонний сервис findById. По части ид оно не может ничего найти и отдает 500 с описанием "не найдено". После некоторого количества таких "не найдено" даже по корректным мне начинает выдавать 500 - потому-что сработала эта штука. Раз 500 - значит сервис сломался и не стоит его беспокоить.
Как рестододики отличают бизнес-ошибки от реальных ошибок?
>>2602555 Если findById не найдено в текущем сервисе это 404 с ответом, что не найдено по id. Если не найдено во внешнем сервисе по id - то 500 с ответом, что проблема с внешним сервисом. Если текущий сервис сломался, то 500 с дефолтным или без сообщения.
>>2602574 нет, не найдено это 404 Для внешних сервисов меня кастомный EsxternalServiceException, который маппится на 500. Многие не ловят и получают от хттп-клиента не прописанный в адвайсах наследники RuntimeException, которые мапятся на 500 с дефолтным сообщением или пробросом эксепшена.
>>2602555 >Как рестододики отличают бизнес-ошибки от реальных ошибок? Никак, рест нужен только потому что это единственный стандарт WebAPI кроме SOAP, который ещё большее говно.
Господа сениоры, подскажите как быть в таком кейсе.
Есть два сервиса, внутри которых через вебклиент летят запросы на микросервис. Мне необходимо получить ответ от первого сервиса, у ответа получить айдишник и с этим айдишником отправить запрос через другой сервис. Получается как-то так:
Мне нужно, чтобы после второго запроса, если возвращается 200 – нихуя не делать. Типа такая-то сущность имеется, все ок, валидация пройдена, можно заниматься бизнес-логикой. Но проблема в том, что второй запрос не выполняется, что логично, поскольку никто на него не сабскрайбится (наверное) и идея ругается, мол, Value is never used as Publisher. Подскажите, как быть в таком случае? Вместо handle что-то другое вызвать?
Можно ли еще как-то зайти в старые треды по джаве или их окончательно снесли уже? Вот недавно еще можно было по айди в шапке, а сейчас нихуя, 404 хотя должна быть 500
блядь. хз, как я так тестил вчера, я думал решил проблему с сериализацией этой и циклами с помощью @JsonManagedReference и @JsonBackReference, но нихуя. у меня все работало на GET запросах как надо, но при попытке потестить POST начало возвращать 415 код...
я сейчас везде эти @Json...Reference закомментил, их вообще нет. для примера: есть сущность Genre и MovieGenre, они соединены oneToMany (если владелец Genre) и manyToOne (если владелец MovieGenre), я так и указал (пик 1).
хочу посмотреть какие есть жанры, делаю GET запрос -> получаю >Could not write JSON: Infinite recursion (StackOverflowError)
хочу добавить жанр, делаю POST -> получаю код 200, все ок, добавилось
от сюда вопрос: почему в одном случае не работает, а в другом работает? подозреваю, что при POST не выполняется десириализация или хз....
ок, добавляю @Json...Reference (пик 2)
делаю GET -> на этот раз все ок, поле movies не сериализуется, все как надо (пик 3)
делаю POST -> 415 код, пробовал дебажить, ставил точку останова в методе контроллера, я туда даже не попадаю в консоль высирает еще это >Failed to evaluate Jackson deserialization for type [[simple type, class Genre]]: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot handle managed/back reference 'json_movie_genre': back reference type (`java.util.List<MovieGenre>`) not compatible with managed type (MovieGenre) я ее пробую гуглить, там что-то говорят/обсуждаю/кто-то так же как и я нихуя не понимает. как это вообще работает все? что ему надо?
Народ,вы писали диплом на джаве? У вас его хоть раз запускали или тупо пролистали код? Мне лень хуячить фронт к диплому и я думаю тупо сделать пустую формочку и нафотошопить туда данных,бэк делаю по честному. Какие подводные?
>>2602888 Не пытайся наебать, это прокатывает только на лабах. За диплом тебя несколько месяцев будет ебать научрук, смотря код и требуя запускать его с разными данными. Если научрук не знает жабу, он не разрешит тебе писать диплом на жабу и выберет для тебя другой язык. Это конечно если у вас там не конченая шарага, после которой наличие диплома приравнивается к отсутствию вышки.
>>2602447 >Не каждая компания может позволить графит или прометей для сбора мониторинга Оба под лицензией апаче 2.0, то бишь бесплатные. Если ты о стоимости железа - тут уже вопрос, готов ли бизнес платить за метрики. Не готов - да и хуй с ним, значит не будет метрик.
>>2602933 У меня есть проектик с ваадином,мне проще будет его скопировать и переделать сущности. Однако там столько дыр если копать,я до сих пор не понял как в комбобоксе выдавать имя,а забирать айди поэтому у меня в комбобоксе тупо айдишники,что выглядит как пиздец. Я бы лучше еще сервисов нахуячил,докер бы добавил,что угодно только не фронт,ненавижу это поеботу пидорскую
Имеет ли смысл пытаться пробиться в тинькоф или яндекс или это все оверхайп залупа и условный сбер, который набирает больше народу, зп там по рынку и собесы намного менее запарные тоже заебись будет
не обязательно сбер, есть много других подобных, где не ебут мозг с алгосами
>>2602937 У нас железо есть. А вот дево-песов нету. Есть 4 админа и в девопесинге кое-как натаскался только 1 из них. И на него огромная очередь. Поднятия и настройки прометея ждем уже не первый месяц.
>>2602888 Писал на джаве, фронт дедал на отъебись на ваадине с хуевой версткой. Никто ничего не смотрел, код даже не заливал на гитхаб, потому что в моей шараге всем было похуй.
>>2602990 Да. Но бут и изучать толком не нужно, берёшь шаблонный проект со start.spring.io, добавляешь туда нужный стартер для MVC и начинаешь писать своим контроллеры и вьюхи.
>>2603044 в папку target твоей приложухи. Подключаешься по фтп и копируешь свой варник на сервер. Ещё в томкате начиная вроде с 8 версии ввели версионирование варников, переименовавываешь .war##002 и оно на лету переключает на новый и старый вырубает. Хочешь откатить - удаляешь новый и оно возвращает старый
Пиздец, как же бесит это говно. Из-за такой херни думаю в питон или сишарп перекатываться. Также раздражает отсутствие возможности задать дефолтные параметры метода
>>2603150 Яндекс это не про деньги, а про "интересные" проекты. В обычном месте ты будешь использовать спринг, кафку, кубер и прочее "скучное", а в яндексе - пилить свои велосипеды в режиме стартапа и писать список ниггеров, которых должен убить белый господин. >>Или там нет легаси? Компания не вчера появилась, там дохуя легаси. Вилок хватит на всех.
>>2602957 >Имеет ли смысл пытаться пробиться в тинькоф или яндекс Если готов выделить полтора-два года на подготовку к собеседованию - то почему бы и нет.
>условный сбер Попасть на порядок проще (достаточно посмотреть на пассажиров уровня Бугаудинова, Пирова или VladЫКУ). Со старта будет примерно те же деньги, что и в Тиньке или Яше, но на дистанции в 5-7 лет кратно меньше. Ну и сбер - это крест на карьере и профессиональный застой.
>>2603232 > Если готов выделить полтора-два года на подготовку к собеседованию - то почему бы и нет В том то и дело, что не готов, хотя я на начальном этапе вката читал толстую книгу по алгосам и структурам, при том вдумчиво читал несколько месяцев, параллельно кодил сам всякие деревья и сортировки. Но задачки с литкода, это другое, на них тоже нужно потратить месяца 2 минимум, что сделать я не могу, ибо и так вкатываюсь больше года.
> на дистанции в 5-7 лет Так а разве оставаться на одном месте больше 2-3 лет не мовитонище для айти? Разве что у тебя на одном месте есть стабильное нехуевое развитие в тч финансовое, но тогда и на дистанции получать ты будешь не меньше, чем яндехе тем более слышал про годовые премии в сбере 20+ процентов от годовой зп Во всяком случае лучше прийти в яндех условный с годами опыта за плечами и лычкой мидла, чем вкатуном, работы нормальной не нюхавшего. Мне каж людей с релевантным опытом и по алгосам не сильно гонять будут.
> Ну и сбер - это крест на карьере и профессиональный застой Это вообще не понял, почему крест? И застой, как я писал выше, проблема решаемая, можно просто свалить будет на другое место, когда подобное почувствуешь
>>2603312 >Во всяком случае лучше прийти в яндех условный с годами опыта за плечами и лычкой мидла, чем вкатуном, работы нормальной не нюхавшего. Ровно наоборот, в яндекс нужно идти джуном или не идти вообще.
>>2603314 Мне кажется разница между тем, придешь ты в яндех сразу или через два года с опытом только в том, что во втором случае у тебя будет два года опыта, а все остальное, это твое воображение. Если бы яндех думал как ты и делал ставки на ждунов при том, что как и все остальные набирает их поминимуму то давно бы сдох
>>2603325 >Мне кажется разница между тем, придешь ты в яндех сразу или через два года с опытом только в том В том, что не яндексе у тебя будет зп на 40% выше, чем в яндексе.
>>2603336 Давай я перефразирую. С 2 годами опыта в яндексе тебе будут платить значительно меньше, чем в средней компании. У джуна же разница будет несущественной + возможность получить крутой опыт на старте.
>>2603362 >сисдиз Это че? А про три алгосекции, это конечно пизда, всегда ж писали про две задачи, одна из которых одноклеточная, когда уже будут заставлять весь литкод прорешивать, вот тогда заживем
>>2603360 Алгосы - это блеф, по факту все равно смотрят на годы опыта подбирая позицию и стараются залоуболить тебя ниже рынка. Пару лет назад проходил собес, у меня тогда было около 3 лет опыта, алгосы решил оптимально и до конца собеса, потом просто пиздели с собеседующим. Я не супер силен в литкоде, скорее всего повезло с задачами, но тем не менее. В итоге предложили свою мутную схему с акциями, где я в первые годы получал меньше, чем любой из офферов в другие компании на тот момент. Хорошее прохождение алго не повлияло вообще ни на что. Алсо, иногда пишут их рекрутеры, созваниваемся, говорят, мол, вот вы у нас собесы хорошо проходили, может снова пройдете, вам просто будет. Но чет как-то уже и не хочется.
>>2603369 >мол, вот вы у нас собесы хорошо проходили, может снова пройдете, вам просто будет Они всем пишут. Даже если ты завалил собес, то тебя снова позовут. У них кулдаун после прохождения собеса где-то год или два. Зовут всех у кого хоть немного совпадает резюме по требованиям. Но 99% срезаются на алгоритмах и сисдизе.
>>2603369 Ну может у тебя большой опыт за плечами, а для таких понятное дело, что алгосы большого влияния не окажут. Мне кажется, что даже если в гугл прийти вообще ни одной задачки за всю жизнь не решив, но при этом имея опыт работы с технологией на нужную им позицию, которую они давно не могут закрыть, то конечно тебя возьмут и похуй, что ты не знаешь о существовании биг О или еще какой-то хуйни. А в яндекс как писал анон выше надо идти ждуном, а ждун ничего не может предложить кроме алгосов
>>2603383 >Мне кажется, что даже если в гугл прийти вообще ни одной задачки за всю жизнь не решив, но при этом имея опыт работы с технологией на нужную им позицию, которую они давно не могут закрыть, то конечно тебя возьмут и похуй, что ты не знаешь о существовании биг О или еще какой-то хуйни. С какой технологией? Если ты только являешься ее создателем. Иначе на рынке тысячи и десятки тысяч кандидатов, которые дрочат литкод годами, чтобы попасть в гугл.
есть 3 таблицы (пик 1), которые я описал сущностями так (пик 2), а так же jpa репозитории для каждой сущности >MovieRepository >GenreRepository >MovieGenreRepository
ВОПРОС: если я хочу добавить Movie (который внутри "ссылается" на другие сущности) методом POST с RequestBody, содержащим следующее тело запроса (пик 3), должен ли хибер это все подхватить, проверить есть ли такой жанр вообще, получить его id если есть, добавить сам фильм и все нужные связи в таблицу movie_genre?
или я должен только сам руками добавлять через репозитории? movieRep.save(movie); // сохраняю как бы без жанров Genre genre = new Genre("Боевик"); // при чем, я тут по идее не должен создавать, а делать запрос к бд и получать жанр по имени movieGenreRep.save(movie.getId(), genre.getId());
ПОЧЕМУ Я ЗАДАЮ ЭТОТ ВОПРОС: потому что я не понимаю, у меня не работает мой, если хибер должен такого рода запросы обрабатывать, либо я ожидаю от хибера то, что он не умеет делать, и сижу битый час дрочу эту хуйню...
>>2603421 >У жанкра должен быть свой контроллер и репо Бред, у жанра и фильма слишком сильная взаимосвязь, передавать жанр отдельно нельзя тк он часть дто
>>2603407 Во-первых, перестань делать айдишники числами, есть UUID. Во-вторых, жанры - это словарь, который практически не будет обновляться, у него должны быть свои ресты для обновления и изменения. Другие сущности не должны менять эту таблицу, только ссылаться на нее. При создании фильма ты должен только брать готовые айдишники жанров, в идеале их тебе уже должен присылать фронт.
>>2603421 что значит против реста? отсутствует id? я и с id пробывал, один хуй не добавляет нчиего в таблицу. я просто подумал, если хибер может получить объект и рекурсивно его вывести через дтошки те же, то возможно он и должен так же уметь добавлять в бд эти объекты. но он добавляет только поля типа string, long, date и т.д. пользовательские классы он так не добавляет.
и я не понимаю, так и должно быть? или это у меня в коде что-то не так написано/сделано? или я не понимаю принцип его работы? я же ему описывал все эти сущности и связи. но зачем? если он не может по этим связям что-либо сам сделать?
у меня возможно решение - это делать только так (пик), но это выглядит абсурдно, я передаю 2 тела, одно из которых - часть другого. второй момент - я обращаюсь к разным репозиториям, что как по мне - не правильно (могу ошибаться, опыта нет). и что возвращать в таком случае в контроллер даже не ясно - третий момент.
>>2603461 Есть вариант, сделай жанр енамом, а поле жанра в энтити сделай через аннотации elementcollection и collectiontable, еще сделай коллекцию с жанрами сетом
>>2603451 >Во-первых, перестань делать айдишники числами, есть UUID. что дает uuid? не нужно создавать вспомогательную таблицу? или что?
>Во-вторых, жанры - это словарь, который практически не будет обновляться, у него должны быть свои ресты для обновления и изменения. да, у меня есть пока эндпоинты только get и post для них.
>Другие сущности не должны менять эту таблицу, только ссылаться на нее. кто какую таблицу не должен менять? вообще не понял что ты имеешь ввиду. у меня где-то какие-то сущности меняют что-то? у меня в сущностях описаны поля только и их связи.
>При создании фильма ты должен только брать готовые айдишники жанров, в идеале их тебе уже должен присылать фронт. ну я так себе и представлял. вот ситуация: админ хочет добавить фильм, его клиент уже получил список жанров по эндпоинту GET api/genres в виде >id >name когда админ получил это все, у него это отобразилось в виде какой-то gui формы, по которой он клацает
итак, админ вводит заголовок будущему фильму и выбирает несколько жанров, после чего жмет на кнопку добавить формируется запрос POST api/movies с телом запроса (ВОПРОС каким?)
я предполагаю, что клиенте я должен сформировать это тело запроса по правилам сущности Movie, чтобы контроллер понял с чем имеет дело. и это тело должно быть похоже на 3 пик от сюда >>2603407
но в таком случае у меня вставка не выполняется полноценная, добавляется только заголовок, никаких связей с таблицей жанров хибер не делает при такой обработки (пик).
поэтому, я вижу только вариант с работой с несколькими репозиториями. сначала я добавляю в репозиторий фильма заголовок, затем, извлекая id добавленного фильма и id пришедшего жанра в теле запроса Movie, я добавляю эти идишники в связную таблицу movie_genre. и на этом этапе вроде все нормально, вот только я не знаю что теперь возвращать ответом... добавленный фильм, который еще надо будет прогнать через свое DTO?
>>2603481 ну тогда да, мэни ту мэни мапинг, жанр делать отдельной сущностью с репозиторием и контроллером. А мапинг юзера с жанром ты предлагаешь производить отдельным запросом?
>>2603421 А как ты предлагаешь? Кино не может существовать без жанра, жанр же напротив - может нет фильма с таким жанром еще в библиотеке Получается вставлять кино без жанра логически неверно. Можно конечно доставлять их с фильмом массивом сделать название жанра айдишником или массив айдишников жанров отправлять, потом как-то изьебнуться и написать маппер, который по ним достанет жанры из базы и просетает в сущность фильма
>>2603533 я не понимаю, можно ли в контексте хибера рассматривать many-to-many как one-to-many+many-to-one через 3 таблицу? т.е. это полноценный эквивалент? или нужно использовать именно ManyToMany с двумя таблицами? но в таком случае хибер создает 4ую таблицу, мне это не нравится, поэтмоу я предпочитаю явно создавать эту вспомогательную таблицу
что на бэке используют и в каких целях для связи с базой данных? я знаю что есть jdbc. hibernate. jpa, spring data. наверное есть еще чето. в каких целях используется каждый? знаю, что hiber jpa spring data основаны на jdbc, а используют ли jdbc в новых проектах на сырую? для каких-то особых запросов? легаси как я понимаю сделано на jdbc, но интересно в каком процентном соотношении там hiber? что использовать в новом проекте? ну, вы поняли, уже повторяюсь. если кому не лень, разьясните бест практис использования этих технологий.
короче, я ничего не смог придумать лучше этого... как можно иначе? я не верю, что так кто-то пишет (кроме индусов на ютубе). какие-то нелепые обращения туда-сюда к бд, чтобы дернуть то, дернуть это, а ведь это только жанры. у меня еще есть страны и актеры, которые связаны еще с ролями. это мне кажется пиздец как не эффективно.
>>2603595 и забыл добавить, у меня тут даже проверок нет на существующие жанры, т.е. это еще + доп запросы к бд. и так же надо будет проверить существование стран, актеров, ролей, ведь чисто в теории может придти кривое тело запроса. как такие случаи вообще обрабатывают в продакшене?
>>2603608 с чего это я мусор, я же в отличие от тебя на шее у мамки не сижу давно. мы уже давно с анонами над тобой рофлим, советуем хуйню какую-то, чтоб ты подольше поебался со своим говнопоиском, а ты до сих пор не выкупил, жаль тебя. вкатусик, спок
>>2603619 c какими ты анонами рофлил? ты один сидишь желчью плюешься. представили его ебало? еще походу и проецирует свою действительность на окружающих.
>>2603595 У жанров указываешь только айдишники/другие первичные ключи или. Сохранение делаешь в транзакции, если не будет такого genre_id в movie_genre таблице, сохранение фильма ролбекнется и ты выдашь на фронт ошибку, что ничего не сохранилось. Я тебе выше написал, что это делается иначе через параметры mappedBy и cascade в @ManyToMany
А ведь смысл хранить модуля в одном проекте только в том что бы оно просто хранилось все в одном месте, а уже пушить на к8с все равно надо по отдельности каждый модуль?
>>2603595 Непонятно, зачем ты вообще создал MovieGenre сущностью, если можно было просто использовать Genre и @ManyToMany c @JoinTable, которые сами бы завела под это дело такую табличку. И не пришлось бы так ебануто маппить. Единственный тонкий момент - обновление Movie не должно обновлять таблицу Genre и уж тем более удалять оттуда записи. Думаю, это можно как-то обработать через cascade, погугли.
>>2603701 Ну смотри, у меня есть емпти проект просто для хранения модулей (микросервисов). Я же не буду его весь в .жар конвертить, так? Смысл емпти проекта исключительно в хранении микросервисов под одной крышей на этапе разработки.
>>2603660 но у меня не ManyToMany, у меня через OneToMany / ManyToOne связи построены. я не могу отказаться от этого все равно, потому что у меня есть еще случай с другими таблицами, где первичный ключ строится по 3 полям. мне надо как-то решить эту проблему, а не переделывать связь в контексте хибера вот этот индус https://www.youtube.com/watch?v=kzsGuDcAGkE использует ManyToMany и каскады, но все равно обращается к другому сервису, чтобы вставить машины по id...
>>2603697 не понял, ты же делаешь докер пул на твой имэдж из кубера по сути, значит у тебя должен быть отдельный контейнер под модуль, пишется один манифест через хелм чарты и потом пушится в кластер с заменой некоторых переменных
>>2603720 Сука, я на вашем ебучем хибере даже не пишу. Устройся на работу и там сенек спрашивай эту хуиту. Я такое говно сохраняю 2 запросами - один инсерт в основную таблицу и еще один батч инсерт во 2ую. C сте вообще одним запросом можно.
>>2603720 бля ну ты и мудак, берешь сначала создаешь и вставляешь кино, потом то же самое делаешь с маппинг сущностью, которую ты хуй пойми зачем создал. если жанра нет, с которым мапишь то создаешь новый
>>2603782 да иди ты на хуй, то что ты предлагаешь это обезьяний способ решения, который уже написан тут >>2603595 , вали к себе в помойку лучше, от куда вылез. я тебе уже вроде указал твой путь
>>2603782 >которую ты хуй пойми зачем создал может блядь затем, чтобы создать первичный ключ по двум полям, а не два внешних ключа, которые хибер генерит?
>>2603777 Нужны машины на которых будут крутиться контейнеры с сервисами. Нужны машины/виртуалки/контейнеры где будет крутиться корпоративный гит и корпоративный ci-cd, кубер, нексус, бдхи, распределенные кеши, кафка, api gateway, sso-сервер, сервис-дискавери, проперти-сервер и другие прибабахи. Потом все это долго и упорно дружишь между собой одним из множества способов. Потом по нажатию одной кнопки один/все сервисы катятся на дев/тест/демо/прод/етк площадки.
>>2603789 долбоеб, в чем проблема такого способа, ты можешь обьяснить или нет нахуй?
>не два внешних ключа, которые хибер генерит какого хуя у тебя вообще генерэйт ддл не выключена, ты что даун? поставь себе уже миграции и создай, че ты там выдумал своим шизойдным мозгом
>>2603777 1) Становишься монстром уровня сбера, втб, яндекса или озона 2) У тебя есть куча серверов, куча девопсов и админов, куча разработчиков 3) У тебя есть куча денег на оплату этим дармоедам
>>2603931 >Ко вкату в джаву это не относится Вкат в джаву к этому треду отношения не имеет. Вкат пиздуйте обсуждать в мы вам перезвоним >>1647485 (OP) А это тред для разработчиков-джавистов.
Есть несколько сущностей и одна главная сущность, в которую включаются предыдущие сущности и рест по этой сущности делаться будет. Так вот, делаем репозиторий к каждой сущности. Делаем сервис к главной сущности. Так вот вопрос, в в этот сервис от других сузностей что правильнее будет инжектить: репозитории или сервисы для них делать и уже сервисы в сервис инжектить? Ну и платиновый вопрос: Сущности в ДТОшку и ДТОшку в сущность лучше переводить в контроллере или в сервисе?
>>2604137 Если дочерние сущности на 100% будут использоваться только вместе родительской, можешь их репозитории юзать в одном сервисе, к примеру, есть заказ (Order) и его состав (список из OrderItem). Если сущности независимые, например, заказ и товар (Product), лучше инжектить сервисы, а соответствующие репозитории юзать только в сервисах для них, так можно в сервисах делать общие проверки, не зависящие от других сущностей. Для ДТО-шек правильнее написать конвертеры и положить их рядом с контроллерами, потому что ДТО и, как следствие, конвертеры, зависят от их потребителей, т.е. для веб-клиента будут одни ДТО/конвертеры, для мобилок - другие, для десктопа - третьи, для интеграций с другими приложениями - четвёртые.
Много ли свободного времени у джава разработчика? Смогу ли я и дальше совмещать деградацию в компуктерных играх и программирование или придется выбирать? И вообще первые полгода работы, они самые тяжелые или наоборот на чиле и расслабоне?
>>2604177 Вычти время на работу (40+5 часов в неделю + поездки в офис, если не удалёнка) и сон, вот столько свободного времени и остаётся. Нагрузка на работе ощущается одинаково, джуну дают немного простых тасок, более опытному дают больше сложных тасок, которые в силу опыта делаются быстрее, в итоге времени и сил уходит примерно одинаково. Хотя смотря куда попадёшь.
>>2604177 Если первые полгода будешь проебываться, то или вылетишь или просто проебешь все возможности для роста, как разраба. Первый год вообще надо работать по полной и после работы доучивать технологии и читать книги.
>>2604214 Я бы не хотел прям проебываться, тем более в рабочее время, просто боюсь, если я буду приходить домой и опять садиться кодить, и так 7 дней в неделю, то выгорю через эти полгода или запишусь к психотерапевту. Вообще есть ли тут недавние вкатыши, которые уже ждуны, как вы там? Впахиваете по 14 часов в день или дома о работе особ не задумываетесь?
>>2604218 Люблю коммитить по 50 файлов за раз, но пишу осмысленные сообщения, а неочевидный код комментирую. Вообще любую задачу делаю в один коммит, иногда несколько задач в одном коммите. Иногда по нескольку дней не коммичу, а если закоммитить всё же надо, делаю amend. Потому что мне похуй и потому что могу. Стикеры на ноут на клею, это же кринж на уровне футболок с миньонами.
>>2604218 Считаю контрибушки на корпоративном гитлабе. Если сделал меньше 2 - считаю себя в этот день мошенником. Если сделал больше 20 - считаю, что мне в этот день сели на шею и надо попроебываться обязательно в следующие дни.
>>2604225 Ну я скоро год, как джун. Днем из 9 часов часа 3-4 проебываюсь на дваче. А после работы час-два ковыряю библиотеки или читаю книгу. Не каждый день уже, но через день. Первые три месяца на испыталке мог по 14 часов в день пилить таску, если она с наскока не выходила. Но как находил решение - даже тогда давал себе пару часиков рабочего времени попроебываться.
>>2604245 Ну среди моих знакомых про выгорание много ныли или те кто вообще программирование не любит и чисто ради бабок работает. Или те кто на очень поганый проект попал. Или то и другое вместе. Я с поганого проекта в говноконторе ушел с испыталки. А в нынешней галере мне более-менее норм.
Поясните. Нахуя вкатуны разных родов и языков дрочат всякие задачки: построй пирамиду из цифр, алгоритмы, зависают на литкоде и тд. Если 90% из них попадет на галеру, где это не нужно? Если вы дрочитесь в фейсбук или яндекс - хорошо! Вам пригодится это. Но если вы идете серверную часть приложения писать на той же Джаве, нахуя вам ебля эта? Освойтесь в фраемворках, технологиях, в том, как приложения устроены. Нахуя вам дрочить эти упражнений на сообразительность? Может, я не улавливаю что-то: если это так, а я вполне могу ошибаться, скажите в чём.
>>2604279 >Нахуя вам дрочить эти упражнений на сообразительность? Если ты планируешь всю свою недолгую карьеру грести в каких-нибудь захудалых провинциальный веб-студиях, которые на аутсорсе говнякают очередную CRM для местного завода за копейки, то литкод дрочить не нужно, т.к. на собеседовании тебя будут ебать скоупами бинов в спринге или уровнями кешей в хубирнейте. Как только ты решишь высунуть нос из своего болота и попытаться устроиться в компанию чуть выше уровнем, и я не говорю про МЯСКОТ, с ним все понятно, ты увидишь, что даже средней руки компания гоняет по алгоритмическим задачам, а некоторые даже втыкают несколько этапов тех. собеседования, например.
>>2604283 не знаю, что такое мяскот, но у меня представление, что в компаниях выше-среднего, когда ты приходишь туда с опытом - от тебя требуют знания технологий и фраемворков. и тебя гоняют как раз по этим знаниям, говорят типо, вот нам нужно создать вот такой сервис, как ты его будешь делать? и ты описываешь подробно как будешь применять разные фраемворки и технологии - причем, наверное, всякая сортировка тоже пригодится (но это знания значительно ниже, чем те что получают дроча литкод). возможно, я не прав. но у меня такое вот представление.
>>2604286 >когда ты приходишь туда с опытом Да всем похуй на твой опыт. Твое резюме даже читать не будут. Это в каком-нибудь замшелом бодишоп-аутсорсе в провинции тебя возьмут без вопросов. А если сунешься в компании покрупнее, то быстро заметишь, что твой опыт никого не волнует и если ты литкод не умеешь решать, то дальше с тобой не о чем разговаривать.
>>2604334 Почему никто не написал книгу JVM via Java, где были бы расписаны все эти моменты? Как вот про них вообще узнавать? Наверняка там ещё 100500 подобных штук запрятано.
>>2604557 >MockMvc постоянно пользуюсь. От замоканной апишки до базы в тестконтейнере. По большой части такие тесты и пишу. >TestRestTemplate ни разу не пользовался. Обычно просто мокаю обычный RestTemplate
>>2604422 Ты ведь даже на сайт Oracle не заходил? The Java Virtual Machine Specification, Java SE 19 Edition.pdf The Java Language Specification, Java SE 19 Edition.pdf
>>2604422 Ты ведь даже на сайт Oracle не заходил? The Java Virtual Machine Specification, Java SE 19 Edition.pdf The Java Language Specification, Java SE 19 Edition.pdf
Сколько в среднем нужно времени потратить на литкод, чтобы более-менее начать решать алго задачи на собесах? Есть ли какие-то лайфхаки, чтоб за короткий срок научиться их решать или обязательно нужно сидеть и задрачивать каждый день месяц минимум?
Я понял, почему шарписты периодически сюда залетают, у них просто тред полудохлый в отличие от нашего элитарного 50 постов с понедельника против 250 со вторника здесь челы завидуют, что их говно никому не интересно и любой вкатыш, который будет выбирать между петушарпом и жабой выберет второе
Чет разбираюсь сейчас с тестконтейнерами и наткнулся на анотации в тестах rule и classrule, до этого не использовал и не видел практически нигде, понял, что они на основе каких-то правил оборачивают тесткейсы, так вот вопросец, часто ли они используются в проектах и надо ли вникать в написание собственных рулов или достаточно знать, что так можно сделать и забить пока не пригодится?
>>2605086 Совсем нулевым нет, если поработал несколько месяцев, то могут. Ещё часто сеньоры формально указывают лояльного джуна ревьюером, чтобы он сразу же поставил аппрув, т.к. без хотя бы одного аппрува нельзя подмержить.
Написал текст для браузерной текстовой ролевой игры с возможностью выбора из двух вариантов.
Схема такая: Текст 1 Выбор 1,2 Текст 1 в зависимости от выбранного варианта Текст 2 Выбор 3,4 Текст 2 в зависимости от выбранного варианта ...
Теперь планирую написать фронт (реакт) и бэк (спринг) с регистрацией и возможностью учёта прогресса прохождения игры. И вот встал вопрос: Где хранить собственно сам текст? В бд и по айди постепенно подгружать на фронт? В файле? Сразу на фронте но просто постепенно его открывать?
>>2605122 Тебе точно нужны спринг и реакт для такой задачи? Если текста прям овердохуя, типа 100 мегабайт, храни в БД, ну или пиши свою СУБД поверх файлов. Если текста так мало, что можешь целиком прочитать в ОЗУ, храни в файле. Отправлять или не отправлять на фронт весь текст, решай в зависимости от того, хочешь ли ты, чтобы кто-нибудь хитрожопый мог весь текст прочитать заранее без прохождения.
>>2605163 Достаточно, даже борду сможешь запилить, но о рестах можешь забыть. При нажатии на кнопку будет отправляться HTML-форма с полной перезагрузкой страницы.
Когда мне следует заводить гитхаб и начинать в него что-то коммитить?
Будет ли гитхаб иметь какое-то преимущество когда начну откликаться на вакансии?
Что вообще писать? Просто я думал что сначала нужно выучить необходимый стек, а уже после пробовать что-то написать, но многие говорят что нужно писать что угодно уже с теми знаниями которые есть. типа это доказательство твоего серьезного настроя и т.д.
Как себя представить в интернетах? Ну т.е. я у маммы хиккан с одним телеграмом и явно же этого мало. Чем стоит обзавестись и главное КОГДА? Линкедин? Джемейловская почта? Это прям пиздец какой темный лес для меня, я вообще не понимаю как себя подать и чувствую что из-за этого будет тяжко. В том же гитхабе как себя представить? ФИО? А ник придумывать?
>>2605198 Примерно как наличие диплома магистра: кому-то важно, но почти всем похуй. Пет-проект ты пишешь для себя, чтобы закрепить знания на практике. Заодно научишься пользоваться гитом. Если ты всё же уверен, что очередной гитхаб вкатуна с типовыми проектами заинтересует того, кто видит десятки таких гитхабов в неделю, и не хочешь светить ФИО, придумай нейтральный ник, не pizdohryak2004, не рандомный набор символов, а что-нибудь произносимое, но такое, что сходу не поймёшь, что это слово означает. Линкедин нужен, если тебя почему-то не устраивает хедхантер. Про почту натыкался на статью с мнением эйчаров, где писали про кринжовость почт на мейле/яндексе, но большинству опять же похуй.
>>2605211 Короче линкедин, хедхантер, почта гугловская, в гитхабе побольше зеленых квадратиков и похуй что учишь джаву только два месяца - ебашь уже сейчас с тем что есть. Все правильно понял?
Верно ли я понимаю, что сервис-слои они должны только обращаться к репозиторию и возвращать данные и никакая другая логика там не предполагается? Просто смотрю большинство проектов на том же гитхабе и видео всяких лекторов - там как раз это. Ну и я попробовал в транзакции метода вызова одного репозитория вызвать другой метод другого репозитория и заменить объект другой сущности(внутренней), а он мне ошибку сыпет, грит что беда
>>2605284 Ошибка звучит так через постман: Error: Transferred a partial file А в консоли пишет: Cannot call sendError() after the response has been committed и java.lang.StackOverflowError: null
>>2605284 Репозитории только делают запросы и возвращают данные. Можно хттп клиент тоже сделать репозиторием и слать запросы(но обычно это делают сервисом/компонентом). Сервисы обращаются к репозиториям и другим сервисам. И там происходит любая другая логика. Отправка сообщений по почте/ в брокер сообщений, вызов интерсепторов, всякие расчеты, любое говно. Контроллеры обращаются только к сервисам.
>>2605284 > большинство проектов на том же гитхабе и видео всяких лекторов - там как раз это. Потому что это учебные проекты, там не может быть сложной логики. В реальных приложениях 95% кода как раз в сервисах, десятки проверок, обращения к другим сущностям, отправка данных в другие системы, какие-нибудь вычисления. >>2605288 > StackOverflowError Так быть не должно. Это либо магические JPA, которые хуй знает как работают, либо ты реально вызвал из первого метода второй, а из второго - первый. Поставь брейкоинты или хотя бы пиши в лог, поймёшь, в чём дело.
>>2605317 >Почему выбрасывать из сервисного слоя рантайм эксепшн это плохо
Почему плохо? Это - неизбежно.
Рано или поздно по закону мерфи ты проебешься и прошляпишь эксепшон, он не обработается и приведет к ошибке 500, которую фронт отрендерит как "йоу, у нас тут бэк обьебался опять, лол, петухи позорные, передавайте свои пламенные приветы в наш саппорт, кек".
Целенаправленно заниматься "раскруткой личного брэнда" на гитхабе с целью выбить себе преференции при трудоустройстве, если ты - никто и ничего из себя в профессиональном плане не представляешь, бессмысленно. Через гитхаб на джуномиддловом уровне можно качать скиллы, лабая петы или пронимая участие в разных проектах, но карьерные преференции он начнет приносить только когда ты - синьор с несколькими годами стажа и ниибаца-контрибьютор в "звездные" проекты.
А пока, просто расслабься, сделай ебало попроще и ищи первый вкат на ХэХэ.
Почему я сейчас часто вижу, что аноны пишут мол, если устроишься в сбер или подобные конторы, то твоя карьера программиста окончена? С чем связан такой хейт, может есть какие-то отзывы негативные о работе там, о которых я не знаю?
я бы в мвп треде спросил, но там меня затролят или проигнорируют
Просто забей и сложи в ресурсы. Когда ресурсов станет мало, перенеси наружу в файлы.
Идея хранить свой "любовь, деньги, рокнролл" под СУБД того не стоит. Профита ты с этого не поимеешь, а работать тебе с текстами будет тупо тяжелее. Одно дело - найти очепятку в файле, поправить и сохранить, другое - искать очепятку по блобам, а потом править ее SQLем.
Аргумент про "если текстов овердохуя значит файлы не подходят" - хуйня из под коня. Схуяли - текста меньше чтоли станет от того что его в блобы под СУБД упаковать, или как это по мнению местных должно работать?
Айтишники впринципе друг друга ненавидят, и грезят прикончить карьеру ближнего своего. Не зря их анальниками зовут - самый крысиный и подлый народец на свете. Сразу выстраивай ментальные барьеры, иначе эта кодла тебя сожрет.
>>2605485 Если "просто чтобы было", можно рассмотреть редиску как сторедж для пользовательский сессий. Типа, хранить там инфу о том, где юзер остановился, плюс переменные состояния мира (ХП, сделанный выбор, который будет иметь последствия по ходу истории).
>>2605499 А чем по твоему получение доступа к тексту в СУБД или редиске будет быстрее чем получение доступа к тексту с файловой системы? Ты еще не уперся в этот боттлнек, а уже предлагаешь оптимизировать. Напрасно.
В конце концов, фронт же хостит свою статику голыми файлами, и ничего. Интернет не развалился, как был 30 лет назад на HTML-документах, так и остался.
>>2605504 Ну скажем поиск по простому файлу же будет медленнее, чем если как-то достать из базы при старте и закэшировать, хотя я не уверен, никогда ничего нигде кроме базы не хранил
>>2605509 Ну у меня тут возникает сразу ряд встречных вопросов.
1. Что ты собрался в этих файлах искать? Судя по условию задачи треда (отрендерить "некопару" через веб, с поддержкой авторизации и сессий), эти файлы нужно типо достато по имени, отрендерить в соответствии с состоянием мира и показать на фронте. Все.
2. Поиск по тексту не с пустого места становится быстрее. На его скорость влияют индексы. База умеет строить индексы по тексту, да, но это еще не означает что БД - единственный и максимально оптимальный под задачу способ индексировать документы. Плюс - индексы даются незабесплатно, имеют разные характеристики и трейдофф. Поэтому тут опять таки все упирается об вопрос - что ты собрался искать в тексте визуальной новеллы про бесконечное лето?
>>2602200 (OP) Попал на проект, а там 17 джава и помойный ломбок со спрингом. Лид-дуралей считает нормальным, когда у бина по 10-15 зависимостей, ведь конструктор самому писать не надо или вайрить поля руками, т.к. повесил аннотацию и ломбок тебе все сгенерировал. Аж тошнит от этой хуйни. В коде хуй разберешься. Как быть в такой ситуации? Разве это норма использовать ломбок?
Попал на проект java стажёром, это моя первая работа. Во второй рабочий день дали модуль и сказали "пиши интеграционные тесты". Посоветуйте, как лучше подступить к этому, как правильно разработать сценарии?
>>2605625 >нормальным, когда у бина по 10-15 зависимостей, ведь конструктор самому писать не надо Ну а ты бы как сделал? Сократил количество зависимостей на бин, но увеличил количество блинов в разы? Я считаю, что так сложнее было бы.
Если название класса это целиком аббревиатура типа DTO(Data Transfer Object), то как писать название, заглавная первая, все остальные маленькие, или все буквы заглавные?
>>2605766 Да всем похуй на образование, ты знания покажи, а скорее всего знать ты будешь нихуя, если не учился нигде. Джун(!) с дипломом начинает только через год +- приносить пользу
>>2605730 Брутишь месяцами все хотя бы отдаленно подходящие вакансии на хх, откликаясь сотни раз в неделю. Идёшь на собесы, собесишься. Пишешь тестовое, если дадут после собеса.
я выбрал не ту спецу, что хотел. щас на втором курсе. уже давно понял, что тянет к программированию. вот дрочу своими силами, много времени уделяю. чем я хуже кунчика получающего диплом? особенно учитывая то, что у меня есть друзья с тех. вузов, и знания у них точно не какие-то сакральные - обычные знания, что в книжках. так чем мои знания будут отличаться от их? кстати, еще видел, что некоторые обьясняли предвзятость к тем, кто без образования - что они якобы ленивые и не заканчивают дело до конца и все такое - слышал такое среди всяких лидов и хрюш. так вот, стоит ли мне указывать свою вышку не ИТ спецы в резюме? или на нее тем более всем похуй.
>>2605791 А есть какие-то преимущества от этого? Я вот стажировался на проекте с монолитом. И там проекте было около 40 подмодулей по подсистемам разбито. И части модулей спринга не было вообще, в части только для di, а контроллеры например на ee. Где то джава конфиг, где-то хмл. Бута не было нигде. И деплоилось все на внешний томкат руками, перенося собранную варку. При том, что проект 2016 года выпуска, то есть 5-летний на тот момент. Убежал оттуда, сверкая пятками. другой анона
>>2605820 Да никаких преимуществ, переползаем с древнего говна мамонта Java EE на современный стек, понятное дело, что одномоментно никак этого не сделать.
>>2605848 а я ток недавно в энергосы вкатился, монстр не застал. адреналин тож пью. но ваще очень давно пил неск раз драйв ми и торнадо, во думаю ради эксперимента взять
>>2605788 Просто напомню, что spring MVC работает поверх сервлетов, а Hibernate - референс-имплементация JPA. Так вот и вяжется. Чуваки ищут опытного чела, что зрит в корень и адекватно эрудирован, отсекая предложение анноташкоклепателей...
>>2605862 как тебе поможет знание ее в контексте фреймворка? ты любишь часами выворачивать его кишки и рыться в них? я вообще не понимаю тех, кто любит в исходниках говна, которое писало 1000 индусов что-то смотреть. вы ебанутые.
Разбираюсь с тестконтейнерс, написал простейший тест, где поднимаю постгрес, все вроде бы ок, тесты проходят, но какие-то эксепшены в лога как на пик 2. Они мне не нравятся, так должно быть? Подозреваю, что мне надо бы закрыть соединение с контейнером, но че мне писать в каждом тесте старт & стоп? Или не в этом дело?
>>2605919 Эксепшн за тебя гуглить не буду. Но помню, у меня какое-то говно вылетало в логах только на винде из-за всл-ного докера. Но работе не мешало. По тестам. Порядок тестов в junit не гарантирется. И если у тебя эти тесты прошли, значит скорее всего сперва выполнился второй, а потом первый. По идее надо после каждого теста чистить базу от данных. Удобнее всего через @Sql(scripts = "clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD), но можно и в @AfterEach попердолитья. Ну и я надеюсь, что ты понимаешь что тесты на спрингадатовские методы писать вообще не надо. Разве что у тебя какой-то серьезный запрос в @Query
>>2605978 >Ну и я надеюсь, что ты понимаешь что тесты на спрингадатовские методы писать вообще не надо Как быть, если лид заставляет мокать репозитории?
>>2605978 >Эксепшн за тебя гуглить не буду я загуглил, но ничего не нашел по этому поводу, поэтому решил здесь спросить >если у тебя эти тесты прошли, значит скорее всего сперва выполнился второй, а потом первый нет, дело не в этом у меня инсерт роллбэк делает в конце. возможно, я что-то не указал, или там выставлено специально так, чтобы не чистить базу постоянно хотя все делаю по тем немногочисленным гайдам, что есть в инете. но разве это не правильно, чтобы так было? я где-то читал, что тесткейсы не должны афектить друг-друга. >тесты на спрингадатовские методы писать вообще не надо это знаю, просто разбираюсь пока, что к чему
еще у меня идея подствечивает контейнер, типо почему он не в трае с ресурсами, хотя везде, где я видел примеры, было именно так и написано
>>2605896 А меня то ты че спрашиваешь, я чтоли эту вакансию писал?
Опять начались какие то виляния жопой и торг на публику, что нужон, что нинужон. Казалось бы - считаешь что тебе это для карьеры не нужно: взял да гордо молча прошел мимо, но нееееет, надо кому то чето доказать, дать обоснование своей лени и невежеству.
>>2605988 Контекст не поднимаем. Лид заставляет писать юнит-тесты на спринговые сервисы с бизнес-логикой, а обращение к базе через репозитории мокать...
>>2606008 Ну по идее ничего в этом такого нет, видимо для взаимодействия с базой есть другие тесты, а ты проверяешь правильность работы какой-то бизнеслогики в сервисе
>>2606008 Если писать такие тесты на все сервисы - то это говно. Почитай у Хорикова про хрупкость тестов. Сервисы и связь между ними постоянно меняются, удаляются, добавляются, рефакторятся. Но если есть сложный и критичный метод в сервисе, то можно перестраховаться и протестить.
>>2606027 Он заставляет писать послойно. Если один сервис зависит от другого, то сначала пишется тест на сервис A, где мокается репозиторий и какой-нибудь сервис B, который в А в виде зависимости. Затем пишется тест на B, где есть зависимость на сервисы C и D...
>>2605978 >что тесты на спрингадатовские методы писать вообще не надо Я правильно понимаю что имеет смысл писать тесты только на сервисы и контроллеры + ну там всякие ютилы и т.д.?
>>2606038 Дискуссионный вопрос. Из того, что лично я стараюсь писать всегда: Тесты на эндпоинт. От апишки и до тестконтейнера. И юниты на кастомные валидаторы. Если есть зубодробительные запросы в репо или сложный сервис, то тоже иногда стоит написать.
>>2606046 Тысяча строчек... Это надо чтобы все было изи и на автомате. Если нужно написать тысячу за день и еще при этом мозг напрягаешь... Вскипеть можно.
>>2606052 >Тесты на эндпоинт. От апишки и до тестконтейнера Так это вроде не юнит-тесты, а интеграционные и очень дорогие. Сколько ты ждать будешь пока на огромном проекте все тесты запустятся? А ведь у тебя контекст каждый раз поднимается на каждом тесте...
>>2606008 бесполезные тесты. Каждая ручка должна иметь как минимум один интеграционный тест, и в процессе проверять что данные в базу положились как надо. Больше всего проблем - это как раз между базой и приложухой
>>2606063 На микросервисах 100-1000 тестов, ходящих в базу это 3-10 минут. Но все внешние сервисы мокаются. Такие интеграционные показывают, работает ли твой эндпоинт. Это от 1 до 7 тесткейсов на эндпоинт. Не вижу смысла в юнитах в большинстве случаях честно говоря. Юнитов можно написать сотню на эндпоинт, написать криво и проверив 10 слоев бинов, мучаясь с моками ты что-то проебешь в их взаимодействии. И эту сотню тестов нереально потом прочитать и отревьюить. А потом при каждом маленьком изменении треть из них ломается.
>>2606067 Ты про абстрагирование слышал. Если тебе нужно проверять каждый раз, что инструмент делает за тебя, его основной функционал, описанный в доке, то его нужно просто выкинуть.
>>2606090 >Если тебе нужно проверять каждый раз, что инструмент делает за тебя, его основной функционал, описанный в доке, то его нужно просто выкинуть. согласен. В своем проекте я бы не стал юзать спринг дату и хибернейт. Но ведь решения принимаются до меня и за меня всякими восторженными зумерами, начитавшимися хабра и не осмеливающихся пойти против current things
>>2606086 Мне приходиться терпеть, т.к. мой лид - большой выдумщик и изобретатель велосипедов. Не так давно он накостылял очередь поверх монги и даже запилил свое виденье кафки на редисе.
>>2606007 шиз, ты же сам говоришь >Чуваки ищут опытного чела, что зрит в корень и адекватно эрудирован, отсекая предложение анноташкоклепателей... так ответь на вопрос >как тебе поможет знание ее в контексте фреймворка?
>Опять начались какие то виляния жопой вот именно, нет чтобы на вопрос ответить
>>2606183 Я предположил, недоумок, а не утверждаю. Ты прицепился к первой части цитаты, проигнорил вторую и чето еще смеешь от меня требуешь? Пошел нахуй.
А как тестить, что эндпоинт отработал корректно? Допустим есть эндпоинт, по которому сохраняется новый юзер, я хочу его протестить. Делаю запрос через мокмвс и ожидаю статус 200. Но если я хочу еще проверить, что в базу все записалось? Мне получается надо инжектить репозиторий и смотреть сохранился ли он на самом дела? Или другой эндпоинт дергать и там смотреть достался ли пользователь, которого я сохранил? Или я шизу какую-то несу и если статус 200, то система отработала нормально, а другие проверки излишни?
Что мне надо сделать? Я нихуя не пынямаю!! Даже с переводчиком. Английский норм, но здесь какой-то затуп.
Once you’ve downloaded and unpacked/installed/whatever (depends on which version and for which OS), you need to add an entry to your PATH environment variable that points to the /bin directory inside the main Java directory. The bin directory is the one you need a PATH to, so that when you type:
% javac
at the command-line, your terminal will know how to find the javac compiler.
>>2606323 в винде есть глобальная переменная PATH. Когда в консольке набираешь команду, оно пытается искать по всех путях, указанных в PATH. Вот чтобы javac заработал тебе надо пусть к /bin жабы вставить в этот PATH. Обычно это делает установщик
>>2606319 Ну в этом примере - при сохранении обычно возвращается какое-то CreateUsetOutDt. И в мокмвс смотришь что тебе вернулось. С большой вероятностью если вернулось неверно, то и сохранилось неверно. Но если нужно перепроверить, то инжектишь репо и смотришь сохранилось ли.
>>2606349 А ок, а разве рестемплейт не устарел тоже? Вроде спринг пишет, что надо использовать вэбклиент, хотя я не понимаю, как это работает, если он реактивный, а ресурсы к которым он обращается нет
>>2606370 Входные и выходные джейсонки хранишь текстовыми файлами в тестовых ресурсах и вычитываешь оттуда в строчки. Особенно, если они большие. Ответ сверяешь как .andExpect(content.json(expectedJsonSting)) или как .andExpect(jsonPath("name").value("some name"))
>>2606399 Спасиб, но я так сделал, потому что мне надо получить сгенерированный хуибернейтом юид, чтоб потом в базе проверить, есть ли такой юзер, просто когда отправлял пикрил, еще не написал эту логику.
Как я понимаю Model в MVC берёт значения (которые клиент передал с URL) из нашего pojo класса, который в свою очередь берёт их из базы данных. Затем Model что - то делает с этими значениями, например выводит через html клиенту. Правильно ?
Как же хорошо, что кинопойск-даун наконец понял, что программирование, это не его и решил больше не срать сюда своими простынями, как будто в бане наконец-то форточку открыли
>>2606370 > не понимаю, как это работает, если он реактивный, а ресурсы к которым он обращается нет Тупо вешается коллбек, который вызовется при получении ответа и выполнится в пуле тредов.
>>2606588 Нуб, модель - это весь предметно-ориентированный код приложения, где содержится бизнес-логика без привязки к представлению, все сервисы, сущности и репозитории.
В чем причина x2 буста программача? Например, джавач раньше собирал всего по 50 постов за день, а сейчас все 100-150 могут быть, и это стабильно уже на протяжении последних двух недель, и не только в нашем треде.
Загадка от Жака Фреско. У тебя интерфейс, у него одна имплеиментация, и ты заранее знаешь что больше одной имплементации у этого интерфейса никогда не будет. Смысл иметь интерфейс?
Ведь единую имплементацию интерфейсы не от хорошего дизайна обычно имеют. Обычно интерфейс с единой имплементацией получается из-за того, что интерфейс уже сам по себе перегружен низкоуровневыми деталями и тяжело скаплен на много чего. И обычно такие интерфейсы очень часто меняются, что не упрощает создание и поддержку множества имплементаций. Ну замокаешь ты его - получишь ломучие бесячие бессмысленные говнотесты, которые не тестят нихуя, но которые нужно постоянно переписывать.
Если б реально просто было бы сымплементить интерфейс, созданный под единичную имплементацию, такой интерфейс не был бы интерфейсом с единичной имплементацией, разве нет?
>>2606806 Ну я изначально имел ввиду то, что мапить через обжект маппер как-то слишком западло каждый раз, особенно если дтоха большая, но мне анон ответил вроде, что они уже готовые в файле лежат и ты их оттуда считываешь. Еще другой анон написал, что мокмвс легаси и надо рестемплейтом, и я везде вставил его. Ну точнее тестрестемплейт, обычный я не понял, какой аннотацией автоконфигурится, самому мне конечно же впадлу его создавать. Еще не понимаю, какого хуя, если ставишь вэбэнвайромент проперти на рандом порт в аннотации @SpringBootTest, то он мне конфигурит сам тестресттемплейта, а если нет, то хуй.
>>2606830 >анон ответил вроде, что они уже готовые в файле лежат и ты их оттуда считываешь Можно так, а можно текст блоками вставлять, и идея даже подсвечивает синтаксис. >Еще другой анон написал, что мокмвс легаси и надо рестемплейтом, и я везде вставил его Он тебя затроллил.
>>2606830 Мокмвс никакое не легаси. Реальный код с прода тебе никто не даст посмотреть. Но зайди поищи на гитхабе, посмотри туториалы. Большинство тестит через мокмвс. Это самый распространенный подход.
>>2606857 >>2606858 Отработал сегодня, тасочки все закрыл. Выходные. Самому пет делать неохота, идей нету. Книжка не читается. Работу по выхам я пообещал себе больше не ковырять, даже если хочется. Есть коллеги, кто работают в выхи. Если они запалят, что я тоже работаю по выхам, они на шею сядут и не слезут.
>>2606876 Нужен какой-то ответственный и шарящий чел, который будет раздавать доступ к репозиторию по запросу и отклонять пулреквесты шарпоблядей ну и говнокод еще, короче по сути на вторую работу устроится а это все не про меня. Ну еще и идея создания говнопоиска мертворожденная, тк с фильмами сейчас дефицит сами знаете из-за чего.
>>2606878 Ну вот видишь. То есть код то многие не прочь пописать. Но быть тимлидом, пмом, админом, аналитиком и прочее никто не хочет. Я бы тоже не хотел делать ревью, мерджить релизы, придумывать и доебываться до фичей с бизнесовой точки зрения, создавать репошки и раздавать права. А по первой это все должен делать один человек в анонимном пете-стартапе.
>>2606885 У джебы нет библиотек для обработки видео. Ну распиши тогда ты, как ты видишь этот видеохостинг - убийцу ютуба. Для проектирования системы нам не нужен даже репозиторий на гите. Квадраты можешь чертить в пейнте и скидывать сюда.
>>2606893 > нет библиотек для обработки видео По классике, ты даже не гуглил > распиши тогда ты, как ты видишь Сейчас впадлу, может когда проснусь. Хотя у меня нет опыта в таких вещай, так что будет хуйня скорее всего, но это не значит, что невозможно что-то вменяемое придумать.
>>2606895 >По классике, ты даже не гуглил Гуглил кстати. Год назад делал недо-пет с качалкой видосов, плейлистов, аудиодорожек, с возможной нарезкой с ютуба. Ну там есть готовая библиотека-качалка поверх хттп-апишки. Я прикрутил там сто строчек логики и джавовую обертку над ffmpeg, чтобы резать файлы. Кстати версии видосов с разрешением выше 720 ютуб раздает без звука. И аудиодорожку надо качать отдельно и слеплять. Это тоже надо было делать через ffmpeg, но я на этом моменте заболел и потом забил на проектик навсегда.
>>2606901 Незачем. Просто рассказал контекст в котором я гуглил про обработку видео на джаве.
Мои мысли короче такие. Я не особо шарю, на экспертность не претендую.
Из обработки там нужен будет конвертер в стандартный пониженный битрейт с стандартным кодеком и загрузка в стандартных разрешениях 1080-720-480-360-240. А может и 1440 и 4к. Это основной функционал. Под это дело нужен один сервис с кучей оперативы, который будет скейлиться на несколько нод. Потом может еще и нарезку при загрузке можно ввести. И все это если и делать на джаве, то из того что есть в попенсорсе это библиотека с тонкой обертка над ffmpeg. На спринге можно сервисы комментов, регистрации и личного кабинета, описания видосов, сервис истории посещений и прочей анальной слежки и прочие крудовое говно написать. Но проблемы будут еще в хранилке. Там сходу терабайты файловых хранилищ нужны будут.
Короче нужны хост с 16+ оперативы для начала, хост хранилка типа s3 на пару террабайт, недорогие хосты под крудовые сервисы штук 5, под сиайку, постгрю и под кафку. Это самый минимум.
бля какой же чатгпт охуенный, спрашиваешь у него любую хуйню - найдет ответ, причем улавливает сложный контект, запоминает прошлый разговор. вкатунам - мастхев, да и работящим. уже использовали?
Слышал мнение одного чувака, который, наблюдая за повадками джунов чат-гптфагов у себя в конторе, подмечал их резкое отупление. Типа - раньше норм были челики, планомерно учились-развивались, но как открыли для себя чатгпт и копайлот, дегенератнулись в нулину, пишут парашистый код, чаще лажают, мыслят необьективно, короче пропащие типа.
>>2606928 что-то звучит как "ой вы от телефонов своих отупели уже" от бабок-срак. по-сути чатГПТ - что-то типо гугла или стаковерфлоу. только ответы генерируются сразу и ты можешь уточняющие вопросы задавать и чатгпт из контекста понимает о чем ты.
пиздос сколько этот чел принес вреда индустрии. Челики читают это и решают что коменты не нужны. Что если ты сделал комент - ты ошибся. Сколько раз видел код этих адептов "клин код" без коментов.
Аналогично по методам. Вторая итерация гораздо читаемее чем его последняя, с кучей однострочных методов и сайд эффектов. Сам же пишет что сайд эффекты плохо, что теперь вызов метода зависит от порядка вызова других методов, и сам же это делает.
>>2607259 У нас джуняра начитался этого говна и начал в тестах выделять методы. Типа в каждом тесте тестового класса есть пара строчек повторяющегося кода и он их выделил в метод. И теперь приходится каждый раз проваливаться, чтобы понять как тест работает. А тесты к апишке, которая меняется и дорабатывается постоянно. И тесты надо править и дописывать. И читать тоже. Сервис, кроме него пишут 3 человека и все плюются. Но тимлид его поддержал, потому что джуняра тыкнул в тимлида Бобом ебучим.
>>2607335 Павермок - говнище, которое значительно замедляет тесты. Алсо, если ты пишешь на спринге, то никакой необходимости в статических утилсах и нет, это код смелс. Вместо них ты можешь написать компонент, который будет настолько же удобным в использовании, но еще и тестироваться нормально будет.
>>2607259 В первом название переменных ебаные какие то, какой нахуй флаг? флаг Уэльса может?
Во втором немногим лучше на самом деле. Эмплои это будет какая нибудь энтити или рекорд без логики.
Я б сделал EmployeeUtils с этим самым методом проверки. В случае если условия поменяются (пенсионный возраст опять подняли) - менять придется только в одном месте.
Как правильнее дату в БД хранить? С объектом Date хуйня какая-то, он число год месяц норм делает, а со временем 00-00 по гринвичу постоянно. Если таймстэмп в типе лонг хранить, а через геттеры с сеттерами преобразовывать в Date, это норм практика, или за такое бьют ебало?
>>2607406 А еще плиз поясните, почему в лобке подсвечивают мне аннотацию дата и иквалс&хэшкод? Я как бэ понял, что это может повлиять на скорость работы программы, но при каких обстоятельствах и почему - нет.
>>2607413 >А еще плиз поясните, почему в лобке подсвечивают мне аннотацию дата и иквалс&хэшкод? Так наведи бля мышку и прочитай, что тебе пишут, подсвечивая. Ебать даун.
>>2607469 чет я не со всеми аргументами как будто согласен, почему ту стринг можно эксклюдать, а иквалс и хэшкод - нет? и как от проблемы преждевременной инициализации спасет собственноручное написание этих методов, разве что делать проверки на прокси внутри, хотя это тоже кажется мне чреватым багами в дальнейшем. И еще не понимаю, почему в @Data генерится именно реквайрАргсКонструктор, нам вообще часто нужны файнл поля в энтити? в голову приходит разве что дата создания сделали бы уже ноАргсКонструктор тоже и сразу минус один доеб.
>>2607486 >Using @Data for JPA entities is not recommended. It can cause severe performance and memory consumption issues. Пошел нахуй, долбоеб. Для тебя, крудошлепа, эта инфа видимо является исчерпывающей
>>2607494 >Пошел нахуй, долбоеб. Для тебя, крудошлепа, эта инфа видимо является исчерпывающей Раздался пронзительный крик со стороны джуна. Сам понять не в состоянии, хуила тупорылая? toString, equals и hashcode будут подтягивать все связанные сущности, в том числе ленивые. А по факту достаточно id.
>>2607503 тупой ты сын бляди, для этого есть специальный параметр, который сгенерит эти методы для тех полей, которые тебе нужны. А что если у тебя айдишник еще не сгенерирован? В рот возьмешь, как твоя шлюха мать вчера вечером у меня дома?
>>2607564 >нахуя русская компания пишет статьи на английском? потому что они делают плагин для иде от бывшей русской компании без поддержки русского языка?
>>2606855 я книжку нашел, прочитав там пару выборочных глав, я понял, что нихуя не понял. разве что понял то, что когда мы создаем такую связь вручную, нужно заполнять все-таки самому таблицу movie_person_role, в частности ее составной @Embeddable ключ. и то оно работает иногда странно, например (пик 2), я не понимаю зачем тут нужно устанавливать personRole.setMovie(movie);
если этого не сделать, то добавления не будет, будет ошибка >org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property [com.vladislav.web.moviesearch.MovieService.database.entities.MoviePersonRole.movie] при чем нигде я в конструкторах MoviePersonRule не обращаюсь к Movie, чтобы что-то получить или присвоить ему. долго ебал мозг с этой ошибкой, решил чисто случайно.
ну и еще не понимаю насколько я вообще правильно данные вставляю. имеется ввиду тело запроса. нигде никаких стандартов нагуглить не могу или правил. просто айдишники вставляю и есть ощущение, что что-то не правильно делаю. вот сейчас с валидацией этого тела разбираюсь, чтобы не писать ifы для каждого свойства
>>2607629 чтобы не парсить его каждый раз, просто с кп взял (хз они парсят его или так же отдельно хранят). поля примитивных типов буду еще дорабатывать потом, сейчас надо базис освоить
>>2607637 У них это разные даты, они иногда не совпадают. Если у тебя это одно и тоже, то храни в одном месте и выделяй каждый раз. Если нет, то уточни, что это за год. Например год производства.
>>2607648 я читал про это, но подумал, что у меня их все равно не много, поэтому достаточно в один все собрать. но наверное лучше и правда как ты сказал. к тому же я уже для каждой сущности накинул слой абстракции в виде DTO (при том, что там всего 2 поля и их же я в dto возвращаю), хотя раньше думал, что лишняя абстракция это плохо
>>2607664 Легко. Фильмы могут лежать на полке годами до премьеры. В совке из-за цензуры или конфликтов с администрацией. На западе из-за патентных проблем, скандалов, банкротства студии.
>>2607283 Сравнил жопу с пальцем. Очевидно в тестах не надо никаких абстракций и вообще логики, там разрешено вызывать только методы из Assertions. Во всех остальных местах надо делать абстракции. Тимлиду скажи, что джуняра долбоеб и делает хуйню.
>>2607816 > чтобы было сразу понятно, где находится класс по его названию. Ага, я тя понял, т.е. вместо org.springframework.beans.factory.annotation.Autowired будет org.springframework.beans.factory.annotation.OrgSpringframeworkBeansFactoryAnnotationAutowired
>>2607828 Вот если у тебя хуёвая структура проекта, то надо такие длинные названия классов и делать. Когда структура нормальная, просто смотришь на список пакетов и понимаешь, что данный класс должен лежать с шансом 100% в пакете X, а не в пакете Y.
Почему все курсы - это видосики? Почему нет текстовых курсов, где бы всё обстоятельно было бы расписано? Пробовал смотреть эти видосики, но не могу так воспринимать инфу. Как правило 1-2 часа нудный лектор что-то там бормочет, путается, не может пример подобрать. Это ещё без учета фигового звука! Может кто подсказать хороший курс в текстовом виде, чтобы просто читать без тупых видосиков?
>>2608147 Тут есть два подводных камня: 1) Как узнать список тем? Ведь очень легко что-то важное пропустить или начать не с той. 2) Информация по разным темам разнородна. Где-то закапываются глубоко, где-то поверхностно. В итоге можно получить сомнительный опыт. Вообще, многие высокопарно утверждают, что в интернете всё можно найти, но не учитывают, что кроме полезной инфы там очень много ерунды и откровенно вредной инфы. В итоге вместо обучение все силы будут уходить на поиск, что значительно замедлит обучение.
>>2608217 Обожаю двачик. Всё могут обосрать. Буду изучать его чисто для себя + там есть кроссплатформа под мобилки, а я как раз джва года жду приложение для качалки, так вот будет шанс наговнокодить себе.
Как можно с помощью JPA производить поиск в БД по массиву данных? Представим есть таблица товары и теги, они связаны между собой отношением "многие ко многим" и мне надо выяснить у каких товаров есть определенный список тегов
>>2608143 >>Почему нет текстовых курсов Есть - курсера, жавараш и подобные, не считая гайдов с баелдунгов
>>1-2 часа нудный лектор что-то там бормочет Это говно а не курс, такое только на гикбрейнсах всяких. Норм видео это 5-30 минут на тему с графиками, схемами. И без рожи цыгана в кадре.
>>хороший курс в текстовом виде Читай обычные гайды - там как раз текст
>>2608611 из реальных видел только "аудит" - собирается инфа что "юзер создал заказ с такими параметрами" и это через кафку пишется в сервис аудита и там интерфейс показывает. Аннотация + конфиг с параметрами каждого события. Много нареканий, по мне так проще руками писать в сервис. Кстати потом пришлось делать обёртку как раз для возможности такой ручной записи вместо аннотации
Кстати сегодня потыкал jooq с другой стороны. И увидел его недостаток, это отстутствие дудупликации. Ну типа у меня есть корневая сущность, а в ней вложенный лист с приджойненными сущностями. И обычный запрос возвращает список кортежей. Так вот хибер его сам дедуплицирует, а жук нет. И придется или руками все мапить, через всякие мапы и стримы, там придется смотреть как рекорды и результы жука устроены. Или, как советуют авторы - делать дедупликацию на уровне базы через превращение вложенных сущностей в джесон-массив. Но потом тоже надо это говно маппить руками во вложенный объект. https://stackoverflow.com/a/32374760/15429847
Я понял, что не понимаю ничего в построении микросервисной архитектуры. Допустим, у меня есть самый дефолтный чат и я хочу его разбить на микросервисы. По итогу я создаю отдельный микросервис под юзеров со своей бд и отдельный под сообщения тоже со своей бд. Но как мне теперь связать эти микросервисы между собой? Ведь очевидно юзер должен знать о том, какие сообщения отправил и по сообщению по идее должен быть способ найти юзера, который его отправил. Так как выходить из это ситуации? Создавать третий микросервис и поднимать кафку? Или вообще создавать микросервисы в такой ситации бессмысленно и легче было все в один монолит засунуть без мозгоебли? Мне бы примеры какие-то микросервисных архитектур посмотреть, которые хорошо работают и решают реальную бизнес задачу, но чет нигде нет такого. Только плюсы и минусы такого подхода с паттернами на абстрактных примерах, чего мне не достаточно для понимания.
>>2608652 если ты не гугл, не сбер и не вконтакт, то нет смысла в этих микросервисах >Создавать третий микросервис и поднимать кафку? поднимать кафку, всякие дискавери, кибану, ещё десяток базвордов. Делать асинхронный обмен информацией между сервисами
>>2608666 Да я сам хз. Может и плохо, надо тестить насколько. Зато если дедуплицируем на уровне базы, лишняя инфа с повторами в разных кортежах не полетит из базы в приложение, а только один кортеж с джейсоном. Плюсы по производительности есть и они очевидны. А как просаживает производительность подзапрос надо читать про кишки постгри и изучать план запроса.
>>2608658 Ну допустим так можно сделать, но если юзера надо будет удалить, тогда и все его сообщения тоже надо удалить по идее, а это или распределенные транзакции, или кафка лисенер на меседж сервисе
>>2608686 Во первых не факт, что надо будет его сообщения удалять. Достаточно поставить на тих томбстоун и скрыть от других пользователей. Во вторых если надо будет удалить, то можно удалять нетранзакционно, евенчиал консистенси и так будет.
>>2608692 Да можно, почему нет. Но объекты и компоненты из swing и javafx скорее всего плохо будут дружить с di. Да и зачем тебе спринг дата? Из sqlite что-то тянуть? Работать с настоящей базой с клиента напрямую это в любом случае плохая идея.
>>2608696 Двачую. Норм на микрочелики бить то, что бьется по скоупам нормально. Ну например маркетплейс. Там есть подсистема для работы с покупателями, с продавцами, со складскими работниками, с бухгалтерией, интеграция с банковской системой. И тут отлично все бьётся.
>>2608693 >Во первых не факт, что надо будет его сообщения удалять. Достаточно поставить на тих томбстоун и скрыть от других пользователей. А эт большая разница, удалять или делать запрос на изменение флага isVisible в базе у всех сообщений? >то можно удалять нетранзакционно А что если сервис сообщений в данный момент лежит? Тогда кафка нужна все равно по итогу
>>2608641 >>есть корневая сущность, а в ней вложенный лист с приджойненными сущностями жук расчитывает что у тебя нормализованная скл база, а не такая вот хуита с массивами объектов вместо ид >>Но потом тоже надо это говно маппить руками во вложенный объект. обжнеет маппер джэксона может жсон в объект мапить
>>2608753 >жук расчитывает что у тебя нормализованная скл база У меня и есть нормализованная скл-база. И она на джойны с many-to-many может отвечать набором кортежей. А ее нужно смаппить в один жаба-объект с вложенным списком. И жук нормально делает запрос. Примерно такой же, как и хибер. И оба получают одинаковый набор кортежей. Только вот хибер может при маппинге дедуплицировать, а жук - нет. И ты дедуплицирушь руками или список кортейжей в приложухе или на уровне базы, складывая вложенное говно в джейсон.
>>2608875 Сколько ни искал - не находил, чтоб прям так последовательно, в одном месте и не старьё, как на метаните про шарп и асп.нет. Попадалось только вот это https://proselyte.net/tutorials/ , но там мало инфы, да и спринг старый, хотя и там при вкате что-то для себя извлёк.
Нет, я не шарпоблядь, просто тыкал чуток шарп в свободное время
>>2608880 >>2608893 Получается можно написать свой сайт MetaJava, накидать мурзилок, набрать рекламы дилдаков, толпы вкатунов хлынут на мой сайт и можно будет не работать и лутать сотыги.
>>2608907 Можно, конечно, если у тебя ебическая усидчивость годами развивать и актуализировать инфу на сайте, которая будет полностью в открытом доступе, и получать за это копейки с рекламы и редкие донаты.
>>2608910 На джавараше инфа закрыта. Надо напрямую платить, чтобы почитать их тупые статьи со "смишными" шутейками. Создатели джавараша ещё хуже жидбрейнсов в плане жадности. А тут серьёзный сайт с общедоступной инфой. Монетизация за счёт рекламы, а не поборов с пользователей. Хотя донат тоже можно прикрутить.
>>2608917 А какая альтернатива? Делать тоже самое, но на дядю.
>>2608919 Да никакой альтернативы, у тебя реально должно быть благородное желание помогать другим анонам вкатываться и иметь с этого почти нихуя, а не как у инфоцыган, которые всё делают только ради деняк. Я бы не потянул, слишком я жадный и ленивый для этого.
>>2608919 Метанит неудобный, там нет ссылок на гитхаб. Баелдунг хорош. Но не структурирован и один-единственный гит-репозиторий на тысячи мурзилок это не очень.
>>2608919 >Надо напрямую платить, чтобы почитать их тупые статьи со "смишными" шутейками Ну нихуя себе, за чужую работу, оказывается, приходится платить!
Собрал волю в кулак и готовлюсь рассылать резюме на следующей неделе, думаю на пару-тройку собесов должны позвать через какое-то время. Что посоветуете подготовить к ним и какие темы повторить? Мне правда как-то стремно от самой мысли, что придется сидеть и позориться перед 3-4 челиками в конфе, сто проц обосрусь
>>2609078 >все методы класса Object Блин нафига его методы вообще знать, это класс же не используют нигде практически, я вообще им ни разу не пользовался еще
>три вида эксепшенов Нуллпоинтер, арифметик и илиграларгумент пойдет? или другие надо?
>>2609080 > Блин нафига его методы вообще знать Не я это придумал. Это стандартные вопросы, которые задают на собесах. Знать надо тупо для собесов. > Нуллпоинтер, арифметик и илиграларгумент пойдет? или другие надо? Речь про Exception, Error и RuntimeException. То, что они все наследуются от Throwable (который таки класс, а не интерфейс), что RuntimeException наследуется от Exception, что из них checked, что unchecked, что можно ловить, что обычно нельзя ловить (но иногда можно). Вообще, деление на три вида достаточно тупое, некоторые их делят иначе.
>>2609088 А по кишкам jvm часто гоняют? Есть какой-то ресурс не талмуд плиз где можно по-быстрому за вечерок разобраться, как там все устроено более-менее подробно? Может видосик какой на ютубе есть?
>>2609121 Эрроры и Throwable. В обычном приложении их не ловят, но если ты пишешь какой-нибудь сервер приложений или платформу, то придётся, чтобы брошенный быдлокодером эксепшен не обрушил всё.
Аноны, посоветуйте книгу для вкатуна плз. Java Core уже почти полностью изучен, сейчас приступаю к Spring, SQL и вот это всё. Но хочется полноценно изучить принципы ООП, где то глубже копнуть алгоритмы, изучить паттерны проектирования (или как оно называется правильно). В общем хорошо так понять всю суть Java и её основ. p.s. Книг очень много, где то советуют одно, где то другое. В этих же тредах когда я только начинал вкат, предлагали читать Микросервисы и ещё какая то книга с кабанчиком на обложке, но это мне кажется уже более для прокаченных дядек.
>>2609259 Книг по спрингу нормальных нету. Но если хоть что-то надо - читай srping in action 6. Но там ничего не поймешь, что под капотом. Там прямо простые круды без расколдовывания магии. Первые полкниги представление вполне дадут. Ну и в джава кор входит голый jdbc, так что ты sql уже должен знать. Если не знаком с бд вообще, то Алан Болье - Изучаем SQL годная тонкая вкатунческая книжка.
>>2609279 Наверное я неправильно выразился. SQL и Spring я как нибудь освою, думаю там ничего страшного нет. Мне бы какое нибудь чтиво связанное с основами ООП, потернами разработки. Начал читать вот только что «Элегантные объекты», вроде бы норм, но все равно как будто рассчитано на более шарящих. Я все таки в реальной разработке ещё не участвовал.
>>2609281 Да сейчас вообще пиздец с работой настал, мне с годом опыта сменить работу практически нереально, потому что джуны нахуй никому не нужны, приходится грести в нынешней галере за 70к
>>2609292 Лучше брось это дело, сейчас лучше всего смотреть в сторону более приземленных профессий, вроде электрика, слесаря, землекопа. Айти схлопывается, скоро этот мыльный пузырь лопнет и анальники-кнопкодавы будут вынуждены идти и заниматься тем, что приносит реальную пользу обществу, а не сидеть и получать свою сотыгу за перекладывания жсонов. Даже если айтишка не сдохнет в ближайшее время, жсоны вполне себе могут перекладываться автоматизированно, чатЖПТ уже дал понять насколько технологии ушли вперед и вполне себе могут писать код за любого разраба среднего пошиба. Крупные компании все это понимают и уже давно остановили набор, скоро дойдет и до остальных. Хотя в раше вообще никаких перспектив становится анальником не вижу, разве что писать софты для вояк, но это уж точно не на жабе.
Аккуратнее с "Элегантными обьектами". Эта книга - для архисиньоров, успевших прочувствовать на себе ООП в полной мере, и написана она ради рофлов и чтобы пофилософствовать, поразмышлять и похоливарить, нечели чтобы применять ее в проде. Новичек из этого чтива никакой пользы не вынесет для себя, а вот вкатунство рискует угробить на корню, ибо вокруг этой книженции и неоднозначной личности ее автора сформировался абсолютно отбитый озлобленный культ хейтеров.
>>2609297 >А ведь эта книга советуется в гайде из шапки треда
Не больно то и советуется. Так, упоминается мельком. Вообще, чтиво довольно занятное, в свое время я получил много удовольствия за размышлениями об ООП через призму егоровых объектов. Но на собесе лучше никогда не упоминай что читал ее, я серьезно. Это может плохо кончиться, одно мимолетное упоминание ЕО заставляет знатно просраться даже самых зажатых анальников.
>Может что то посоветуешь? Хуй его знает, я вот щас даже сам не смогу вспомнить, через что я учил ООП и паттерны. Давно это было. Целенаправленно я вообще ничего никогда по ним не читал. Просто в определенный момент бац - и само как то.
Я думаю - ты не ошибешься если просто вобьешь в гугл "книга по паттернам проектирования java" и возьмешь первую понравившуюся по обложке. Для прохождения собесов они скорее всего будут одинаково приемлемы, равно как для употребления в проде - одинаково отстойны.
Суко блядь как в новом уи нормально перевести мышку с отметки о варнинге около скролл бара на описание блядь!!! Если я не перевожу со скоростью света мышку, это уведомление исчезает нахуй!
У меня есть вдска за 50 рублей, и полные штаны желания захостить на ней свой мавен репозиторий. В общем я разобрался как это делается - на самом деле, не сложно. Только вот я делаю это практически в ручном режиме - со своего пука на винде делаю зип архив с проектом, засовываю на вдску, распаковываю, и делаю mvn deploy. Можно ли как-то избежать этапа ручной отправки на вдску и деплоить прямо с винды? Как, учитывая то, что у меня всего 512 мб оперативы на вдски и 200 заняты сайтом на медиавики?
Почему говнопидорская Idea прячет блять файлы проекта?! В процессе загрузки проекта показывает, а потом хуяк! - они исчезают из окна проекта. Стандартный .gitignore https://gist.github.com/dedunumax/54e82214715e35439227
>>2609279 Я заметил, что между книгами по Java Core и книгами по Spring есть информационный разрыв. Вторые предполагают какие-то дополнительные знания по корпоративной разработке, но об этом нигде не пишется.
>>2609297 Клин код Боба читай. Он говно, но большинство интервьюеров и тимлидов любят, когда джуны козыряют клин кодом. Паттерны - хед ферст или швец на выбор. Хорошая книжка - эффективная джава блоха. Но она про практические советы по джавакору. А вообще я не советовал бы тратить время на попытки вникнуть в такие абстракции, как парадигмы программирования и ооп в частности. Там сплошная болтология, которая ничего тебе как вкатуну не даст.
>>2609485 Последнее время тоже заметил, что идея постоянно багует. Ещё жрёт оперативу как не в себя. И за это они ещё хотят, чтобы им деньги платили! В то время как есть абсолютно бесплатные Эклипс и НетБинс.
>>2609514 В моем случае, я виноват. Оказалось, что целая директория была включена в .git/info/exclude проекта хз как Можно проверить инструкцию, заставляющую игнорировать файл, указав путь к нему в <pathname> git check-ignore --verbose <pathname>
>>2609665 У меня была одна вакансия. Я сходил - взяли сразу, почти без собеса, только тестовое. Вакансия одна, а людей со знанием стека вообще нет, только студенты заборостроительного, не осилившие спринг. Оказалось помойкой, которая раньше разработкой вообще не занималась, взялась поддерживать легаси копролит без документации. Текучка была жуткая. А народу - 4 человека до меня, там где надо 10+. Свалил с испытательного. Через месяц открылась еще одна вакансия. Пошел туда и взяли после собеса и тестового. Место оказалось уже +- норм, филиал московской галеры. Если в городе одна вакансия и они позовут на собес - в этом есть плюсы. Там будет сильно ниже требования на собесе, чем в большом городе.
Хочу делать отлов AccessDeniedExc при ручном изменении токена, но до отлова RestControllerExcHandler не доходит исключение. Я так понимаю на этапе фильтрации токена кидается AccessDeniedExc и дальше исключение уже не поймать. Можно это как-то исправить?
Пишу обычные круды на спринге. Есть опытные спрингошлепы?
Как нужно документировать код, чтобы без очных личных созвонов с предыдущим разработчиком можно было разобраться без полусотни часов в дебагере. Вот сенька писал апишку 2 года назад. Там огромные входные и выходные дто. Преобразование в промежуточные состояния как на входе, так и на выходе. Очень ебучий динамический запрос. Дообогащение данными через обращение в другие сервисы. И дал мне задание немножко подправить реализацию хранения и преобразования. В общей сложности на пять часов в несколько итераций созванивался со мной и объяснял. До этого наверно без меня несколько часов вспоминал, как оно работает. И я не все понял, и там еще столько же объяснять. Ну и с другой стороны я тоже объясняю другим разрабам куда писать код, в апишку которую я писал и которую нужно изменить. В сваггере есть описание, но не полное. Да и не думаю, что меня полное бы спасло. С тестами плоховато было, их почти не было.
Какую доку надо писать, чтобы как-то сократить время на это личное объяснение?
>>2609786 Я б спросил - возможно ли это впринципе? Как мне кажется - не возможно. Просто сдавайся. Даже если ты эту халабуду задокументируешь, доверять таким докам сам пернестанешь, ибо они протухнут спустя парочку кранчей.
>>2609794 А если сенька резко уволиться или помрет от старости, то все, пиздец? Тогда эти 10 часов его рассказов + ревью, 10 моих слушаний + 20 на саму разработку - в итоге 40 условных человекочасов превратятся в 150-200? Там и исполнитель и ревьювер должны будут разобраться что там такое и что с этим делать. Исполнителю придется проходить по всему маршруту в дебагере, писать тесты, долго подбирая тестовые данные наугад. А ревьюверу, представим что он есть придется долго слушать исполнителя, как это примерно работает, а потом перепроверять.
Как изучать Спринг? Набираю в гугле: учить Spring. Прокликиваю наверно 50 ссылок, но ничего толком не могу найти. Нигде нет нормальной инфы. До этого изучал джаву на степике.
>>2609816 Да это понятно. Но может есть хинты какие-то чтобы как то вот эти походы от ручки до базы и назад немного подсократить. В джаве там ведь обычно еще слоем паттернов намазано + магией спринга с какими-нибудь дополнительными настройками бинов, интерсепторами и прочими штуками мешающими идти последовательно.
>>2609806 >А если сенька резко уволиться или помрет от старости, то все, пиздец?
Типа того.
Не, если че - я не агитирую за то, чтобы вообще не писать доки. Мой пойнт в том, что хоть упишись, от созвонов и общения со знатоками это не спасет. Так просто не бывает, по моим наблюдениям.
>>2609855 Я имел ввиду как-то превентивно снизить количество инфы, которое нужно через такие созвоны передавать. Ну чтобы наша серия созвонов с сенькой с 10 часов до 5 сократилась.
>>2609861 А, ну ты щас постановку задачи сменил. Изначально ты спрашивал про доки. С новой постановкой вопроса я бы ответил так: если проект требует таких конских созвонов и лютой координации между владельцами разных модулей, самый верный способ это избавиться от вот этого вот всего:
> Там огромные входные и выходные дто. Преобразование в промежуточные состояния как на входе, так и на выходе. Очень ебучий динамический запрос. Дообогащение данными через обращение в другие сервисы.
Но скорее всего вот это вот все в вашем случае уже неизбежно. Доки немного помогут, но в корне ситуацию не переломят, плюс на доки девелоперский ресурс тратится так же как и на митинги. Еще может помочь опыт в целом - все таки раз отмитинговати, два-отмитинговали - что-то в голове должно было отложиться? А вообще - сдавайтесь.
Впринципе это еще не самая раковая ситуация - у тебя хотя бы еще есть с кем поговорить. Бывает что люди вообще берут этот сложившийся статус кво за норму и выстраивают вокруг перманентного взаимодействия девов процесс разработки - так родилась идея парного программирования.
>>2609786 >>круды >>Как нужно документировать код Круды самодокументируемые. Вдекватных названий методов и пременных достаточно. В редких случаях когда пишу коммент как ебала работает, если там что то неочевидно-костыльное.
>>чтобы без очных личных созвонов с предыдущим разработчиком можно было разобраться без полусотни часов в дебагере. Я б сам хуй вспомнил как работает хуевый код.
>>Там огромные входные и выходные дто Надо декомпозировать. Если там 50 полей самый шик если все - стринги - делать вложенные классы. По крайней мере если нужна такая плоская дто - делать ее на финальном этапе перед тем как выплюнуть на фронт.
>>В общей сложности на пять часов в несколько итераций созванивался со мной и объяснял. До этого наверно без меня несколько часов вспоминал, как оно работает. Явный признак того что код говнище, тут документация не спасет, надо переписывать.
>>С тестами плоховато было, их почти не было. Не только лишь все умеют писать тесты на спринге. Иногда их отсутствие лучше, чем хуевые тесты которые надо поддеживать.
>>Какую доку надо писать, чтобы как-то сократить время на это личное объяснение? Не спасет дока, скорее всего надо код рефачить ну или забить и терпеть. Даже если ты напишешь полнейший гайд по обходу граблей и с описанием всех костылей, кто будет его актуализировать? Уж лучше тесты.
Опять шизоуебище заступило на смену. Литералли каждый день срет тремя постами: - как выучить спринг, ааа ноль инфы - без платной идеи даже не пернуть - у меня в чите 1 вакансия с 1200 откликами, вкат закрыт
>>2609929 > Если там 50 полей самый шик если все - стринги - делать вложенные классы. Нет, там скорее обратная проблема - сильно разветвленная и динамическая джейсонка - дто с наследованием различающихся частей. Проблема еще в том, что часть реализаций неактуальна.
Короче напишу высокоуровневые тесты, максимально устойчивые к рефакторингу. Думаю это лучше что можно сделать.
>>2610462 >говноланг Лол! Дежурное напоминание, что в джэве все обмазываются ломбоком и тормозным спрингом, который люди учатся настраивать годами, т.к. там столько магии и запутанного говна, что уже через год начинает фляга свистеть.
На гоулэнге же люди начинают писать в прод уже через две недели (максимум месяц) и при этом можно открыть любой исходник и разобраться в нем моментально. Про скорость компиляции, запуска приложений и скорости работы я вообще молчу - она обгоняет спрэнг и джэву на порядки.
>>2610503 Изначально джава тоже была такой. Ломбоки и спринги привнесённое. Я вот помню как в 2006 мы писали в Эклипсе ftp-сервер и клиент к нему без всяких спрингов, а только за счёт средств стандартной библиотеки. Всё было красиво, логично, понятно.
>>2610544 На голованге походу надо всегда писать руками логику, которая уже 15 лет как есть в спринге. И средний прикладной программист на голованге напишет хуже, чем написано в самых помойных частях спринга.
>>2610685 Pro Spring 6: An In-Depth Guide to the Spring Framework Learning Spring Boot 3.0: Simplify the development of production-grade applications using Java and Spring
>>2610697 Я пробовал читать на английском, но усвояемость крайне низкая. Подозреваю, что тут дело в том, что мантра на родном языке резонирует с нужной чакрой и сакральные знания сами подгружаются из дхараны. К примеру, как мавен подгружает зависимости из репозитория.
>>2610723 >Я пробовал читать на английском, но усвояемость крайне низкая У меня ровно наоборот, поскольку внимание к тексту гораздо выше, чем при чтении на русском, запоминается надолго.
>>2602200 (OP) >Фриланса на джаве за исключением майнкрафта нет, но там большие деньги не водятся. Это значит мне в лучшем случае нужно будет в 8 утра через весь город в какой-то офис ехать?
>>2611010 Есть удаленка, но меньше чем на не-тырпрайз бек-стеках. А для джунов еще меньше. Но у меня вот все в галере работают на удаленке, поэтому нанимают даже джунов и стажеров на удаленку.
>>2610741 Автотесты и CI не связаны никак. CI будет гонять ровно тот билд пайплайн, который ты сконфигуришь. Если этот пайплайн будет включать в себя запуск тестов, значит CI будет гнать тесты.
>>2611069 А автотесты? У нас вот пока их нету, прямо сейчас собирают qa-команду под наш проект. А наши юниты/интеграционные мы гоняем на пайплайнах. Каждый пуш в мр запускает пайплайн на 3-7 минут.
>>2611090 А ваши юниты и интеграционные тесты разве не автотесты?
Еще раз: тесты - это тесты, а CI - это CI. Просто тесты бывают разных уровней (гугли "пирамида тестирования"). Вы мейнтейните низкоуровневые тест-сьюты, а QA видимо вам запилят высокоуровневые регрессионные. Как правило, высокоуровневые тесты выполняются много дольше и тяжелее чем низкоуровневые, поэтому их выполняют реже. Например, не на каждый девелоперский коммит, а раз в полночь (когда один пень никто не работает и все CI агенты простаивают). Но как, когда и какие тесты запускать, определяется настройками билда в CI.
Следует ли мне включать ликвибейз в тестах? Или ставить тестовый профиль, в котором дать хиберу самому генерить таблицы. Просто вот какая проблема выходит, у меня в пете происходит в чейнжсетах вставка двух дефолтных юзеров админа и забаненного для удобства. Но из-за этого в теста, если я подрубаю ликвибейз, мне приходится в ассертах учитывать эти, заранее созданные, сущности. То есть, если я решу еще добавить юзера на этапе инициализации, то у меня все тесты сломаются. И че теперь ассерты постоянно менять и держать это в голове? По мне, хуйня какая-то, так не должно быть. Есть еще вариант: я делаю еще одну папку с ликвебейз в тестовых ресурсах и там убираю все вставки, но спойлер ликвибейз как-то сука находит, что у меня есть еще одна такая и заставляет все названия файлов внутри заменять, так что из этого делаю вывод, что держать отдельные файлы с миграциями под тесты вряд ли хорошая идея и мне ликвибейз как бы пытается на это намекнуть. В общем, че скажете по этому поводу?
>>2611248 Не, ты меня не понял, я и так пользуюсь тестконтейнерс. Ликвибейз всегда выполняет скрипт для поднятой в тестах базы, тк там нет его служебной таблицы с изменениями, база же чистая. Просто проблема в том, что в моих скриптах ликвибейза есть вставки в таблицы, немного, но есть, плюс я возможно еще какие-то буду добавлять. И эти вставки мне мешают, потому что я не могу с ними написать нормально ассерты, тк количество юзеров, допустим, может изменится, когда я в очередной чейнджсет добавлю еще инсертов. То есть, надо выпиливать походу эти вставки из скриптов миграций, вместо этого делать инит.sql в отдельной от ликвибейза папке, я только узнал, что их тоже там как-то спринг или хуйбернейт запускает, так что наверное так и сделаю.
>>2611267 Это как? У меня тест на эндпоинт для получение юзеров постранично. Я пишу там ассерт на сайз возвращаемого списка юзеров, сейчас вернется два и тест пройдет, завтра решу добавить чейнжсет с вставкой еще одного юзера и все тесты попадают
>>2611283 Данные через миграции вставлять надо в крайнем случае. И если вставил - нужно от него всегда отыгрывать. Например можешь перед каждым тестом вызывать sql скрипт с удалением вставленных через миграции данных.
>>2611287 А ну да, реально. Ебать я затупил чето, спасибо
>>2611288 А что вообще никак лучше не вставлять данные в бутстрапе или просто не пользоваться миграциями? Мб сделать вставки через сиквель скрипты, которые как волюмы прописать в композе, чтоб потом постгрес их запустил
>>2611212 >Следует ли мне включать ликвибейз в тестах?
Лучше включать. По совести, ченджсеты тоже надо тестить.
>Просто вот какая проблема выходит, у меня в пете происходит в чейнжсетах вставка двух дефолтных юзеров админа и забаненного для удобства
Вроде бы у этих штуковин можно отдельные миграции отключать в зависимости от окружения. Надо гуглить. В самом крайнем случае, если нет опции попроще, можно миграцию, которая нагоняет юзеров, вынести в отдельный модуль и ключать этот модуль только в прод.
>>2611410 Ага, открываю Фаулера и там в 3 главах типовые подходы использования веба - jsp и asp. Тогда рест только на бумаге был, а джейнсон только появился. Это как физику по монографии Ньютона учить.
А почему, если я просто делаю коммит в свой гитхаб в мастер ветку, то у меня не появляется зеленый квадратик? А если делаю в новую ветку, то тогда появляется запрос на пул реквест. Я его создаю, потом мержу и получается квадратик с 2 контрибьюшенами. Почему так?
>>2611561 Ясно, вот как вкатунойду с говнопоиском на его простыни отвечать, так сразу, а мне на коротенький микропиздочный вопрос с подвохом - хуй. Даже пробелов зажал, спасибо блять не искренне
>>2611571 Кинопоискодебил хоть вопросы по хибернейту задавал, а ты со своим гитхабом последуй в нюфаг-тред и захвати заодно таких же шизиков с докерами, дженкинсами, постгресами и js-фреймворками.
>>2611577 Гит и гитхаб имеет прямое отношение к любому языку программирования, каждый разраб обязан за него шарить но тк пишу на джабе, спрашиваю в этом треде. Да в принципе опытный жабист и за докер должен еще уметь пояснить и за дженкинс, так что ты во всем не прав, кроме жс фреймворков.
>>2611605 > имеет прямое отношение к любому языку программирования То есть не имеют прямого отношения ни к одному языку программирования. Со своими "должен" и "обязан" тоже можешь идти отсюда подальше. Тред про жабу, и сидят здесь аноны, которые в первую очередь знают жабу и технологии для жабы, не гит, не докер и другую оффтоп хуиту, которая нужна здесь не всем.
Вот не пойму. Спринг типа борется с шаблонным кодом, но при этом заменяет его на шаблонную конфигурацию, что ещё хуже. Если шаблонный код самоописательный, вполне можно понять, что он делает, то конфигурацию понять невозможно без прочтения талмудов. В итоге такой подход сделал только хуже, заменил программирование на магические манипуляции с конфигами.
>>2611824 Спринг бут избавил от необходимости писать эти конфиги вообще. Дефолтных хватает в 90% случаев. Но если тебе нравится пердолиться с каждым - то спринг не запрещает.
Людишки боятся код. Боятся со времен первых software кризисов времен 70х.
За десятилетия большинство людей так и не научилось кодить так, чтобы код не приносил боль и убытки, поэтому все грезят о том, чтобы количество кода было близко к нулю. В идеале - чтобы был no-code (или щас еще модно дрочить на chatgpt, кек), но спринговая конфигурация вместо кода тоже сойдет, ага. Типа: нету кода - нет и техдолга. Наивные.
Только вот первопричина никуда не делась, и по сей день ебашит разрабов, из-за чего на среднем и дальнем горизонте один хер что no-code, что спринг вырождается в говно. Те, кто прочувствовал на себе этот эффект, даже зная устройство спринга под капотом, называют спринг дерьмом, а его фичи - "магией".
А как обычно пишут тесты на всю систему? Типо на микросервис понятно, поднять тестконтейнерсами базу или кафку, прокинуть эндпоинт, посмотреть, что в кафке/базе лежит то, что ты и ожидал. А если этот сервис обращается к другим сервисам, а те в свою очередь к другим и так далее, то как это тестить? Это же нельзя по идее уже поднять тестконтейнерами. Понятно, что можно как-то их мокировать, я кста тож не знаю при помощи чего они мокируются но все равно надо же делать тесты на все сервисы одновременно. Короче объясните плиз, куда копать и какие технологии для этого используются
>>2612081 Типичная реакция культа. И нет, спрингом я владею в полной мере. Не пойму только че у тебя дупу то подорвало - я вроде выше спринг дерьмом не поливал.
>>2612103 А как ты это поднимешь? Предположим тебе надо поднять еще один сервис, который использует свой инстанс бд. И че делать, прописывать дохуища контейнеров базы, прокидывать их нетворки и датасорсы в каждый сервис, это же заебешься так делать
>>2612035 Ее сложно описать, не скатываясь в лонгрид, а краткий ответ один хуй не раскроет тему в должной мере.
Если вкрадце: переиспользование кода (техника, на основе которой стоит вся разработка ПО начиная с 60х и по сей день) - литералли синоним каплинга, со всеми вытекающими. Это не хорошо и не плохо - это просто данность, из-за которой ты не можешь не брать техдолг, у тебя тупо выбора даже такого нет, ты по определению "живешь в кредит" в тот момент, когда создал пустой проект в идее.
И сокращая количество кода, мы не мэнеджим, мы тупо маскируем эту особенность. А она никуда не девается. Поэтому выигрывая в короткой перспективе (где импакт каплинга на разработку мизерный и в разы меньше чем импакт от бойлерплейта), но проигрываем в долгосрочной.
>>2612100 >>Людишки >>Наивные. Сильное заявление. На каком основании такие высокомерные высказывания? >>все грезят о том, чтобы количество кода было близко к нулю Чем меньше подвижных частей и проще составные элементы - тем надежнее система. Код не исключение. >>no-code Там больше кода, чем в обычном приложении. Его нет только для макаки нажимающей кнопки на верхнем уровне. >>chatgpt К чему его приплел? он на вопросы отвечает, но сам ничего не создает. >>спринговая конфигурация вместо кода Спрингбутовые конфигурации вместо разномастных конфигураций на каждую отдельную залупу. Вместо кода там кодогенерация. Все это можно при желании написать руками как тебе угодно. >>на среднем и дальнем горизонте один хер что no-code, что спринг вырождается в говно В чем это проявляется? Системы становятся сложнее - инструменты тоже. >>даже зная устройство спринга под капотом, называют спринг дерьмом Это ты сам так решил? >>а его фичи - "магией". Это ж ирония. Только вкатун такое всерьез воспримет. Да, там много неявного. Но фабрики фабрик и тонны хмл нахуй не нужны,
Я тебе даже отвечать по существу не буду - ты сам не понимаешь в чем ты хочешь меня переспорить. Тебя то бомбит от того, что я высказал субьективное (все эти твои "сильное заявление"), то ты сам несешь субьективное ("только вкатун такое всерьез воспримет"), то тебя несет на типичную демагогию спрингокульта (типа дихотомии что "если не спринг, то миллион говнофабрик"), в то время как я ничего плохого про спринг не сказал. Считай, что я слился, мне похуй, я спрингокульт за достойных оппонентов в споре не котирую.
Насколько java-сообщество терпимо и гостеприимно для пришельцев с других языков? Если у меня есть 3 года на условном Python, и работаю старшим программистом (сеньором за 200к), то есть вариант вкатится в Java сразу мидлом хотя бы на 150к?
>>2612604 На моём языке всё тоже самое, докеры, sql, kafka, redis и всё такое. Не хватает типизации и серьёзных проектов, с которых не увольняют по дуновению шизы экономики
>>2612594 >то есть вариант вкатится в Java сразу мидлом хотя бы на 150к? Это возможно, если прямо хорошо покажешь себя на собесе. Не вижу особых препятствий.
Имеет ли смысл вкатуну в резюме напиздеть и приписать себе полгода-год опыта работы в нн компании? Или это палится очень легко? Прост как будто сейчас еще хуже стали набирать, чем в прошлом году. Во время могилизации знакомый быстро вкатился на неплохую зпху с такими же вводными как у меня сейчас даже чуть хужеу него даже выбор был какой-то а мне чет ща оч мало пишут, хотя я даж гитхаб оформил, рид ми написал вменяемый более-менее с инструкцией по запуску и скринами. Чет как-то руки опускаются, неделю уже почти резюме висит, отклики кидаю, но либо отказы, либо игнор. Еще заметил, что зепки будто упали, постоянно мелькают вакухи на 60-80 к вилку, а где-то вообще 60 потолок, в прошлом году мониторил хх и такого вроде не было. Может просто со временем не повезло, или айтишка реально потихоньку тонет?
знакомому еще со сбера много писали, звали на убер легаси с 8 жабой, а меня чет даже эти игнорят, хотя я уже на все готов
>>2612713 >Имеет ли смысл вкатуну в резюме напиздеть и приписать себе полгода-год опыта работы в нн компании
Скорее нет, чем да.
>Во время могилизации знакомый быстро вкатился на неплохую зпху с такими же вводными как у меня сейчас
Поговори с ним, спроси его историю успеха. Это будет всяко продуктивнее чем искать ответ здесь. Тут и так полон тред вкатунов в депрессии - это болото тебя затянет и не выпустит.
>>2612655 Java 8 и Spring 4 без всяких хипстерских бутов. Есть и более новые версии, но из никто не решается использовать в проде. Так что все эти java 17/spring 6 - хуйня для вкатышей.
>>2612739 Да говорил с ним кучу раз, делаю по тем же чертежам. Может действительно дело в неудачном времени? Не замечал кто-нибудь спада наборов в этом году? Или может я не в сезонное время этих наборов вкатываться начал?
я понимаю, я не самый обаятельный и приятный парень на свете, но чтоб…никто
>>2612757 Время реально говенное, но ты и сам уже это осознал. Нет смысла на этом зацикливаться - все уже случилось. И нет смысла обсуждать это с двачем - достаточно одного взгляда на /по чтобы понять что двач сегодня - площадка борьбы лахты с ципсо, и ты в этой борьбе - их пища. В ответ на свое "руки опускаются" ты щас найдешь тут такой ушат подкрепления, что сопьешься и роскомнадзорнешься нахуй.
>>2612864 Ну так уродливо я могу и без гуав и прочих свистоперделок, через .collect(Collectors.toList());. Но в том то и прикол, что это уродливо, и поэтому все, кто не обновляются до Java 17 - зло во плоти, ведь из-за них я не могу пользоваться этим методом красиво.
>>2612884 >это уродливо >зло во плоти >не могу пользоваться этим методом красиво.
Ты щас звучишь как ебанутый религиозный фанатик. Доебался до вшивого метода, а ору - выше гор, экстаза полные штаны. Проори "анафема" три раза еще, поп.
>>2612739 >Тут и так полон тред вкатунов в депрессии - это болото тебя затянет Кстати да. По себе заметил что как только в этот чумной барак заходишь так сразу плохеет. Одни унылые вкатуны и выебщики у которых единственная радость в жизни это выебываться на дваче ибо в остальном вероятно провал полный.
Выебщики выебываются, сомневающиеся ноют и сомневаються, нахуя это все...
>>2612853 >>Stream#toList() Почитал - это похоже единственная вещь ну мб текстовые блоки и свичи еще ради которой можно перекатываться на 17. Спринг то один хуй еще тестить будут пару лет, а рекорды все также бесполезны.
>>2612895 Ну вот меня очень расстраивает невозможность писать var если вижу 8 - прям фрустрация накатывает.
>>2612930 Ну а на меня фрустрация накатывает, когда порриджи начинают гундеть о "красивом" коде. Не типо- или потокобезопасном, не поддерживаемом, не производительном - красивом. Эстеты блять. Весь ебаный код уже "красивый", в рюшечках-анноташках, блять, а им все мало, давай еще красивше.
Ну ладно вары, вары впринципе неплохая фича, с точки зрения развития системы типов type inference - это прогресс. Но раскатывать телегу о сраном методе на стримах, или каких нить силед классах или свичах новых - да идите вы нахуй, выслушивать ваши оскорбления и мигрировать ради такой хуйни.
>>2612940 >>Весь ебаный код уже "красивый", в рюшечках-анноташках, блять, а им все мало, давай еще красивше. Ну вот я написал функцию на вебфлаксе и стримах на 2 экрана. Красивое. Боб был бы доволен.
>>Не типо- или потокобезопасном Ну тут жава со спрингом уже все сделали, там выебнуться особо нечем. Можно йоба запросы на сиквелке писать, но это не только лишь все оценят.
>>мигрировать ради такой хуйни. Так а если там больше и нет нихуя реально полезного? На 17 переходить будут только ради спринг бут 3, но я хз что там нового. Как то и не видно выступлений на джугах как третий все поменял, будто бы и не было ничего.
>Ну вот я написал функцию на вебфлаксе и стримах на 2 экрана.
Да-да, слыхали. Вас блять когда разговор об качестве кода заходит, всегда мотает из крайности в крайность. Типа, если не аннотации, то портянка на 2 экрана, иного быть не может. Заикнешься говорить о декомпозиции и абстрагировании - ответите что вместо двух экранов будет сотня файлов-модулей, и тоже иного быть не может. И только когда спринг или чатгпт за вас все напишет, вот тогда будет заибца. Непонятно только нахуя нужны вы.
И главное - написал какой то стрим на два экрана, зачем то рассказал об этом, и типа этот факт должен стать в этой теме чем? Аргументом? Опровержением? Какой вывод то?
Забей, короче, бессмысленно это все. Ни ты меня не переубедишь, ни я тебя.
>Ну тут жава со спрингом уже все сделали >типо- или потокобезопасном
>>2613006 Я тоже считаю его говноедом, но то что у него есть авторитет в индустрии - неоспоримо. Везде можно найти тимлидов, дрочащих джунов его книжкой.
Народ, всем привет. Подскажите нубу, как управлять и что правильно прописывать в /etc/profile.d/jdk.sh на linux? Вроде запускаю >sudo update-alternatives --config java >sudo update-alternatives --config javac И получаю >java -version >openjdk version "11.0.17" 2022-10-18 >OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu218.04) >OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu218.04, mixed mode, sharing)
Что, все это вручную менять? Нужна либа 11-jdk Вроде все установлено >sudo apt install openjdk-11-jdk openjdk-11-jdk-headless
Запускаю андроид из нативскрипта (т.е. без непосредственно управления из Ide и возможностей заюзать её настройки, полагаемся на JAVA_HOME) и получаю вот такую вот ошибку - > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. Your current JDK is located in /usr/lib/jvm/java-8-oracle/jre You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environment variable. - changing `org.gradle.java.home` in `gradle.properties`.
И не надо никогда джаву ставить из репозиториев линукса. В репах дистрибутивов та джава, которая нужна этим дистрибутивам, а не тебе как разработчику, и она всегда будет старая.
Юзай https://sdkman.io/. Через него поставишь и джаву, и мавен/градл, сможешь быстро скачивать апдейты, альтернативные дистрибутивы, переключаться между релизами и никогда нигде ничего не прописывать ручками.
>>2613280 А ну тогда точно работать там не смогу, меня даже дом отвлекают переодически от философских размышлений во время написания крудов, там тогда просто шум будет вместо мыслей. Буду морозить их до последнего значит.
Бтв, может кто-то подскажет бест практис, как взять побольше времени на подумать, когда дают оффер. И сколько вообще обычно просите, если не уверены, что пойдете?
>>2613220 Да по-моему я сам какую-то древнюю версию поставил, когда пробовал торрент-клиент один, который внезапно требовал старую версию. Я отошел от разработки андроида на время, и в это время вот нахимичил. А теперь не пойму,к ак назад вернуться. Не знаю, sdkman наверно для меня избыточная шутка. Мне бы понять, как поправить /etc/profile.d/jdk.sh и больше я в это наверн не полезу.
Для целей обучения и написания пет проектов кафку можно на винду поставить? Только начал с ней знакомство, пишут, что поставить можно, но какие-то проблемы возникнут. Во время обучения и петов я с этими проблемами столкнусь?
Есть у кого-нибудь опыт использования Докера и игр в онлайн-дрочильни одновременно? У меня круглые сутки напролет включена такая, и система защиты в ней ОЧЕНЬ НЕ ЛЮБИТ виртуальные машины. Никто истории не слышал, что из-за докера забанило кого-нибудь? Безопасно пользоваться?
Поставить линукс на единственный комп возможности нет.
Аноны, что выбрать: стажировку в мяскоте вк или работу ждуном в тир 2 конторе с зп х 1.75? Учитывая, что после стажировки могут и нахуй послать, а в другой конторе денег норм подниму и опыта релевантного не опущенным стажером, а ебырем программистом сам склоняюсь больше ко второму, но интересно ваше мнение, как бы вы поступили, оказавшись в такой же ситуации.
И еще вопрос, могу ли я ожидать х 2 от зп в случае успешного прохождения стажировки?
>>2613068 Вобщем, я хз откуда этот файл у тебя взялся изначально, но alternatives с ним скорее всего тупо не работает. В линухах вокруг джавы выстроена хитрая система из символических линок, и alternatives позволяет перключаться между несколькими версипями джавы в системе, апдейтя лишь эти линки (типа, предполагается что переменные окружения тоже будут указывать на пути с лингками, и их апдейт не потребуется). В файлы не лезет.
Ответ на твой вопрос сводится к вопросу о том, откуда вообще взялся этот скорипт. Может, ты сам его когда то по гайдам накопипастил и забыл? Или может быть его прописал android sdk? Я могу лишь посоветовать их обновить руками.
Можешь поискать тут еще тред андроидодевелоперов, и там спросить.
>>2613312 Как я это вижу: Создаешь массив интов размером (длина строки +1) Берешь рандомайзер интов В начало ставишь 0 В цикле ....смотришь очередной символ из строки ....если это I, ........то в очередной элемент массива интов ........кладешь рандомный инт в диапазоне от (инт из передыщего ........элемента массива) до (инт=длине строки) ....иначе ........кладешь рандомный инт в диапазоне от 0 ........ до (инт из передыщего элемента массива)
>>2613588 Я просто только начал с ней ознакомление, и мне сразу в гугле написали, что на винде с ней какие-то траблы, WSL2 или докер. Вот я и пришел подуточнить, испытаю ли я какие либо проблемы если мне чисто петы писать на ней.
>>2613656 > на винде с ней какие-то траблы В своих учебных хеллоуворлдах никогда с проблемами на винде не столкнёшься. Проблемы будут только на проде, как и с любым серверным софтом на винде, включая сам докер.
ПОМОГИТЕ ! Как сменить junit с версии 3.8 на новую ?!?! Intellij idea по умолчанию использует 3.8, но в зависимостях стоит 5.9 ! Вот ошибка: !!! JUnit version 3.8 or later expected
>>2613022 Можно как угодно к этому относиться, но в жабу никогда это на завезут. По уровню развития синтаксиса самая последняя жаба не дотягивает даже до шарпа десятилетней давности. Да куда там до шарпа, если type erasure до сих пор не выпилили. А всё из-за обратной совместимости, которой на практике нихуя нет.
Как заставить ебучую говноидею по настоящему делать сейволл после нажатия кнопки save-all, сука? Пишу какое-то изменение в код, делаю ктрл+ы, делаю mvn install, и... хуй, изменения в итоговой джарке нет. Как же заебло!
>>2614176 Хз что там в книге, но если ты хочешь использовать авторизацию через гугл/гитхаб, то сначала тебе нужно зарегистрировать своё приложение (получить ключи) в гугле/гитхабе
>>2614176 Нет, совершенно ничего не понял. Вот Адам Фриман в книге по ASP.NET последовательно строит своё приложение и можно пройти через все этапы и получить законченное приложение. А в книгах по джаве авторы откровенно плюют в читателя, видимо рассчитывая по-быстрому срубить деньжат на вкатунах.
>>2614234 Джава для меня не первый язык, поэтому алгоритмических задачек я нарешался ранее. Нас 4 года в универе пичкали лабами, где, как и на литкоде, всё сводилось к 3 действиям: 1. Привести данные к нужному виду 2. Применить алгоритм 3. Вывести результат 99% задачек с литкода именно такие. Когда поймёшь этот принцип, то будешь щелкать их как орешки.
А вот изучение Спринга упирается в отсутствие информации по нему. Она вся разрозненная и я не вижу общей картины. Ну допустим я научился крутить эти бины, а дальше что? Все книги на этом моменте обрываются. Практическое применение бинов никто не пишет.
>>2614239 Если тебе надо все от и до и в одном месте и ты не можешь искать инфу в интернете(читать доку, баелдунг и стековерфлоу), не можешь читать на английском, не можешь собрать все это вместе и применять самостоятельно - то выход только курсы или ментор. У отуса тысяч 300 стоят. Может скидку сможешь найти или курсы по спрингу подешевле. Ментор стоит тоже где-то тысяч от 3 за час.
>>2614252 Что значит не равно? Аннотации - это инструменты. Зная, что делает каждый из инструментов или хотя бы бОльшую часть можно запросто применить один или несколько из них для решения возникшей задачи. Если тебе надо забить гвоздь, а ты знаешь, что молотком можно забивать гвозди, то просто берешь и делаешь без задней мысли, вот и здесь так же. Да и в петах просто не бывает таких задач, которые сильно прокачают тебя в понимании спринга в целом, пока не попадешь в кромешный ад и пиздец на работу, хорошего владения технологией не достигнешь.
>>2610481 >>2610486 >Вот хорошо девочкам. Можно выйти замуж за программиста и самой стать программисткой. Если программирование передается половым путем, то наверно и мальчики могут ебать прогершу и становится программистами. Кто эта богиня, где стримит, как к ней подкатить?
>>2609293 Пиздец все кругом жалуются на то, что работу не найти. Че, реально такое говно и джуны с мидлами не нужны? И реально к джуну теперь дохрена хотелок, что на джунов только мидлы проходят?
>>2609311 >Это может плохо кончиться, одно мимолетное упоминание ЕО заставляет знатно просраться даже самых зажатых анальников. Бля, а чем он так страшен? Почему нельзя говорить, что читал ЕО?