Это копия, сохраненная 6 апреля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
- - Пять вопросов из предыдущего треда:
- - - - 1. Какую тему юзаете?
- - - - 2. А как профилировать веб сервисы?
- - - - 3. Это правда, что интервью будет длиться 1-2 часа? И будет +- 30 вопросов...
- - - - 4. Для тестировки в спринге JUnit достаточно будет? Для пета, чтобы на собесах показывать.
- - - - 5. Как понять, что компания, в которую ты собесишься, легаси?
Предыдущий: >>2596713 (OP)
Нах ты перекатываешь так рано, шиз?
она шарповый засерунчик
а почему это плохо? ты можешь один большой запрос сделать, который будет быстрее в разы, чем последовательность отдельных запросов.
Раньше они не оптимизировались нихуя. Плюс, с кривыми руками можно сделать подзапрос, который выполняется для каждой строки. И ещё пару кейсов. А так - ничего плохого.
Лолшто? Подзапросы разные бывают.
А на мейн сервисе, в котором это все добро создается, в контроллере или сервисе? будут рассылаться сообщения о добавлении чего-либо в определенные партиции. Хотя уже вижу проблему с тем, что мне бы не хотелось создавать кучу лисенеров разных партиций, а может как-то сделать через один, хотя тогда придется ифами разгребать, что там пришло, так что наверн будет даже хуже смотреться. Вопрос к вам, аноны, не видите ли вы каких-то очевидных для вас проблем в том, что я придумал с кафкой, куда все-таки будет правильнее инжектить кафкутемплейт, в контроллер или сервис или похуй и допустим, если мне понадобится синхронное взаимодействие с кафкой, как мне это сделать? Может заблокировать поток, пока лисенер очереди об успехе не получит подтверждение и снимет блок? и выставить таймаут конечно же
Кафка-листнер с темтлейтом это или сервис или просто компонент в папке листнеров.
Зачем тебе несколько партиций я не понял. Ты хочешь в один топик посылать несколько типов сообщений? Можешь руки обломать об десериализацию. А если дто для эвентов одно, то легче сначала ифами/паттерн стратегия.
Для сбора статистики было бы клево все же использовать готовые решения, а не костыли. В графит очень просто писать, например.
>Зачем тебе несколько партиций я не понял
а бл сори, я просто именно с кафкой пока не возился, думал тут партиция это аналог очереди, а оказывается нет
>>02416
да тут дело скорее не в статистике, а в том, что хочу прикрутить кафку, что бы было
ну и можно было бы рассказать на собесе, а то я скажу, что пользовался, меня начнут спрашивать зачем и почему именно кафка, я и не отвечу нихрена, ибо только для теста прокидывал и все, реальных задач не решал
давай бизнес-задачу, что ты хочешь по кафке передавать. И класс объекта/объектов, которые будешь передавать.
Какой именно статистики? Не каждая компания может позволить графит или прометей для сбора мониторинга
но допустим, я хочу каждую ошибку обработать сам, я создаю MyException, расширяющий RuntimeException и выбрасываю его при условии if (pageNumber < 0) throw new MyException(), которое потом уже ловит @RestControllerAdvice и обрабатывает его. при таком подходе не имеет смысла использовать эти валидаторы вообще?
ты предлагаешь возвращать код 200 и значение по умолчанию при неверном параметре запроса? и без исключений?
Это ирония...
в данном случае если пришло отрицательное pageNumber, то это действительно похоже на настоящую 400. Если такое поведение не предусмотрено системой, отдавай 400 и ругайся в лог ошибкой.
Я интегрировался с системой, которая принимала только post запросы и всегда возвращала 200 OK, а в теле ответа прилетал жысон, где мог быть код ошибки и сообщение...
идеальное поведение
>400
кстати, прочитал такое, проверил, но у меня все равно ответ 500 приходит, хотя, необработанное исключение от валидатора в консоли есть.
но мой вопрос был не про коды, а про исключения. в данном случае у меня валидаторы вообще не работают, потому что их исключения нигде не обрабатываются, а обработать их самому нельзя, как я понял. там исключение класса jakarta.validation.ConstraintViolationException, если я его даже буду как-то обрабатывать, оно будет общим для всех подобных случаев для всех эндпоинтов, где используются эти валидаторы. поэтому хз даже как его обработать, чтобы при одном исключении был ответ 400 с сообщением "страница неверна", а при другом "возраст неверный".
для этого приходится, как я уже сказал >>02452 создавать свои исключения и обрабатывать каждое отдельно, но тогда смысл в использовании валидаторов продает для меня. поэтому я не понимаю зачем они вообще нужны
хз, в терории это может иметь смысл, если об этом всем сразу известно. просто воспринимаешь как данность и ищешь конкретику в этом теле. в чем я не прав?
https://stackoverflow.com/a/33664636 BindingResult в параметрах контроллера и возврат списка ошибок и 400 в ResponseEntity или @ExceptionHandler(MethodArgumentNotValidException.class) в адвайсах.
Ошибок валидации может быть много. Так можно будет вывалить список правильных сообщений об ошибках на фронт.
К сожалению. Писали студенты и вкатыши, которые потом очень быстро срулили с конторы
Смотри, лично сталкивался с таким. Делаю запрос в сторонний сервис findById. По части ид оно не может ничего найти и отдает 500 с описанием "не найдено".
После некоторого количества таких "не найдено" даже по корректным мне начинает выдавать 500 - потому-что сработала эта штука. Раз 500 - значит сервис сломался и не стоит его беспокоить.
Как рестододики отличают бизнес-ошибки от реальных ошибок?
>просто воспринимаешь как данность
Словно у меня был выбор. Это огромная легаси-хуитка, которой очень много лет.
Если findById не найдено в текущем сервисе это 404 с ответом, что не найдено по id.
Если не найдено во внешнем сервисе по id - то 500 с ответом, что проблема с внешним сервисом.
Если текущий сервис сломался, то 500 с дефолтным или без сообщения.
Найти тех студентов-додиков, ставших техлидами и спросить с них.
челики в коде кидают new RuntimeException("Не найдено"), которое на выходе дает 500.
Думаю большая часть так послупает
Вообще до фига кто так делает. Ибо если твой API плохо ложится на REST и коды HTTP, то абсолютно похуй что там возвращать клиенту.
А любое не-CRUD API плохо ложится на REST.
нет, не найдено это 404
Для внешних сервисов меня кастомный EsxternalServiceException, который маппится на 500.
Многие не ловят и получают от хттп-клиента не прописанный в адвайсах наследники RuntimeException, которые мапятся на 500 с дефолтным сообщением или пробросом эксепшена.
вот я и говорю, что из-за реста получаем
new RuntimeException("Не найдено")
new RuntimeException("Бюджет не сведён")
new RuntimeException("Упала БД")
Все они мапятся в 500
А я говорю что надо различать бизнес ошибки и общее падение.
new MyBusinessException("NOT_FOUND", "Не найдено")
new MyBusinessException("BUDGET_NE_SWEDEN", "Бюджет не сведён")
new RuntimeException("Упала БД")
первые две должны выдаваться 200 с кодом. Третья это честная 500
>Как рестододики отличают бизнес-ошибки от реальных ошибок?
Никак, рест нужен только потому что это единственный стандарт WebAPI кроме SOAP, который ещё большее говно.
А он и не против. Твои действия?
Штаны не обмочи, ссунишка.
Есть два сервиса, внутри которых через вебклиент летят запросы на микросервис. Мне необходимо получить ответ от первого сервиса, у ответа получить айдишник и с этим айдишником отправить запрос через другой сервис. Получается как-то так:
huitaService.makeRequest(request)
.handle((response, sink) -> {
yobaService.makeRequest(response.getId())
.onErrorResume(e -> ...)
});
Мне нужно, чтобы после второго запроса, если возвращается 200 – нихуя не делать. Типа такая-то сущность имеется, все ок, валидация пройдена, можно заниматься бизнес-логикой. Но проблема в том, что второй запрос не выполняется, что логично, поскольку никто на него не сабскрайбится (наверное) и идея ругается, мол, Value is never used as Publisher. Подскажите, как быть в таком случае? Вместо handle что-то другое вызвать?
Ебаный Абу, все форматирование кода к хуям полетело, но надеюсь суть ясна
так только долбоебы пишут
>>Value is never used as Publisher
>>никто на него не сабскрайбится
ну так сделай субскрайб или в ретурн какой нибудь закинь
Абупидор удалил архив программача.
ФлэтМап
я сейчас везде эти @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)
я ее пробую гуглить, там что-то говорят/обсуждаю/кто-то так же как и я нихуя не понимает. как это вообще работает все? что ему надо?
я на сисярпе писал последний раз лет 6 назад и это была лаба5
Под кроватью искал?
Опять ты пидр со своим кинопоиском, забей уже на него хуй, а пост не идемпотичный метод, сделай пут
диднт рид пост
Ясен хуй не дрочил, ведь у всех жабакодеров проблемы с потенцией
в основном потому что они 40 летние скуфы
Мне 20,я футфетишист и че
Не пытайся наебать, это прокатывает только на лабах. За диплом тебя несколько месяцев будет ебать научрук, смотря код и требуя запускать его с разными данными. Если научрук не знает жабу, он не разрешит тебе писать диплом на жабу и выберет для тебя другой язык. Это конечно если у вас там не конченая шарага, после которой наличие диплома приравнивается к отсутствию вышки.
ещё в армейку сходил
Я там учился, но диплом писал на петухоне.
Спизди готовые примеры в либах и потом подредактируй под свои нужды, кнопки перекрась, всегда так делаю, когда что-то на фронте надо сделать
У меня рест микросервисы,шаблонизаторы закрыл как только увидел эту уебишную простыню похожую на хмл
>Не каждая компания может позволить графит или прометей для сбора мониторинга
Оба под лицензией апаче 2.0, то бишь бесплатные. Если ты о стоимости железа - тут уже вопрос, готов ли бизнес платить за метрики. Не готов - да и хуй с ним, значит не будет метрик.
У меня есть проектик с ваадином,мне проще будет его скопировать и переделать сущности. Однако там столько дыр если копать,я до сих пор не понял как в комбобоксе выдавать имя,а забирать айди поэтому у меня в комбобоксе тупо айдишники,что выглядит как пиздец. Я бы лучше еще сервисов нахуячил,докер бы добавил,что угодно только не фронт,ненавижу это поеботу пидорскую
Это интерпретация анекдота про американского,русского,хохла и гору с медведем?
не обязательно сбер, есть много других подобных, где не ебут мозг с алгосами
Сап, порекомендуете вкат в Жабу, или перспективнее начать изучать Котлин? (желательно, чтоб и для десктопа и для мобилок удобно было)
Для изучения котлина тебе всё равно придётся сначала учить жабу.
Десктоп на жабе мёртв как апплеты.
Нахуя? Упаковывай в спрингбутовый жарник со встроенным томкатом, его и дебажить можно, и хотсвапать.
Пиздуй в сишарп,нам конкуренты не нужны
У нас железо есть. А вот дево-песов нету. Есть 4 админа и в девопесинге кое-как натаскался только 1 из них. И на него огромная очередь. Поднятия и настройки прометея ждем уже не первый месяц.
Писал на джаве, фронт дедал на отъебись на ваадине с хуевой версткой. Никто ничего не смотрел, код даже не заливал на гитхаб, потому что в моей шараге всем было похуй.
Алишев идёт нахуй, а Spring MVC ничего не мешает юзать с бутом, как и весь остальной спринг.
То есть будет рационально сначала изучить Spring Boot, а затем изучать Spring MVC ?
собираешь варник (.war файл), кладешь его в /webapps папку в работающем томкате, томкат его автоматически распаковывает и запускает
Да. Но бут и изучать толком не нужно, берёшь шаблонный проект со start.spring.io, добавляешь туда нужный стартер для MVC и начинаешь писать своим контроллеры и вьюхи.
кнопочка create archive
makeWar();
в папку target твоей приложухи. Подключаешься по фтп и копируешь свой варник на сервер. Ещё в томкате начиная вроде с 8 версии ввели версионирование варников, переименовавываешь .war##002 и оно на лету переключает на новый и старый вырубает. Хочешь откатить - удаляешь новый и оно возвращает старый
А что в том же яндексе намного больше платят, чем в тир 2 конторах? Или там нет легаси?
моно это сишарп обрезанный.
Тебе в /ukr/
>Также раздражает отсутствие возможности задать дефолтные параметры метода
Эххх вот бы оверлоадинг был...
Наоверлодь мне методы с одинаковыми типами параметров
Яндекс это не про деньги, а про "интересные" проекты. В обычном месте ты будешь использовать спринг, кафку, кубер и прочее "скучное", а в яндексе - пилить свои велосипеды в режиме стартапа и писать список ниггеров, которых должен убить белый господин.
>>Или там нет легаси?
Компания не вчера появилась, там дохуя легаси. Вилок хватит на всех.
>Имеет ли смысл пытаться пробиться в тинькоф или яндекс
Если готов выделить полтора-два года на подготовку к собеседованию - то почему бы и нет.
>условный сбер
Попасть на порядок проще (достаточно посмотреть на пассажиров уровня Бугаудинова, Пирова или VladЫКУ). Со старта будет примерно те же деньги, что и в Тиньке или Яше, но на дистанции в 5-7 лет кратно меньше. Ну и сбер - это крест на карьере и профессиональный застой.
Я бы лучше без работы сидел.
>>03157
Фу, блять, хохол.
Если такая жесткая проблема с кадрами, я бы посоветовал выбить все доступы и сделать самим. Так будет быстрее всего и проще.
Вот поэтому тред и не надо так быстро перекатывать, чтобы шарпоблядская залупа типа вот этого шиза не приползала сюда срать.
Так это шарпоблядь перекатывает, чтобы другим шарпоблядям было удобнее здесь срать.
> Если готов выделить полтора-два года на подготовку к собеседованию - то почему бы и нет
В том то и дело, что не готов, хотя я на начальном этапе вката читал толстую книгу по алгосам и структурам, при том вдумчиво читал несколько месяцев, параллельно кодил сам всякие деревья и сортировки. Но задачки с литкода, это другое, на них тоже нужно потратить месяца 2 минимум, что сделать я не могу, ибо и так вкатываюсь больше года.
> на дистанции в 5-7 лет
Так а разве оставаться на одном месте больше 2-3 лет не мовитонище для айти? Разве что у тебя на одном месте есть стабильное нехуевое развитие в тч финансовое, но тогда и на дистанции получать ты будешь не меньше, чем яндехе тем более слышал про годовые премии в сбере 20+ процентов от годовой зп Во всяком случае лучше прийти в яндех условный с годами опыта за плечами и лычкой мидла, чем вкатуном, работы нормальной не нюхавшего. Мне каж людей с релевантным опытом и по алгосам не сильно гонять будут.
> Ну и сбер - это крест на карьере и профессиональный застой
Это вообще не понял, почему крест? И застой, как я писал выше, проблема решаемая, можно просто свалить будет на другое место, когда подобное почувствуешь
>Во всяком случае лучше прийти в яндех условный с годами опыта за плечами и лычкой мидла, чем вкатуном, работы нормальной не нюхавшего.
Ровно наоборот, в яндекс нужно идти джуном или не идти вообще.
Мне кажется разница между тем, придешь ты в яндех сразу или через два года с опытом только в том, что во втором случае у тебя будет два года опыта, а все остальное, это твое воображение. Если бы яндех думал как ты и делал ставки на ждунов при том, что как и все остальные набирает их поминимуму то давно бы сдох
>Мне кажется разница между тем, придешь ты в яндех сразу или через два года с опытом только в том
В том, что не яндексе у тебя будет зп на 40% выше, чем в яндексе.
Давай я перефразирую. С 2 годами опыта в яндексе тебе будут платить значительно меньше, чем в средней компании. У джуна же разница будет несущественной + возможность получить крутой опыт на старте.
Понятно. Конечно этот тренд с алгосами, перенятый у западных контор, шиза полнейшая, имхо.
А что ты хотел? У той же яши даже в маркет три алгосекции и в конце контрольная на сисдиз.
Как это не виноват? Каждый из них виноват...
>сисдиз
Это че? А про три алгосекции, это конечно пизда, всегда ж писали про две задачи, одна из которых одноклеточная, когда уже будут заставлять весь литкод прорешивать, вот тогда заживем
Ладно, я загуглил. Пизда какая-то, это джуну вообще нахуя знать, спрашивается?
Алгосы - это блеф, по факту все равно смотрят на годы опыта подбирая позицию и стараются залоуболить тебя ниже рынка. Пару лет назад проходил собес, у меня тогда было около 3 лет опыта, алгосы решил оптимально и до конца собеса, потом просто пиздели с собеседующим. Я не супер силен в литкоде, скорее всего повезло с задачами, но тем не менее.
В итоге предложили свою мутную схему с акциями, где я в первые годы получал меньше, чем любой из офферов в другие компании на тот момент. Хорошее прохождение алго не повлияло вообще ни на что.
Алсо, иногда пишут их рекрутеры, созваниваемся, говорят, мол, вот вы у нас собесы хорошо проходили, может снова пройдете, вам просто будет. Но чет как-то уже и не хочется.
>В итоге предложили свою мутную схему с акциями, где я в первые годы получал меньше, чем любой из офферов в другие компании
сколько?
>мол, вот вы у нас собесы хорошо проходили, может снова пройдете, вам просто будет
Они всем пишут. Даже если ты завалил собес, то тебя снова позовут. У них кулдаун после прохождения собеса где-то год или два. Зовут всех у кого хоть немного совпадает резюме по требованиям. Но 99% срезаются на алгоритмах и сисдизе.
Трюк с акциями больше не работает, после недавних событий. Теперь там только зэпэшка.
Порядка 200к, если память не изменяет
Ну может у тебя большой опыт за плечами, а для таких понятное дело, что алгосы большого влияния не окажут. Мне кажется, что даже если в гугл прийти вообще ни одной задачки за всю жизнь не решив, но при этом имея опыт работы с технологией на нужную им позицию, которую они давно не могут закрыть, то конечно тебя возьмут и похуй, что ты не знаешь о существовании биг О или еще какой-то хуйни. А в яндекс как писал анон выше надо идти ждуном, а ждун ничего не может предложить кроме алгосов
>Мне кажется, что даже если в гугл прийти вообще ни одной задачки за всю жизнь не решив, но при этом имея опыт работы с технологией на нужную им позицию, которую они давно не могут закрыть, то конечно тебя возьмут и похуй, что ты не знаешь о существовании биг О или еще какой-то хуйни.
С какой технологией? Если ты только являешься ее создателем. Иначе на рынке тысячи и десятки тысяч кандидатов, которые дрочат литкод годами, чтобы попасть в гугл.
>С какой технологией?
Хибернейт, например
Вообще проще тогда на девопса выучиться пока прогаешь, заранее выбрав проект, где его нет, и потом идти в любую тир 1 компанию
есть 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());
ПОЧЕМУ Я ЗАДАЮ ЭТОТ ВОПРОС: потому что я не понимаю, у меня не работает мой, если хибер должен такого рода запросы обрабатывать, либо я ожидаю от хибера то, что он не умеет делать, и сижу битый час дрочу эту хуйню...
Не знаю, как по хиберу. Но запрос с третьей картинки явно против реста и здравого смылса. У жанкра должен быть свой контроллер и репо.
>У жанкра должен быть свой контроллер и репо
Бред, у жанра и фильма слишком сильная взаимосвязь, передавать жанр отдельно нельзя тк он часть дто
А ты разве не знал?
Во-первых, перестань делать айдишники числами, есть UUID.
Во-вторых, жанры - это словарь, который практически не будет обновляться, у него должны быть свои ресты для обновления и изменения. Другие сущности не должны менять эту таблицу, только ссылаться на нее.
При создании фильма ты должен только брать готовые айдишники жанров, в идеале их тебе уже должен присылать фронт.
что значит против реста? отсутствует id? я и с id пробывал, один хуй не добавляет нчиего в таблицу. я просто подумал, если хибер может получить объект и рекурсивно его вывести через дтошки те же, то возможно он и должен так же уметь добавлять в бд эти объекты. но он добавляет только поля типа string, long, date и т.д. пользовательские классы он так не добавляет.
и я не понимаю, так и должно быть? или это у меня в коде что-то не так написано/сделано? или я не понимаю принцип его работы? я же ему описывал все эти сущности и связи. но зачем? если он не может по этим связям что-либо сам сделать?
у меня возможно решение - это делать только так (пик), но это выглядит абсурдно, я передаю 2 тела, одно из которых - часть другого. второй момент - я обращаюсь к разным репозиториям, что как по мне - не правильно (могу ошибаться, опыта нет). и что возвращать в таком случае в контроллер даже не ясно - третий момент.
Есть вариант, сделай жанр енамом, а поле жанра в энтити сделай через аннотации elementcollection и collectiontable, еще сделай коллекцию с жанрами сетом
>Во-первых, перестань делать айдишники числами, есть UUID.
что дает uuid? не нужно создавать вспомогательную таблицу? или что?
>Во-вторых, жанры - это словарь, который практически не будет обновляться, у него должны быть свои ресты для обновления и изменения.
да, у меня есть пока эндпоинты только get и post для них.
>Другие сущности не должны менять эту таблицу, только ссылаться на нее.
кто какую таблицу не должен менять? вообще не понял что ты имеешь ввиду. у меня где-то какие-то сущности меняют что-то? у меня в сущностях описаны поля только и их связи.
>При создании фильма ты должен только брать готовые айдишники жанров, в идеале их тебе уже должен присылать фронт.
ну я так себе и представлял. вот ситуация:
админ хочет добавить фильм, его клиент уже получил список жанров по эндпоинту GET api/genres в виде
>id
>name
когда админ получил это все, у него это отобразилось в виде какой-то gui формы, по которой он клацает
итак, админ вводит заголовок будущему фильму и выбирает несколько жанров, после чего жмет на кнопку добавить
формируется запрос POST api/movies с телом запроса (ВОПРОС каким?)
я предполагаю, что клиенте я должен сформировать это тело запроса по правилам сущности Movie, чтобы контроллер понял с чем имеет дело. и это тело должно быть похоже на 3 пик от сюда >>03407
но в таком случае у меня вставка не выполняется полноценная, добавляется только заголовок, никаких связей с таблицей жанров хибер не делает при такой обработки (пик).
поэтому, я вижу только вариант с работой с несколькими репозиториями. сначала я добавляю в репозиторий фильма заголовок, затем, извлекая id добавленного фильма и id пришедшего жанра в теле запроса Movie, я добавляю эти идишники в связную таблицу movie_genre. и на этом этапе вроде все нормально, вот только я не знаю что теперь возвращать ответом... добавленный фильм, который еще надо будет прогнать через свое DTO?
ну тогда да, мэни ту мэни мапинг, жанр делать отдельной сущностью с репозиторием и контроллером. А мапинг юзера с жанром ты предлагаешь производить отдельным запросом?
А как ты предлагаешь? Кино не может существовать без жанра, жанр же напротив - может нет фильма с таким жанром еще в библиотеке
Получается вставлять кино без жанра логически неверно. Можно конечно доставлять их с фильмом массивом сделать название жанра айдишником или массив айдишников жанров отправлять, потом как-то изьебнуться и написать маппер, который по ним достанет жанры из базы и просетает в сущность фильма
Нет, мапинг при создании фильма. Но если жанра нет в таблице жанров, то ошибка. Типа как вот >>03459 на этой картинке.
Но это вроде хибер должен делать, каскадно сохранять связанные сущности. Там надо какие-то каскадные параметры указывать и mappedBy
https://stackoverflow.com/questions/4935095/jpa-hibernate-many-to-many-cascading
я не понимаю, можно ли в контексте хибера рассматривать many-to-many как one-to-many+many-to-one через 3 таблицу? т.е. это полноценный эквивалент? или нужно использовать именно ManyToMany с двумя таблицами? но в таком случае хибер создает 4ую таблицу, мне это не нравится, поэтмоу я предпочитаю явно создавать эту вспомогательную таблицу
Возьми книжку и доку по хиберу и погугли по стековерфлоу. Тут эти подробности никто не помнит или не знает.
Many to many создаст одну таблицу дополнительную, а не две
это же субд? разве не полностью из другой оперы? хотя я сильно не углублялся, может они реализовали что-то
да братишка, жаль помочь тебе не могу, но шлю лучей поддержки. не сдавайся
и забыл добавить, у меня тут даже проверок нет на существующие жанры, т.е. это еще + доп запросы к бд. и так же надо будет проверить существование стран, актеров, ролей, ведь чисто в теории может придти кривое тело запроса. как такие случаи вообще обрабатывают в продакшене?
с чего это я мусор, я же в отличие от тебя на шее у мамки не сижу давно. мы уже давно с анонами над тобой рофлим, советуем хуйню какую-то, чтоб ты подольше поебался со своим говнопоиском, а ты до сих пор не выкупил, жаль тебя. вкатусик, спок
c какими ты анонами рофлил? ты один сидишь желчью плюешься.
представили его ебало? еще походу и проецирует свою действительность на окружающих.
У жанров указываешь только айдишники/другие первичные ключи или. Сохранение делаешь в транзакции, если не будет такого genre_id в movie_genre таблице, сохранение фильма ролбекнется и ты выдашь на фронт ошибку, что ничего не сохранилось.
Я тебе выше написал, что это делается иначе через параметры mappedBy и cascade в @ManyToMany
Конечно.
Непонятно, зачем ты вообще создал MovieGenre сущностью, если можно было просто использовать Genre и @ManyToMany c @JoinTable, которые сами бы завела под это дело такую табличку. И не пришлось бы так ебануто маппить.
Единственный тонкий момент - обновление Movie не должно обновлять таблицу Genre и уж тем более удалять оттуда записи. Думаю, это можно как-то обработать через cascade, погугли.
Нет. Только на Spring Data уйдет от полугода для уровня джуниор.
Ну смотри, у меня есть емпти проект просто для хранения модулей (микросервисов). Я же не буду его весь в .жар конвертить, так?
Смысл емпти проекта исключительно в хранении микросервисов под одной крышей на этапе разработки.
но у меня не ManyToMany, у меня через OneToMany / ManyToOne связи построены. я не могу отказаться от этого все равно, потому что у меня есть еще случай с другими таблицами, где первичный ключ строится по 3 полям. мне надо как-то решить эту проблему, а не переделывать связь в контексте хибера
вот этот индус https://www.youtube.com/watch?v=kzsGuDcAGkE использует ManyToMany и каскады, но все равно обращается к другому сервису, чтобы вставить машины по id...
не понял, ты же делаешь докер пул на твой имэдж из кубера по сути, значит у тебя должен быть отдельный контейнер под модуль, пишется один манифест через хелм чарты и потом пушится в кластер с заменой некоторых переменных
мимо вкатыш
Пустой проект под микросервисы это какая-то хуита.
У тебя или по репо на проект или монорепа, которая пускает твой код на машины через твой git-провайдер и ci-cd дополнительными конфигами в общей репошке. И с кубером монорепы вполне сочетаются.
https://dev.to/kgunnerud/our-experience-monorepo-with-java-maven-and-github-actions-2aho
Ну и что!? Тоже придётся учить
Сука, я на вашем ебучем хибере даже не пишу.
Устройся на работу и там сенек спрашивай эту хуиту.
Я такое говно сохраняю 2 запросами - один инсерт в основную таблицу и еще один батч инсерт во 2ую.
C сте вообще одним запросом можно.
А че он меня заебывает. Ажтрисет.
вообще какая схема разработки микросервисного проекта от первого шага и до прода?
ну тип отдельно сперва создаешь каждый сервис и потом...что?
мимо другой анон
бля ну ты и мудак, берешь сначала создаешь и вставляешь кино, потом то же самое делаешь с маппинг сущностью, которую ты хуй пойми зачем создал. если жанра нет, с которым мапишь то создаешь новый
я читал про это. я не понимаю как это применить в моей ситуации.
>которую ты хуй пойми зачем создал
может блядь затем, чтобы создать первичный ключ по двум полям, а не два внешних ключа, которые хибер генерит?
Нужны машины на которых будут крутиться контейнеры с сервисами. Нужны машины/виртуалки/контейнеры где будет крутиться корпоративный гит и корпоративный ci-cd, кубер, нексус, бдхи, распределенные кеши, кафка, api gateway, sso-сервер, сервис-дискавери, проперти-сервер и другие прибабахи.
Потом все это долго и упорно дружишь между собой одним из множества способов.
Потом по нажатию одной кнопки один/все сервисы катятся на дев/тест/демо/прод/етк площадки.
долбоеб, в чем проблема такого способа, ты можешь обьяснить или нет нахуй?
>не два внешних ключа, которые хибер генерит
какого хуя у тебя вообще генерэйт ддл не выключена, ты что даун? поставь себе уже миграции и создай, че ты там выдумал своим шизойдным мозгом
1) Становишься монстром уровня сбера, втб, яндекса или озона
2) У тебя есть куча серверов, куча девопсов и админов, куча разработчиков
3) У тебя есть куча денег на оплату этим дармоедам
теперь можно начинать разрабатывать микросервисы
jsp это из 2005, thymeleaf из 2010
Вот пускай тогда девопсы и ебутся с этим говном. Ко вкату в джаву это не относится.
Только замена такая же отстойная. Ещё больше удивляет, что за столько лет не смогли сделать что-то на уровне Razor из ASP.NET.
Признайся, что ты даже не искал.
Это имя покемона.
Дота сама себя не поиграет. Аниме само себя не посмотрит. Змей сам себя не выгуляет.
>Ко вкату в джаву это не относится
Вкат в джаву к этому треду отношения не имеет. Вкат пиздуйте обсуждать в мы вам перезвоним >>1647485 (OP)
А это тред для разработчиков-джавистов.
Были бы здесь разработчики, никто бы не заикался о шаблонизаторах и кинопоисках.
Ну и платиновый вопрос: Сущности в ДТОшку и ДТОшку в сущность лучше переводить в контроллере или в сервисе?
Если дочерние сущности на 100% будут использоваться только вместе родительской, можешь их репозитории юзать в одном сервисе, к примеру, есть заказ (Order) и его состав (список из OrderItem). Если сущности независимые, например, заказ и товар (Product), лучше инжектить сервисы, а соответствующие репозитории юзать только в сервисах для них, так можно в сервисах делать общие проверки, не зависящие от других сущностей.
Для ДТО-шек правильнее написать конвертеры и положить их рядом с контроллерами, потому что ДТО и, как следствие, конвертеры, зависят от их потребителей, т.е. для веб-клиента будут одни ДТО/конвертеры, для мобилок - другие, для десктопа - третьи, для интеграций с другими приложениями - четвёртые.
Загугли про каскад тайпы, нихуя там не надо инжектить, само все вставится или замапится
Вычти время на работу (40+5 часов в неделю + поездки в офис, если не удалёнка) и сон, вот столько свободного времени и остаётся.
Нагрузка на работе ощущается одинаково, джуну дают немного простых тасок, более опытному дают больше сложных тасок, которые в силу опыта делаются быстрее, в итоге времени и сил уходит примерно одинаково. Хотя смотря куда попадёшь.
Если первые полгода будешь проебываться, то или вылетишь или просто проебешь все возможности для роста, как разраба.
Первый год вообще надо работать по полной и после работы доучивать технологии и читать книги.
Я бы не хотел прям проебываться, тем более в рабочее время, просто боюсь, если я буду приходить домой и опять садиться кодить, и так 7 дней в неделю, то выгорю через эти полгода или запишусь к психотерапевту. Вообще есть ли тут недавние вкатыши, которые уже ждуны, как вы там? Впахиваете по 14 часов в день или дома о работе особ не задумываетесь?
Люблю коммитить по 50 файлов за раз, но пишу осмысленные сообщения, а неочевидный код комментирую. Вообще любую задачу делаю в один коммит, иногда несколько задач в одном коммите. Иногда по нескольку дней не коммичу, а если закоммитить всё же надо, делаю amend. Потому что мне похуй и потому что могу.
Стикеры на ноут на клею, это же кринж на уровне футболок с миньонами.
Если яблоко не светится, то кринж однозначно.
Считаю контрибушки на корпоративном гитлабе.
Если сделал меньше 2 - считаю себя в этот день мошенником.
Если сделал больше 20 - считаю, что мне в этот день сели на шею и надо попроебываться обязательно в следующие дни.
Ну я скоро год, как джун. Днем из 9 часов часа 3-4 проебываюсь на дваче. А после работы час-два ковыряю библиотеки или читаю книгу. Не каждый день уже, но через день.
Первые три месяца на испыталке мог по 14 часов в день пилить таску, если она с наскока не выходила. Но как находил решение - даже тогда давал себе пару часиков рабочего времени попроебываться.
Норм, а то с вечным нытьем про выгорания и жалоб на свое психическое здоровье от прогеров, не знаешь даже, чего ожидать.
Ну среди моих знакомых про выгорание много ныли или те кто вообще программирование не любит и чисто ради бабок работает. Или те кто на очень поганый проект попал. Или то и другое вместе.
Я с поганого проекта в говноконторе ушел с испыталки. А в нынешней галере мне более-менее норм.
>Нахуя вам дрочить эти упражнений на сообразительность?
Если ты планируешь всю свою недолгую карьеру грести в каких-нибудь захудалых провинциальный веб-студиях, которые на аутсорсе говнякают очередную CRM для местного завода за копейки, то литкод дрочить не нужно, т.к. на собеседовании тебя будут ебать скоупами бинов в спринге или уровнями кешей в хубирнейте. Как только ты решишь высунуть нос из своего болота и попытаться устроиться в компанию чуть выше уровнем, и я не говорю про МЯСКОТ, с ним все понятно, ты увидишь, что даже средней руки компания гоняет по алгоритмическим задачам, а некоторые даже втыкают несколько этапов тех. собеседования, например.
не знаю, что такое мяскот, но у меня представление, что в компаниях выше-среднего, когда ты приходишь туда с опытом - от тебя требуют знания технологий и фраемворков. и тебя гоняют как раз по этим знаниям, говорят типо, вот нам нужно создать вот такой сервис, как ты его будешь делать? и ты описываешь подробно как будешь применять разные фраемворки и технологии - причем, наверное, всякая сортировка тоже пригодится (но это знания значительно ниже, чем те что получают дроча литкод). возможно, я не прав. но у меня такое вот представление.
>когда ты приходишь туда с опытом
Да всем похуй на твой опыт. Твое резюме даже читать не будут. Это в каком-нибудь замшелом бодишоп-аутсорсе в провинции тебя возьмут без вопросов. А если сунешься в компании покрупнее, то быстро заметишь, что твой опыт никого не волнует и если ты литкод не умеешь решать, то дальше с тобой не о чем разговаривать.
Ты нах сюда из мвп протек?
а ты где работаешь?
Скетчепидор, в вебстудиях не бывает джавы.
Почему никто не написал книгу JVM via Java, где были бы расписаны все эти моменты? Как вот про них вообще узнавать? Наверняка там ещё 100500 подобных штук запрятано.
чел, мне копания в этом говне реализации хватает и на рабоче
Меня жаба интересует исключительно с коммерческой точки зрения. Академический интерес у меня к C++.
>MockMvc
постоянно пользуюсь. От замоканной апишки до базы в тестконтейнере. По большой части такие тесты и пишу.
>TestRestTemplate
ни разу не пользовался. Обычно просто мокаю обычный RestTemplate
Ты ведь даже на сайт Oracle не заходил?
The Java Virtual Machine Specification, Java SE 19 Edition.pdf
The Java Language Specification, Java SE 19 Edition.pdf
Ты ведь даже на сайт Oracle не заходил?
The Java Virtual Machine Specification, Java SE 19 Edition.pdf
The Java Language Specification, Java SE 19 Edition.pdf
Да.
Конечнo xml.
Мне продали вопрос с душных собесов
О них никто и не вспоминает, пока они сюда срать не приходят.
Получается, вся надежда на тебя! Перепишешь эти доки на русском - сам научишься и других научишь.
пусть Шипилев пишет
Бочку.
Чтобы сообщение мерджа писалось. Больше коммитов - мощнее лапищи.
чтобы не ковыряться с ребейзом. Мердж проще и безопаснее
Всю жизнь.
Это из 4 junit. Ищи как работать с тестконтейнером из 5ого. https://www.testcontainers.org/test_framework_integration/junit_5/
Принял, спасибо
Это рофл такой? Я ващет серьезно спрашивал
Если Оракл возьмёт на меня на работу хотя бы за 30к рублей, то готов даже написать книгу JVM via Java.
А какие еще компании кормят дармоедов? Я бы хотел туда устроиться и стать еще одним дармоедом
Ладно.
Джунам дают хуй на пососью.
Совсем нулевым нет, если поработал несколько месяцев, то могут.
Ещё часто сеньоры формально указывают лояльного джуна ревьюером, чтобы он сразу же поставил аппрув, т.к. без хотя бы одного аппрува нельзя подмержить.
Написал текст для браузерной текстовой ролевой игры с возможностью выбора из двух вариантов.
Схема такая:
Текст 1
Выбор 1,2
Текст 1 в зависимости от выбранного варианта
Текст 2
Выбор 3,4
Текст 2 в зависимости от выбранного варианта
...
Теперь планирую написать фронт (реакт) и бэк (спринг) с регистрацией и возможностью учёта прогресса прохождения игры. И вот встал вопрос: Где хранить собственно сам текст? В бд и по айди постепенно подгружать на фронт? В файле? Сразу на фронте но просто постепенно его открывать?
Тебе точно нужны спринг и реакт для такой задачи?
Если текста прям овердохуя, типа 100 мегабайт, храни в БД, ну или пиши свою СУБД поверх файлов. Если текста так мало, что можешь целиком прочитать в ОЗУ, храни в файле. Отправлять или не отправлять на фронт весь текст, решай в зависимости от того, хочешь ли ты, чтобы кто-нибудь хитрожопый мог весь текст прочитать заранее без прохождения.
Так а я больше ничего и не знаю
Размер игры 50к слов если учитывать все разветвления. Это много или мало?
Мало, можешь загрузить всё в ОЗУ. Но сделай какую-нибудь хешмапу, где в ключах id, будет быстрее работать.
Понял, спасибо.
Достаточно, даже борду сможешь запилить, но о рестах можешь забыть. При нажатии на кнопку будет отправляться HTML-форма с полной перезагрузкой страницы.
Зависит от задачи.
Учу джаву третий месяц.
Когда мне следует заводить гитхаб и начинать в него что-то коммитить?
Будет ли гитхаб иметь какое-то преимущество когда начну откликаться на вакансии?
Что вообще писать? Просто я думал что сначала нужно выучить необходимый стек, а уже после пробовать что-то написать, но многие говорят что нужно писать что угодно уже с теми знаниями которые есть. типа это доказательство твоего серьезного настроя и т.д.
Как себя представить в интернетах? Ну т.е. я у маммы хиккан с одним телеграмом и явно же этого мало. Чем стоит обзавестись и главное КОГДА? Линкедин? Джемейловская почта? Это прям пиздец какой темный лес для меня, я вообще не понимаю как себя подать и чувствую что из-за этого будет тяжко. В том же гитхабе как себя представить? ФИО? А ник придумывать?
Да, сравнительно немного. На каком-нибудь слабом дешёвом VPS разница между простыми файликами и хотя бы SQLite будет ощутимой.
Примерно как наличие диплома магистра: кому-то важно, но почти всем похуй.
Пет-проект ты пишешь для себя, чтобы закрепить знания на практике. Заодно научишься пользоваться гитом. Если ты всё же уверен, что очередной гитхаб вкатуна с типовыми проектами заинтересует того, кто видит десятки таких гитхабов в неделю, и не хочешь светить ФИО, придумай нейтральный ник, не pizdohryak2004, не рандомный набор символов, а что-нибудь произносимое, но такое, что сходу не поймёшь, что это слово означает.
Линкедин нужен, если тебя почему-то не устраивает хедхантер. Про почту натыкался на статью с мнением эйчаров, где писали про кринжовость почт на мейле/яндексе, но большинству опять же похуй.
На вдс со 100 мб оперативы jvm не запустится. Всё это можно хранить где угодно и просто подгружать по мере необходимости.
Сука, подгружать при загрузке JVM, хотел сказать.
Короче линкедин, хедхантер, почта гугловская, в гитхабе побольше зеленых квадратиков и похуй что учишь джаву только два месяца - ебашь уже сейчас с тем что есть. Все правильно понял?
Ты нихуя по моей душной простыне не понял, так что поступай как тебе в нюфаг-треде насоветовали.
Да. Если видишь в каком-нибудь полумёртвом треде посты с большим количеством текста, то знай, что это всё я.
Пиздец душнила, ой ужас.
Ну и я попробовал в транзакции метода вызова одного репозитория вызвать другой метод другого репозитория и заменить объект другой сущности(внутренней), а он мне ошибку сыпет, грит что беда
Ошибка звучит так через постман: Error: Transferred a partial file
А в консоли пишет: Cannot call sendError() after the response has been committed и java.lang.StackOverflowError: null
Репозитории только делают запросы и возвращают данные. Можно хттп клиент тоже сделать репозиторием и слать запросы(но обычно это делают сервисом/компонентом).
Сервисы обращаются к репозиториям и другим сервисам. И там происходит любая другая логика. Отправка сообщений по почте/ в брокер сообщений, вызов интерсепторов, всякие расчеты, любое говно.
Контроллеры обращаются только к сервисам.
> большинство проектов на том же гитхабе и видео всяких лекторов - там как раз это.
Потому что это учебные проекты, там не может быть сложной логики. В реальных приложениях 95% кода как раз в сервисах, десятки проверок, обращения к другим сущностям, отправка данных в другие системы, какие-нибудь вычисления.
>>05288
> StackOverflowError
Так быть не должно. Это либо магические JPA, которые хуй знает как работают, либо ты реально вызвал из первого метода второй, а из второго - первый. Поставь брейкоинты или хотя бы пиши в лог, поймёшь, в чём дело.
Потому что ты потом в адвайсах смаппишь свое кастомное исключение на конкретный хттп код, а просто рантайм эксепшн это обычно 500.
>Почему выбрасывать из сервисного слоя рантайм эксепшн это плохо
Почему плохо? Это - неизбежно.
Рано или поздно по закону мерфи ты проебешься и прошляпишь эксепшон, он не обработается и приведет к ошибке 500, которую фронт отрендерит как "йоу, у нас тут бэк обьебался опять, лол, петухи позорные, передавайте свои пламенные приветы в наш саппорт, кек".
Смаппишь на 200 OK { "error_message": "Balans ne sweden" }
>третий месяц.
Целенаправленно заниматься "раскруткой личного брэнда" на гитхабе с целью выбить себе преференции при трудоустройстве, если ты - никто и ничего из себя в профессиональном плане не представляешь, бессмысленно. Через гитхаб на джуномиддловом уровне можно качать скиллы, лабая петы или пронимая участие в разных проектах, но карьерные преференции он начнет приносить только когда ты - синьор с несколькими годами стажа и ниибаца-контрибьютор в "звездные" проекты.
А пока, просто расслабься, сделай ебало попроще и ищи первый вкат на ХэХэ.
я бы в мвп треде спросил, но там меня затролят или проигнорируют
Это говорят тролли из МВП-,треда.
Просто забей и сложи в ресурсы. Когда ресурсов станет мало, перенеси наружу в файлы.
Идея хранить свой "любовь, деньги, рокнролл" под СУБД того не стоит. Профита ты с этого не поимеешь, а работать тебе с текстами будет тупо тяжелее. Одно дело - найти очепятку в файле, поправить и сохранить, другое - искать очепятку по блобам, а потом править ее SQLем.
Аргумент про "если текстов овердохуя значит файлы не подходят" - хуйня из под коня. Схуяли - текста меньше чтоли станет от того что его в блобы под СУБД упаковать, или как это по мнению местных должно работать?
Айтишники впринципе друг друга ненавидят, и грезят прикончить карьеру ближнего своего. Не зря их анальниками зовут - самый крысиный и подлый народец на свете. Сразу выстраивай ментальные барьеры, иначе эта кодла тебя сожрет.
Вместо редиса надо использовать редукс.
Если "просто чтобы было", можно рассмотреть редиску как сторедж для пользовательский сессий. Типа, хранить там инфу о том, где юзер остановился, плюс переменные состояния мира (ХП, сделанный выбор, который будет иметь последствия по ходу истории).
А чем по твоему получение доступа к тексту в СУБД или редиске будет быстрее чем получение доступа к тексту с файловой системы? Ты еще не уперся в этот боттлнек, а уже предлагаешь оптимизировать. Напрасно.
В конце концов, фронт же хостит свою статику голыми файлами, и ничего. Интернет не развалился, как был 30 лет назад на HTML-документах, так и остался.
Ну скажем поиск по простому файлу же будет медленнее, чем если как-то достать из базы при старте и закэшировать, хотя я не уверен, никогда ничего нигде кроме базы не хранил
Че бля?
Ну у меня тут возникает сразу ряд встречных вопросов.
1. Что ты собрался в этих файлах искать? Судя по условию задачи треда (отрендерить "некопару" через веб, с поддержкой авторизации и сессий), эти файлы нужно типо достато по имени, отрендерить в соответствии с состоянием мира и показать на фронте. Все.
2. Поиск по тексту не с пустого места становится быстрее. На его скорость влияют индексы. База умеет строить индексы по тексту, да, но это еще не означает что БД - единственный и максимально оптимальный под задачу способ индексировать документы. Плюс - индексы даются незабесплатно, имеют разные характеристики и трейдофф. Поэтому тут опять таки все упирается об вопрос - что ты собрался искать в тексте визуальной новеллы про бесконечное лето?
А мож тебя сдеанонят? Я уже начал писать дианон скрипт на жабе
Ты нас с этим долбоёбом в один ряд не ставь!
А по поводу текстовой игры. А как оно в том же бесконечном лете и других таких играх реализовано?
Ну ладно, значит получается ему надо как-то организовать этот файл в виде графа просто и на фронт его как-то подкачивать по запросу?
Так эти игры десктопные, анон же хочет вэб игру с полноценным бэком как я понял
Так это соляной и бумкнул. Хочет сказать "вот, вы меня заблокировали, за это получайте жопу с кишкой".
Селениум бы мне в этом помог?
Попал на проект, а там 17 джава и помойный ломбок со спрингом. Лид-дуралей считает нормальным, когда у бина по 10-15 зависимостей, ведь конструктор самому писать не надо или вайрить поля руками, т.к. повесил аннотацию и ломбок тебе все сгенерировал. Аж тошнит от этой хуйни. В коде хуй разберешься. Как быть в такой ситуации? Разве это норма использовать ломбок?
Лучше увольняйся! Не доводи до греха!
Здравая мысль. Даже не знаю, какого совета я ещё ожидал. Спасибо.
Это проверка как с полотенцем которое на пол бросают. Согласился писать — кьюбикл будет около уборной.
Учишь литкод и идёшь в фаанг или яшку без спрингаии ломбока, работать на из велосипедах.
>Согласился писать — кьюбикл будет около уборной.
Как будто у айти-пидоров без опыта есть другие варианты.
>нормальным, когда у бина по 10-15 зависимостей, ведь конструктор самому писать не надо
Ну а ты бы как сделал? Сократил количество зависимостей на бин, но увеличил количество блинов в разы? Я считаю, что так сложнее было бы.
Как хочешь.
Обычно все пишут загоавными.
Это ты еще не дошел до интерфейса, который реализует один класс оканчивающийся на *Impl
это были далекие нулевые/десятые и достаточно было сделать тестовое задание с крудом
а есть ли в среде программистов пренебрежительное отношение к залетышем вкатунам без тех образования?
Да всем похуй на образование, ты знания покажи, а скорее всего знать ты будешь нихуя, если не учился нигде. Джун(!) с дипломом начинает только через год +- приносить пользу
Так получай сам знания, всем пох, но это маловероятно, что сможешь, я не встречал таких, можешь стать первым
Брутишь месяцами все хотя бы отдаленно подходящие вакансии на хх, откликаясь сотни раз в неделю. Идёшь на собесы, собесишься. Пишешь тестовое, если дадут после собеса.
кстати, еще видел, что некоторые обьясняли предвзятость к тем, кто без образования - что они якобы ленивые и не заканчивают дело до конца и все такое - слышал такое среди всяких лидов и хрюш. так вот, стоит ли мне указывать свою вышку не ИТ спецы в резюме? или на нее тем более всем похуй.
а я думал прогеры без ит образования не редкость, лол, а ты о таких даже не слышал..хм
А есть какие-то преимущества от этого?
Я вот стажировался на проекте с монолитом. И там проекте было около 40 подмодулей по подсистемам разбито.
И части модулей спринга не было вообще, в части только для di, а контроллеры например на ee. Где то джава конфиг, где-то хмл. Бута не было нигде. И деплоилось все на внешний томкат руками, перенося собранную варку. При том, что проект 2016 года выпуска, то есть 5-летний на тот момент.
Убежал оттуда, сверкая пятками.
другой анона
лучше собирать десяток логов со всех сервисов и исктать пропавшее сообщение в кафке?
Да никаких преимуществ, переползаем с древнего говна мамонта Java EE на современный стек, понятное дело, что одномоментно никак этого не сделать.
Это может быть не один файл, а по файлу на скрин. Отдельные файлы и на фронт прокачивать проще.
а я ток недавно в энергосы вкатился, монстр не застал.
адреналин тож пью.
но ваще очень давно пил неск раз драйв ми и торнадо, во думаю ради эксперимента взять
Просто напомню, что spring MVC работает поверх сервлетов, а Hibernate - референс-имплементация JPA. Так вот и вяжется. Чуваки ищут опытного чела, что зрит в корень и адекватно эрудирован, отсекая предложение анноташкоклепателей...
...либо HR обьебался)
ты не пиздабол
один мой знакомый очень ругался на такие энергосы
как тебе поможет знание ее в контексте фреймворка? ты любишь часами выворачивать его кишки и рыться в них? я вообще не понимаю тех, кто любит в исходниках говна, которое писало 1000 индусов что-то смотреть. вы ебанутые.
Зеленый борщ...
бтв оцените тему от 0 до 10
Данная схема еще актуальна для вката? Вижу там много полезного. https://coggle.it/diagram/WqgTTNMJtPiHph_q/t/java-development-in-2018
Если да, то как учить пикрил? Эти же вещи все должны быть как-бы в последней версии джавы?
Ну написано в шапке же всё.
Во первых, это не схема для вката, это майндмапа, с помощью которой можно сравнить свой майнд с вообще всей джавой и прилинкованными к ней сущностями.
Во вторых - а что тебя смущает? Гуглишь "Project Jigsaw" или просишь ЧатГПТ объяснить, вникаешь, на каждую ноду майндмапы тратишь по минут 30.
я такой же вкатунойд, поэтому квалификации для ответа не хватает
Это значит, что эти шняги были добавлены в этой версии в JDK и остались там навсегда.
Я так предполагал, но мало ли, спасибо
Эксепшн за тебя гуглить не буду. Но помню, у меня какое-то говно вылетало в логах только на винде из-за всл-ного докера. Но работе не мешало.
По тестам. Порядок тестов в junit не гарантирется. И если у тебя эти тесты прошли, значит скорее всего сперва выполнился второй, а потом первый.
По идее надо после каждого теста чистить базу от данных. Удобнее всего через @Sql(scripts = "clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD), но можно и в @AfterEach попердолитья.
Ну и я надеюсь, что ты понимаешь что тесты на спрингадатовские методы писать вообще не надо. Разве что у тебя какой-то серьезный запрос в @Query
>Ну и я надеюсь, что ты понимаешь что тесты на спрингадатовские методы писать вообще не надо
Как быть, если лид заставляет мокать репозитории?
>Эксепшн за тебя гуглить не буду
я загуглил, но ничего не нашел по этому поводу, поэтому решил здесь спросить
>если у тебя эти тесты прошли, значит скорее всего сперва выполнился второй, а потом первый
нет, дело не в этом у меня инсерт роллбэк делает в конце. возможно, я что-то не указал, или там выставлено специально так, чтобы не чистить базу постоянно хотя все делаю по тем немногочисленным гайдам, что есть в инете. но разве это не правильно, чтобы так было? я где-то читал, что тесткейсы не должны афектить друг-друга.
>тесты на спрингадатовские методы писать вообще не надо
это знаю, просто разбираюсь пока, что к чему
еще у меня идея подствечивает контейнер, типо почему он не в трае с ресурсами, хотя везде, где я видел примеры, было именно так и написано
В каком смысле? Писать тесты чисто на апишку или на сервисы с поднятием контекста?
Замокал твой поганый рот.
А меня то ты че спрашиваешь, я чтоли эту вакансию писал?
Опять начались какие то виляния жопой и торг на публику, что нужон, что нинужон. Казалось бы - считаешь что тебе это для карьеры не нужно: взял да гордо молча прошел мимо, но нееееет, надо кому то чето доказать, дать обоснование своей лени и невежеству.
Контекст не поднимаем. Лид заставляет писать юнит-тесты на спринговые сервисы с бизнес-логикой, а обращение к базе через репозитории мокать...
Скажи ему что он сука шарповская.
Ну по идее ничего в этом такого нет, видимо для взаимодействия с базой есть другие тесты, а ты проверяешь правильность работы какой-то бизнеслогики в сервисе
Если писать такие тесты на все сервисы - то это говно. Почитай у Хорикова про хрупкость тестов.
Сервисы и связь между ними постоянно меняются, удаляются, добавляются, рефакторятся.
Но если есть сложный и критичный метод в сервисе, то можно перестраховаться и протестить.
Он заставляет писать послойно. Если один сервис зависит от другого, то сначала пишется тест на сервис A, где мокается репозиторий и какой-нибудь сервис B, который в А в виде зависимости. Затем пишется тест на B, где есть зависимость на сервисы C и D...
>что тесты на спрингадатовские методы писать вообще не надо
Я правильно понимаю что имеет смысл писать тесты только на сервисы и контроллеры + ну там всякие ютилы и т.д.?
>Почитай у Хорикова
https://www.manning.com/books/unit-testing зыс?
А что на пике? У Хорикова какой-то доклад был?
Да, она на русском есть.
А скрин из его презентации по его же книжке https://assets.ctfassets.net/ut4a3ciohj8i/4ZgFYiz3tn2fCPjxTPDM0f/9d537da6eabad3fda77731586ffbf23c/Vladimir_Khorikov_Printsipy_yunit-testirovaniya_2021_08_25_13_10_52.pdf
>>06038
Дискуссионный вопрос. Из того, что лично я стараюсь писать всегда: Тесты на эндпоинт. От апишки и до тестконтейнера. И юниты на кастомные валидаторы.
Если есть зубодробительные запросы в репо или сложный сервис, то тоже иногда стоит написать.
Тысяча строчек... Это надо чтобы все было изи и на автомате. Если нужно написать тысячу за день и еще при этом мозг напрягаешь... Вскипеть можно.
>Тесты на эндпоинт. От апишки и до тестконтейнера
Так это вроде не юнит-тесты, а интеграционные и очень дорогие. Сколько ты ждать будешь пока на огромном проекте все тесты запустятся? А ведь у тебя контекст каждый раз поднимается на каждом тесте...
>Ну и я надеюсь, что ты понимаешь что тесты на спрингадатовские методы писать вообще не надо
и как проверять что эта хуйня нагенерировала?
бесполезные тесты. Каждая ручка должна иметь как минимум один интеграционный тест, и в процессе проверять что данные в базу положились как надо. Больше всего проблем - это как раз между базой и приложухой
На микросервисах 100-1000 тестов, ходящих в базу это 3-10 минут. Но все внешние сервисы мокаются.
Такие интеграционные показывают, работает ли твой эндпоинт. Это от 1 до 7 тесткейсов на эндпоинт.
Не вижу смысла в юнитах в большинстве случаях честно говоря. Юнитов можно написать сотню на эндпоинт, написать криво и проверив 10 слоев бинов, мучаясь с моками ты что-то проебешь в их взаимодействии. И эту сотню тестов нереально потом прочитать и отревьюить. А потом при каждом маленьком изменении треть из них ломается.
Ты про абстрагирование слышал. Если тебе нужно проверять каждый раз, что инструмент делает за тебя, его основной функционал, описанный в доке, то его нужно просто выкинуть.
>Если тебе нужно проверять каждый раз, что инструмент делает за тебя, его основной функционал, описанный в доке, то его нужно просто выкинуть.
согласен. В своем проекте я бы не стал юзать спринг дату и хибернейт. Но ведь решения принимаются до меня и за меня всякими восторженными зумерами, начитавшимися хабра и не осмеливающихся пойти против current things
Мне приходиться терпеть, т.к. мой лид - большой выдумщик и изобретатель велосипедов. Не так давно он накостылял очередь поверх монги и даже запилил свое виденье кафки на редисе.
Ну кидай ему цитаты из книжек и докладов или терпи его выебоны.
Наоборот в джава мире - хибер это дефолт для скуфов.
И я не понял, что тебе там надо перепроверять у хибера в методе findAll и save?
>что тебе там надо перепроверять у хибера в методе findAll и save?
findAllByIdAndHutikaOrderByZalupkaLimit...
Вот так, при этом я никаких транзакций не делал руками
шиз, ты же сам говоришь
>Чуваки ищут опытного чела, что зрит в корень и адекватно эрудирован, отсекая предложение анноташкоклепателей...
так ответь на вопрос
>как тебе поможет знание ее в контексте фреймворка?
>Опять начались какие то виляния жопой
вот именно, нет чтобы на вопрос ответить
Я предположил, недоумок, а не утверждаю. Ты прицепился к первой части цитаты, проигнорил вторую и чето еще смеешь от меня требуешь? Пошел нахуй.
Хорошая попытка, но нет. Недостаточно тонко.
установить линукс
>Я предположил
т.е. твой поток мыслей заканчивается на предположении, и дальше ты никак не способен это подкрепить? грош цена твоим высерам
Подман десктоп.
Перекатывайся лучше в шарп, там в разы проще найти легаси парашу , может даже без фреймворков.
Да-да, сказало чмо, которое ищет в сети подкрепление своей никчемности, а когда не находит - срет. Все, обтекай.
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.
Тутор отсюда: https://resources.oreilly.com/examples/0636920034452/-/blob/main/installing-java.md
А сама папка с jdk может быть расположена куда-угодно? Просто я распаковал зип файл на рабочий стол в папке
в винде есть глобальная переменная PATH. Когда в консольке набираешь команду, оно пытается искать по всех путях, указанных в PATH. Вот чтобы javac заработал тебе надо пусть к /bin жабы вставить в этот PATH. Обычно это делает установщик
Ну в этом примере - при сохранении обычно возвращается какое-то CreateUsetOutDt. И в мокмвс смотришь что тебе вернулось. С большой вероятностью если вернулось неверно, то и сохранилось неверно. Но если нужно перепроверить, то инжектишь репо и смотришь сохранилось ли.
А ок, а разве рестемплейт не устарел тоже? Вроде спринг пишет, что надо использовать вэбклиент, хотя я не понимаю, как это работает, если он реактивный, а ресурсы к которым он обращается нет
Входные и выходные джейсонки хранишь текстовыми файлами в тестовых ресурсах и вычитываешь оттуда в строчки. Особенно, если они большие.
Ответ сверяешь как .andExpect(content.json(expectedJsonSting))
или как .andExpect(jsonPath("name").value("some name"))
Какой перекат? Какой чат гпт? Что за сокращения? Пошли лучше вместе рассказывать, какой джавараш плохой и спорить с градлистами!
Спасиб, но я так сделал, потому что мне надо получить сгенерированный хуибернейтом юид, чтоб потом в базе проверить, есть ли такой юзер, просто когда отправлял пикрил, еще не написал эту логику.
2000 постов помнеш
Чятики в телегах.
В любом случае, таким ранимым на дваче не место
Подожди, а как мне тогда делать экспект статус код и прочую хуйню как обычно делают в мокмвс?
Это получается надо гет фор энтити писать, а не фор обжект и ассертами разгребать? Так это по-моему менее удобно, чем через мокмвс
Тебе ресттемплейт может возвращать твои же дтохи
> не понимаю, как это работает, если он реактивный, а ресурсы к которым он обращается нет
Тупо вешается коллбек, который вызовется при получении ответа и выполнится в пуле тредов.
Нуб, модель - это весь предметно-ориентированный код приложения, где содержится бизнес-логика без привязки к представлению, все сервисы, сущности и репозитории.
В C#.
Если так активно кормить шарпоблядей, как в последние две недели, скоро и МВП-тред обгоним.
А чем хорошо?
Загадка от Жака Фреско. У тебя интерфейс, у него одна имплеиментация, и ты заранее знаешь что больше одной имплементации у этого интерфейса никогда не будет. Смысл иметь интерфейс?
Играли в ООП/SOLID/DDD/DI, получили процедурщину.
Точнее можно написать тестовую реализацию и инжектить именно тестовую реализацию бина. Иногда это намного удобнее, чем ебаться с мокито.
шарпобляди
А легче ли?
Ведь единую имплементацию интерфейсы не от хорошего дизайна обычно имеют. Обычно интерфейс с единой имплементацией получается из-за того, что интерфейс уже сам по себе перегружен низкоуровневыми деталями и тяжело скаплен на много чего. И обычно такие интерфейсы очень часто меняются, что не упрощает создание и поддержку множества имплементаций. Ну замокаешь ты его - получишь ломучие бесячие бессмысленные говнотесты, которые не тестят нихуя, но которые нужно постоянно переписывать.
>>06781
Если б реально просто было бы сымплементить интерфейс, созданный под единичную имплементацию, такой интерфейс не был бы интерфейсом с единичной имплементацией, разве нет?
Restassured
Ну я изначально имел ввиду то, что мапить через обжект маппер как-то слишком западло каждый раз, особенно если дтоха большая, но мне анон ответил вроде, что они уже готовые в файле лежат и ты их оттуда считываешь. Еще другой анон написал, что мокмвс легаси и надо рестемплейтом, и я везде вставил его. Ну точнее тестрестемплейт, обычный я не понял, какой аннотацией автоконфигурится, самому мне конечно же впадлу его создавать. Еще не понимаю, какого хуя, если ставишь вэбэнвайромент проперти на рандом порт в аннотации @SpringBootTest, то он мне конфигурит сам тестресттемплейта, а если нет, то хуй.
>анон ответил вроде, что они уже готовые в файле лежат и ты их оттуда считываешь
Можно так, а можно текст блоками вставлять, и идея даже подсвечивает синтаксис.
>Еще другой анон написал, что мокмвс легаси и надо рестемплейтом, и я везде вставил его
Он тебя затроллил.
Что не так?
Мокмвс никакое не легаси. Реальный код с прода тебе никто не даст посмотреть. Но зайди поищи на гитхабе, посмотри туториалы. Большинство тестит через мокмвс. Это самый распространенный подход.
В любом случае текстовый блок в классе жабы хуже форматируется, чем текстовый файл с джейсоном.
Скажи спасибо шарпоблядям.
Мне делать нехуя. Давай учить вместе твой ебаный хибернейт.
давай беру желтую сумочку и вези мне уже энергосы блять с яндекс лавки, делать ему нехуй блять. давай! нехай лениться
>>06858
Отработал сегодня, тасочки все закрыл. Выходные.
Самому пет делать неохота, идей нету. Книжка не читается.
Работу по выхам я пообещал себе больше не ковырять, даже если хочется. Есть коллеги, кто работают в выхи. Если они запалят, что я тоже работаю по выхам, они на шею сядут и не слезут.
ты шиз
Какие? Можно список технологий, которые бустанут резюме спринг-крудошлепу?
Будет пикрил.
Нужен какой-то ответственный и шарящий чел, который будет раздавать доступ к репозиторию по запросу и отклонять пулреквесты шарпоблядей ну и говнокод еще, короче по сути на вторую работу устроится а это все не про меня. Ну еще и идея создания говнопоиска мертворожденная, тк с фильмами сейчас дефицит сами знаете из-за чего.
ты дурак? какая разница какая обстановка с фильмами - мы будем пиратский сайт клепать
Тогда, как мне кажется, лучше уж не ограничиваться фильмами и запилить видеохостинг на замену ютубу, ему все равно недолго осталось
Ну вот видишь. То есть код то многие не прочь пописать. Но быть тимлидом, пмом, админом, аналитиком и прочее никто не хочет. Я бы тоже не хотел делать ревью, мерджить релизы, придумывать и доебываться до фичей с бизнесовой точки зрения, создавать репошки и раздавать права.
А по первой это все должен делать один человек в анонимном пете-стартапе.
Ну какие очевидные проблемы ты видишь у джавы, из-за которых это не является реализуемым?
Да ничего
У джебы нет библиотек для обработки видео.
Ну распиши тогда ты, как ты видишь этот видеохостинг - убийцу ютуба. Для проектирования системы нам не нужен даже репозиторий на гите. Квадраты можешь чертить в пейнте и скидывать сюда.
> нет библиотек для обработки видео
По классике, ты даже не гуглил
> распиши тогда ты, как ты видишь
Сейчас впадлу, может когда проснусь. Хотя у меня нет опыта в таких вещай, так что будет хуйня скорее всего, но это не значит, что невозможно что-то вменяемое придумать.
Буду ждать твои картинки с квадратами утром.
>По классике, ты даже не гуглил
Гуглил кстати. Год назад делал недо-пет с качалкой видосов, плейлистов, аудиодорожек, с возможной нарезкой с ютуба. Ну там есть готовая библиотека-качалка поверх хттп-апишки. Я прикрутил там сто строчек логики и джавовую обертку над ffmpeg, чтобы резать файлы.
Кстати версии видосов с разрешением выше 720 ютуб раздает без звука. И аудиодорожку надо качать отдельно и слеплять. Это тоже надо было делать через ffmpeg, но я на этом моменте заболел и потом забил на проектик навсегда.
А зачем что-то качать с ютуба для своего видеохостинга? Чтобы наполнить хотя чем-то его? Ну это же можно и в ручную сделать понемногу
Незачем. Просто рассказал контекст в котором я гуглил про обработку видео на джаве.
Мои мысли короче такие. Я не особо шарю, на экспертность не претендую.
Из обработки там нужен будет конвертер в стандартный пониженный битрейт с стандартным кодеком и загрузка в стандартных разрешениях 1080-720-480-360-240. А может и 1440 и 4к. Это основной функционал. Под это дело нужен один сервис с кучей оперативы, который будет скейлиться на несколько нод.
Потом может еще и нарезку при загрузке можно ввести. И все это если и делать на джаве, то из того что есть в попенсорсе это библиотека с тонкой обертка над ffmpeg.
На спринге можно сервисы комментов, регистрации и личного кабинета, описания видосов, сервис истории посещений и прочей анальной слежки и прочие крудовое говно написать.
Но проблемы будут еще в хранилке. Там сходу терабайты файловых хранилищ нужны будут.
Короче нужны хост с 16+ оперативы для начала, хост хранилка типа s3 на пару террабайт, недорогие хосты под крудовые сервисы штук 5, под сиайку, постгрю и под кафку. Это самый минимум.
Слышал мнение одного чувака, который, наблюдая за повадками джунов чат-гптфагов у себя в конторе, подмечал их резкое отупление. Типа - раньше норм были челики, планомерно учились-развивались, но как открыли для себя чатгпт и копайлот, дегенератнулись в нулину, пишут парашистый код, чаще лажают, мыслят необьективно, короче пропащие типа.
Интересно, насколько этот эффект системен.
что-то звучит как "ой вы от телефонов своих отупели уже" от бабок-срак. по-сути чатГПТ - что-то типо гугла или стаковерфлоу. только ответы генерируются сразу и ты можешь уточняющие вопросы задавать и чатгпт из контекста понимает о чем ты.
Аналогично по методам. Вторая итерация гораздо читаемее чем его последняя, с кучей однострочных методов и сайд эффектов. Сам же пишет что сайд эффекты плохо, что теперь вызов метода зависит от порядка вызова других методов, и сам же это делает.
Если бы эти условия проверялись ещё в одном месте - сделал бы метод
По поводу комментов я согласен с ним, по поводу методов - с тобой. Просто охуел, как он там 50 строчек на 7 классов разделил.
Забыл. Хранение бизнес-логики в самой сущности это плохая практика. Вдруг туда бины придется автовирить
if (EmployeePredicateFactory.getIsEligibleForBenefitsPredicate(BenefitsType.FULL).test(employee)) {
У нас джуняра начитался этого говна и начал в тестах выделять методы. Типа в каждом тесте тестового класса есть пара строчек повторяющегося кода и он их выделил в метод. И теперь приходится каждый раз проваливаться, чтобы понять как тест работает.
А тесты к апишке, которая меняется и дорабатывается постоянно. И тесты надо править и дописывать. И читать тоже. Сервис, кроме него пишут 3 человека и все плюются. Но тимлид его поддержал, потому что джуняра тыкнул в тимлида Бобом ебучим.
Надо Manager как в шарпе?
Двачую, статических методов вообще нужно по максимуму избегать в бизнес-логике.
ты даун? тебе кто это сказал?
Павермок - говнище, которое значительно замедляет тесты. Алсо, если ты пишешь на спринге, то никакой необходимости в статических утилсах и нет, это код смелс. Вместо них ты можешь написать компонент, который будет настолько же удобным в использовании, но еще и тестироваться нормально будет.
В первом название переменных ебаные какие то, какой нахуй флаг? флаг Уэльса может?
Во втором немногим лучше на самом деле.
Эмплои это будет какая нибудь энтити или рекорд без логики.
Я б сделал EmployeeUtils с этим самым методом проверки. В случае если условия поменяются (пенсионный возраст опять подняли) - менять придется только в одном месте.
А я бы сделал еще в этом утилс лист с функциональными интерфейсами для проверок и метод для лобавления условия впридачу
я люблю в доту на сфе зхс
Это уже оверинжиниринг. Если тебе понтануться - норм, если для дела - нахуй не нужон.
Суббота чел, какая работа, ты что ебанутый?
А еще плиз поясните, почему в лобке подсвечивают мне аннотацию дата и иквалс&хэшкод? Я как бэ понял, что это может повлиять на скорость работы программы, но при каких обстоятельствах и почему - нет.
Да я и не против без него писать, просто меня на собесах по нему вопросами заебывают
util.Date или sql.Date?
LocalDAte для дат и Instant для таймстампов.
При двухсторонней связи при вызове тустринга или хешкода будет эксепшн потому что сущности будут бесконечно друг на друге методы вызывать
ну я читаю вот, пишут как-то абстрактно, что он там чето генерит на этапе компиляции, мне понимания эта информация нихуя не добавляет
дату подсвечивает вместе с иквалс и хэшкод даже если нет никаких связей в энтити, вряд ли предупреждение из-за этого, так что подумай еще
https://www.jpa-buddy.com/blog/lombok-and-jpa-what-may-go-wrong/
я нашел, читайте, раз не знаете
так учись, потом прочитаешь, как лобок под капотом работает и мне расскажешь
>А еще плиз поясните, почему в лобке подсвечивают мне аннотацию дата и иквалс&хэшкод?
Так наведи бля мышку и прочитай, что тебе пишут, подсвечивая. Ебать даун.
чет я не со всеми аргументами как будто согласен, почему ту стринг можно эксклюдать, а иквалс и хэшкод - нет? и как от проблемы преждевременной инициализации спасет собственноручное написание этих методов, разве что делать проверки на прокси внутри, хотя это тоже кажется мне чреватым багами в дальнейшем. И еще не понимаю, почему в @Data генерится именно реквайрАргсКонструктор, нам вообще часто нужны файнл поля в энтити? в голову приходит разве что дата создания сделали бы уже ноАргсКонструктор тоже и сразу минус один доеб.
>Using @Data for JPA entities is not recommended. It can cause severe performance and memory consumption issues.
Пошел нахуй, долбоеб. Для тебя, крудошлепа, эта инфа видимо является исчерпывающей
>Пошел нахуй, долбоеб. Для тебя, крудошлепа, эта инфа видимо является исчерпывающей
Раздался пронзительный крик со стороны джуна. Сам понять не в состоянии, хуила тупорылая? toString, equals и hashcode будут подтягивать все связанные сущности, в том числе ленивые. А по факту достаточно id.
тупой ты сын бляди, для этого есть специальный параметр, который сгенерит эти методы для тех полей, которые тебе нужны. А что если у тебя айдишник еще не сгенерирован? В рот возьмешь, как твоя шлюха мать вчера вечером у меня дома?
>А что если у тебя айдишник еще не сгенерирован?
Так если понимаешь, то хули ты тут расплакался на пол треда, ебуечего вкатуна ты кусок?
Так ты необучаемое говно тогда, хули с тебя взять.
>нахуя русская компания пишет статьи на английском?
потому что они делают плагин для иде от бывшей русской компании без поддержки русского языка?
я книжку нашел, прочитав там пару выборочных глав, я понял, что нихуя не понял. разве что понял то, что когда мы создаем такую связь вручную, нужно заполнять все-таки самому таблицу 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ы для каждого свойства
контроллер один, который обрабатывает все таблицы movie, person, role, genre, country, movie_person_role. или ты про эндпоинты?
Свали плиз, без тебя так хорошо было, а сейчас опять кислород будто перекрыли
чтобы не парсить его каждый раз, просто с кп взял (хз они парсят его или так же отдельно хранят). поля примитивных типов буду еще дорабатывать потом, сейчас надо базис освоить
Ахахахааха, там есть метод getYear, дебилойд
У них это разные даты, они иногда не совпадают. Если у тебя это одно и тоже, то храни в одном месте и выделяй каждый раз.
Если нет, то уточни, что это за год. Например год производства.
я читал про это, но подумал, что у меня их все равно не много, поэтому достаточно в один все собрать. но наверное лучше и правда как ты сказал. к тому же я уже для каждой сущности накинул слой абстракции в виде DTO (при том, что там всего 2 поля и их же я в dto возвращаю), хотя раньше думал, что лишняя абстракция это плохо
В конструкторе муви контроллер
Легко. Фильмы могут лежать на полке годами до премьеры. В совке из-за цензуры или конфликтов с администрацией. На западе из-за патентных проблем, скандалов, банкротства студии.
А бля, у тебя лобка нет наверн, тогда забей, можешь оттуда убрать автовайрд кста, спринг и так заинжектит тк это единственный конструктор
Нет, дто должно должно
Вкатыша спросить забыли.
Сравнил жопу с пальцем. Очевидно в тестах не надо никаких абстракций и вообще логики, там разрешено вызывать только методы из Assertions. Во всех остальных местах надо делать абстракции. Тимлиду скажи, что джуняра долбоеб и делает хуйню.
Да, через mapstruct какой-нибудь. В дто логика не нужна.
> чтобы было сразу понятно, где находится класс по его названию.
Ага, я тя понял, т.е. вместо
org.springframework.beans.factory.annotation.Autowired
будет
org.springframework.beans.factory.annotation.OrgSpringframeworkBeansFactoryAnnotationAutowired
Открыл Америку.
Вот если у тебя хуёвая структура проекта, то надо такие длинные названия классов и делать. Когда структура нормальная, просто смотришь на список пакетов и понимаешь, что данный класс должен лежать с шансом 100% в пакете X, а не в пакете Y.
Периодически при билде вылезает ошибка cannot access <класс_нейм>. Если пару раз перебилдить, то билд сработает. Как фиксить? Заебало пиздец!
Шарпопетух, уёбывай обратно в свой тред.
Пробовал смотреть эти видосики, но не могу так воспринимать инфу. Как правило 1-2 часа нудный лектор что-то там бормочет, путается, не может пример подобрать. Это ещё без учета фигового звука!
Может кто подсказать хороший курс в текстовом виде, чтобы просто читать без тупых видосиков?
открываешь книгу/статью по интересующей теме и читаешь. Параллельно воспроизводишь это. И всё это совершенно бесплатно, прикинь какая халява
Тут есть два подводных камня:
1) Как узнать список тем? Ведь очень легко что-то важное пропустить или начать не с той.
2) Информация по разным темам разнородна. Где-то закапываются глубоко, где-то поверхностно. В итоге можно получить сомнительный опыт.
Вообще, многие высокопарно утверждают, что в интернете всё можно найти, но не учитывают, что кроме полезной инфы там очень много ерунды и откровенно вредной инфы. В итоге вместо обучение все силы будут уходить на поиск, что значительно замедлит обучение.
Обожаю двачик. Всё могут обосрать. Буду изучать его чисто для себя + там есть кроссплатформа под мобилки, а я как раз джва года жду приложение для качалки, так вот будет шанс наговнокодить себе.
Ну вот можешь в этот покоммитить https://github.com/LWJGL/lwjgl3. Как раз разберёшься +- как графика работает.
Не учи, раз сложно. Сиди в магните за 20к
>>Почему нет текстовых курсов
Есть - курсера, жавараш и подобные, не считая гайдов с баелдунгов
>>1-2 часа нудный лектор что-то там бормочет
Это говно а не курс, такое только на гикбрейнсах всяких.
Норм видео это 5-30 минут на тему с графиками, схемами. И без рожи цыгана в кадре.
>>хороший курс в текстовом виде
Читай обычные гайды - там как раз текст
на собесе прост попросили привести примеры реальных кейсов использования, а я промычал ток про логи и обработку исключений
из реальных видел только "аудит" - собирается инфа что "юзер создал заказ с такими параметрами" и это через кафку пишется в сервис аудита и там интерфейс показывает.
Аннотация + конфиг с параметрами каждого события. Много нареканий, по мне так проще руками писать в сервис. Кстати потом пришлось делать обёртку как раз для возможности такой ручной записи вместо аннотации
Спасибо за ответ, в хибере кста есть энверсы для аудита, я пару раз потыкал в них, вроде достаточно удобно
И увидел его недостаток, это отстутствие дудупликации. Ну типа у меня есть корневая сущность, а в ней вложенный лист с приджойненными сущностями. И обычный запрос возвращает список кортежей.
Так вот хибер его сам дедуплицирует, а жук нет.
И придется или руками все мапить, через всякие мапы и стримы, там придется смотреть как рекорды и результы жука устроены.
Или, как советуют авторы - делать дедупликацию на уровне базы через превращение вложенных сущностей в джесон-массив. Но потом тоже надо это говно маппить руками во вложенный объект.
https://stackoverflow.com/a/32374760/15429847
если ты не гугл, не сбер и не вконтакт, то нет смысла в этих микросервисах
>Создавать третий микросервис и поднимать кафку?
поднимать кафку, всякие дискавери, кибану, ещё десяток базвордов. Делать асинхронный обмен информацией между сервисами
Да я сам хз. Может и плохо, надо тестить насколько. Зато если дедуплицируем на уровне базы, лишняя инфа с повторами в разных кортежах не полетит из базы в приложение, а только один кортеж с джейсоном. Плюсы по производительности есть и они очевидны.
А как просаживает производительность подзапрос надо читать про кишки постгри и изучать план запроса.
Ну допустим так можно сделать, но если юзера надо будет удалить, тогда и все его сообщения тоже надо удалить по идее, а это или распределенные транзакции, или кафка лисенер на меседж сервисе
Во первых не факт, что надо будет его сообщения удалять. Достаточно поставить на тих томбстоун и скрыть от других пользователей.
Во вторых если надо будет удалить, то можно удалять нетранзакционно, евенчиал консистенси и так будет.
Можно. Разрешаю
>Допустим, у меня есть самый дефолтный чат и я хочу его разбить на микросервисы.
Сразу обосрался. Не надо этого хотеть.
Да можно, почему нет. Но объекты и компоненты из swing и javafx скорее всего плохо будут дружить с di.
Да и зачем тебе спринг дата? Из sqlite что-то тянуть? Работать с настоящей базой с клиента напрямую это в любом случае плохая идея.
>Ну допустим так можно сделать, но если юзера надо будет удалить, тогда и все его сообщения тоже надо удалить по идее
С чего бы?
Никогда в телеге не видел сообщений от челиков с ником "удаленный аккаунт"? Вот и тут так же.
Двачую. Норм на микрочелики бить то, что бьется по скоупам нормально. Ну например маркетплейс. Там есть подсистема для работы с покупателями, с продавцами, со складскими работниками, с бухгалтерией, интеграция с банковской системой. И тут отлично все бьётся.
>Во первых не факт, что надо будет его сообщения удалять. Достаточно поставить на тих томбстоун и скрыть от других пользователей.
А эт большая разница, удалять или делать запрос на изменение флага isVisible в базе у всех сообщений?
>то можно удалять нетранзакционно
А что если сервис сообщений в данный момент лежит? Тогда кафка нужна все равно по итогу
Как раньше вообще без месседж брокеров жили? Они же вроде гораздо позже начала угара по микросервисам пришли
https://en.wikipedia.org/wiki/Jakarta_Messaging
Нет. И месседж систему можно свою на разделяемой между сервисами бд навелосипедить. И таких велосипедов немало в проде.
>>есть корневая сущность, а в ней вложенный лист с приджойненными сущностями
жук расчитывает что у тебя нормализованная скл база, а не такая вот хуита с массивами объектов вместо ид
>>Но потом тоже надо это говно маппить руками во вложенный объект.
обжнеет маппер джэксона может жсон в объект мапить
>жук расчитывает что у тебя нормализованная скл база
У меня и есть нормализованная скл-база. И она на джойны с many-to-many может отвечать набором кортежей. А ее нужно смаппить в один жаба-объект с вложенным списком.
И жук нормально делает запрос. Примерно такой же, как и хибер. И оба получают одинаковый набор кортежей. Только вот хибер может при маппинге дедуплицировать, а жук - нет. И ты дедуплицирушь руками или список кортейжей в приложухе или на уровне базы, складывая вложенное говно в джейсон.
Тогда нужен бекенд серверный. Тянуть на клиент напрямую из базы чревато.
Скажи, что прошёл собес и тебе предложили оффер на 45к
Сколько ни искал - не находил, чтоб прям так последовательно, в одном месте и не старьё, как на метаните про шарп и асп.нет. Попадалось только вот это https://proselyte.net/tutorials/ , но там мало инфы, да и спринг старый, хотя и там при вкате что-то для себя извлёк.
Нет, я не шарпоблядь, просто тыкал чуток шарп в свободное время
Можно, конечно, если у тебя ебическая усидчивость годами развивать и актуализировать инфу на сайте, которая будет полностью в открытом доступе, и получать за это копейки с рекламы и редкие донаты.
На джавараше инфа закрыта. Надо напрямую платить, чтобы почитать их тупые статьи со "смишными" шутейками. Создатели джавараша ещё хуже жидбрейнсов в плане жадности.
А тут серьёзный сайт с общедоступной инфой. Монетизация за счёт рекламы, а не поборов с пользователей. Хотя донат тоже можно прикрутить.
>>08917
А какая альтернатива? Делать тоже самое, но на дядю.
Да никакой альтернативы, у тебя реально должно быть благородное желание помогать другим анонам вкатываться и иметь с этого почти нихуя, а не как у инфоцыган, которые всё делают только ради деняк. Я бы не потянул, слишком я жадный и ленивый для этого.
Метанит неудобный, там нет ссылок на гитхаб.
Баелдунг хорош. Но не структурирован и один-единственный гит-репозиторий на тысячи мурзилок это не очень.
Документация - это справочный материал, а не учебный.
У меня было только, что предложили оффер на 60, а платили 80.
Очевидно, увольняться. И в следующий раз читать договор перед тем, как подписываешь.
>Надо напрямую платить, чтобы почитать их тупые статьи со "смишными" шутейками
Ну нихуя себе, за чужую работу, оказывается, приходится платить!
Не работать
я обязательно вкачусь
Да тупо гугли статьи типа "100 вопросов для собеседования на java-разработчика", все методы класса Object, три вида эксепшенов и т.д.
>все методы класса Object
Блин нафига его методы вообще знать, это класс же не используют нигде практически, я вообще им ни разу не пользовался еще
>три вида эксепшенов
Нуллпоинтер, арифметик и илиграларгумент пойдет? или другие надо?
> Блин нафига его методы вообще знать
Не я это придумал. Это стандартные вопросы, которые задают на собесах. Знать надо тупо для собесов.
> Нуллпоинтер, арифметик и илиграларгумент пойдет? или другие надо?
Речь про Exception, Error и RuntimeException. То, что они все наследуются от Throwable (который таки класс, а не интерфейс), что RuntimeException наследуется от Exception, что из них checked, что unchecked, что можно ловить, что обычно нельзя ловить (но иногда можно). Вообще, деление на три вида достаточно тупое, некоторые их делят иначе.
А по кишкам jvm часто гоняют? Есть какой-то ресурс не талмуд плиз где можно по-быстрому за вечерок разобраться, как там все устроено более-менее подробно? Может видосик какой на ютубе есть?
Кишки JVM могут спросить на миддла или сеньора. Пока ограничься темой JMM, happens before вот это вот всё.
Эрроры и Throwable. В обычном приложении их не ловят, но если ты пишешь какой-нибудь сервер приложений или платформу, то придётся, чтобы брошенный быдлокодером эксепшен не обрушил всё.
Может, язык не запрещает.
p.s. Книг очень много, где то советуют одно, где то другое. В этих же тредах когда я только начинал вкат, предлагали читать Микросервисы и ещё какая то книга с кабанчиком на обложке, но это мне кажется уже более для прокаченных дядек.
Книг по спрингу нормальных нету. Но если хоть что-то надо - читай srping in action 6. Но там ничего не поймешь, что под капотом. Там прямо простые круды без расколдовывания магии. Первые полкниги представление вполне дадут.
Ну и в джава кор входит голый jdbc, так что ты sql уже должен знать. Если не знаком с бд вообще, то
Алан Болье - Изучаем SQL годная тонкая вкатунческая книжка.
Рекомендую курс тервера и статистики, чтоб оценить свои шансы на вкат. А если понравится, то можно машилёрнером стать
Наверное я неправильно выразился. SQL и Spring я как нибудь освою, думаю там ничего страшного нет. Мне бы какое нибудь чтиво связанное с основами ООП, потернами разработки. Начал читать вот только что «Элегантные объекты», вроде бы норм, но все равно как будто рассчитано на более шарящих. Я все таки в реальной разработке ещё не участвовал.
Да сейчас вообще пиздец с работой настал, мне с годом опыта сменить работу практически нереально, потому что джуны нахуй никому не нужны, приходится грести в нынешней галере за 70к
Лучше брось это дело, сейчас лучше всего смотреть в сторону более приземленных профессий, вроде электрика, слесаря, землекопа. Айти схлопывается, скоро этот мыльный пузырь лопнет и анальники-кнопкодавы будут вынуждены идти и заниматься тем, что приносит реальную пользу обществу, а не сидеть и получать свою сотыгу за перекладывания жсонов. Даже если айтишка не сдохнет в ближайшее время, жсоны вполне себе могут перекладываться автоматизированно, чатЖПТ уже дал понять насколько технологии ушли вперед и вполне себе могут писать код за любого разраба среднего пошиба. Крупные компании все это понимают и уже давно остановили набор, скоро дойдет и до остальных. Хотя в раше вообще никаких перспектив становится анальником не вижу, разве что писать софты для вояк, но это уж точно не на жабе.
Аккуратнее с "Элегантными обьектами". Эта книга - для архисиньоров, успевших прочувствовать на себе ООП в полной мере, и написана она ради рофлов и чтобы пофилософствовать, поразмышлять и похоливарить, нечели чтобы применять ее в проде. Новичек из этого чтива никакой пользы не вынесет для себя, а вот вкатунство рискует угробить на корню, ибо вокруг этой книженции и неоднозначной личности ее автора сформировался абсолютно отбитый озлобленный культ хейтеров.
Кек, неосилятор в треде.
Блин. А ведь эта книга советуется в гайде из шапки треда. Может что то посоветуешь? Было бы проще начать не будь такого большого выбора
>А ведь эта книга советуется в гайде из шапки треда
Не больно то и советуется. Так, упоминается мельком.
Вообще, чтиво довольно занятное, в свое время я получил много удовольствия за размышлениями об ООП через призму егоровых объектов. Но на собесе лучше никогда не упоминай что читал ее, я серьезно. Это может плохо кончиться, одно мимолетное упоминание ЕО заставляет знатно просраться даже самых зажатых анальников.
>Может что то посоветуешь?
Хуй его знает, я вот щас даже сам не смогу вспомнить, через что я учил ООП и паттерны. Давно это было. Целенаправленно я вообще ничего никогда по ним не читал. Просто в определенный момент бац - и само как то.
Я думаю - ты не ошибешься если просто вобьешь в гугл "книга по паттернам проектирования java" и возьмешь первую понравившуюся по обложке. Для прохождения собесов они скорее всего будут одинаково приемлемы, равно как для употребления в проде - одинаково отстойны.
В процессе загрузки проекта показывает, а потом хуяк! - они исчезают из окна проекта.
Стандартный .gitignore
https://gist.github.com/dedunumax/54e82214715e35439227
Я заметил, что между книгами по Java Core и книгами по Spring есть информационный разрыв. Вторые предполагают какие-то дополнительные знания по корпоративной разработке, но об этом нигде не пишется.
scp
>засовываю на вдску, распаковываю, и делаю mvn deploy
Чет я не раскурил... а что тебе дает залив на вдску?
Обычно это делается через конфигурацию distributionManagement, как описано здесь: https://www.baeldung.com/maven-deploy-nexus
Клин код Боба читай. Он говно, но большинство интервьюеров и тимлидов любят, когда джуны козыряют клин кодом.
Паттерны - хед ферст или швец на выбор.
Хорошая книжка - эффективная джава блоха. Но она про практические советы по джавакору.
А вообще я не советовал бы тратить время на попытки вникнуть в такие абстракции, как парадигмы программирования и ооп в частности. Там сплошная болтология, которая ничего тебе как вкатуну не даст.
Последнее время тоже заметил, что идея постоянно багует. Ещё жрёт оперативу как не в себя. И за это они ещё хотят, чтобы им деньги платили! В то время как есть абсолютно бесплатные Эклипс и НетБинс.
В моем случае, я виноват.
Оказалось, что целая директория была включена в .git/info/exclude проекта хз как
Можно проверить инструкцию, заставляющую игнорировать файл, указав путь к нему в <pathname>
git check-ignore --verbose <pathname>
Пора мне перерегистрировать Idea кста
Баттл-рояль ИРЛ, че.
В моем ноль
Учи пхп и 1С, они наверняка есть.
У меня была одна вакансия. Я сходил - взяли сразу, почти без собеса, только тестовое.
Вакансия одна, а людей со знанием стека вообще нет, только студенты заборостроительного, не осилившие спринг.
Оказалось помойкой, которая раньше разработкой вообще не занималась, взялась поддерживать легаси копролит без документации. Текучка была жуткая. А народу - 4 человека до меня, там где надо 10+. Свалил с испытательного.
Через месяц открылась еще одна вакансия. Пошел туда и взяли после собеса и тестового. Место оказалось уже +- норм, филиал московской галеры.
Если в городе одна вакансия и они позовут на собес - в этом есть плюсы. Там будет сильно ниже требования на собесе, чем в большом городе.
Как нужно документировать код, чтобы без очных личных созвонов с предыдущим разработчиком можно было разобраться без полусотни часов в дебагере.
Вот сенька писал апишку 2 года назад. Там огромные входные и выходные дто. Преобразование в промежуточные состояния как на входе, так и на выходе. Очень ебучий динамический запрос. Дообогащение данными через обращение в другие сервисы.
И дал мне задание немножко подправить реализацию хранения и преобразования. В общей сложности на пять часов в несколько итераций созванивался со мной и объяснял. До этого наверно без меня несколько часов вспоминал, как оно работает.
И я не все понял, и там еще столько же объяснять.
Ну и с другой стороны я тоже объясняю другим разрабам куда писать код, в апишку которую я писал и которую нужно изменить.
В сваггере есть описание, но не полное. Да и не думаю, что меня полное бы спасло. С тестами плоховато было, их почти не было.
Какую доку надо писать, чтобы как-то сократить время на это личное объяснение?
Я б спросил - возможно ли это впринципе? Как мне кажется - не возможно. Просто сдавайся. Даже если ты эту халабуду задокументируешь, доверять таким докам сам пернестанешь, ибо они протухнут спустя парочку кранчей.
А если сенька резко уволиться или помрет от старости, то все, пиздец?
Тогда эти 10 часов его рассказов + ревью, 10 моих слушаний + 20 на саму разработку - в итоге 40 условных человекочасов превратятся в 150-200?
Там и исполнитель и ревьювер должны будут разобраться что там такое и что с этим делать. Исполнителю придется проходить по всему маршруту в дебагере, писать тесты, долго подбирая тестовые данные наугад. А ревьюверу, представим что он есть придется долго слушать исполнителя, как это примерно работает, а потом перепроверять.
Да это понятно. Но может есть хинты какие-то чтобы как то вот эти походы от ручки до базы и назад немного подсократить.
В джаве там ведь обычно еще слоем паттернов намазано + магией спринга с какими-нибудь дополнительными настройками бинов, интерсепторами и прочими штуками мешающими идти последовательно.
Выйти замуж за джависта что ли?
>А если сенька резко уволиться или помрет от старости, то все, пиздец?
Типа того.
Не, если че - я не агитирую за то, чтобы вообще не писать доки. Мой пойнт в том, что хоть упишись, от созвонов и общения со знатоками это не спасет. Так просто не бывает, по моим наблюдениям.
Я имел ввиду как-то превентивно снизить количество инфы, которое нужно через такие созвоны передавать. Ну чтобы наша серия созвонов с сенькой с 10 часов до 5 сократилась.
А, ну ты щас постановку задачи сменил. Изначально ты спрашивал про доки. С новой постановкой вопроса я бы ответил так: если проект требует таких конских созвонов и лютой координации между владельцами разных модулей, самый верный способ это избавиться от вот этого вот всего:
> Там огромные входные и выходные дто. Преобразование в промежуточные состояния как на входе, так и на выходе. Очень ебучий динамический запрос. Дообогащение данными через обращение в другие сервисы.
Но скорее всего вот это вот все в вашем случае уже неизбежно. Доки немного помогут, но в корне ситуацию не переломят, плюс на доки девелоперский ресурс тратится так же как и на митинги. Еще может помочь опыт в целом - все таки раз отмитинговати, два-отмитинговали - что-то в голове должно было отложиться? А вообще - сдавайтесь.
Впринципе это еще не самая раковая ситуация - у тебя хотя бы еще есть с кем поговорить. Бывает что люди вообще берут этот сложившийся статус кво за норму и выстраивают вокруг перманентного взаимодействия девов процесс разработки - так родилась идея парного программирования.
>>круды
>>Как нужно документировать код
Круды самодокументируемые. Вдекватных названий методов и пременных достаточно. В редких случаях когда пишу коммент как ебала работает, если там что то неочевидно-костыльное.
>>чтобы без очных личных созвонов с предыдущим разработчиком можно было разобраться без полусотни часов в дебагере.
Я б сам хуй вспомнил как работает хуевый код.
>>Там огромные входные и выходные дто
Надо декомпозировать. Если там 50 полей самый шик если все - стринги - делать вложенные классы. По крайней мере если нужна такая плоская дто - делать ее на финальном этапе перед тем как выплюнуть на фронт.
>>В общей сложности на пять часов в несколько итераций созванивался со мной и объяснял. До этого наверно без меня несколько часов вспоминал, как оно работает.
Явный признак того что код говнище, тут документация не спасет, надо переписывать.
>>С тестами плоховато было, их почти не было.
Не только лишь все умеют писать тесты на спринге. Иногда их отсутствие лучше, чем хуевые тесты которые надо поддеживать.
>>Какую доку надо писать, чтобы как-то сократить время на это личное объяснение?
Не спасет дока, скорее всего надо код рефачить ну или забить и терпеть. Даже если ты напишешь полнейший гайд по обходу граблей и с описанием всех костылей, кто будет его актуализировать? Уж лучше тесты.
Можно, но ошибка в любом случае будет в консоли.
Eclipse нормальная IDE, или есть варианты получше?
Литералли каждый день срет тремя постами:
- как выучить спринг, ааа ноль инфы
- без платной идеи даже не пернуть
- у меня в чите 1 вакансия с 1200 откликами, вкат закрыт
Я только про спринг и идею пишу
> Если там 50 полей самый шик если все - стринги - делать вложенные классы.
Нет, там скорее обратная проблема - сильно разветвленная и динамическая джейсонка - дто с наследованием различающихся частей. Проблема еще в том, что часть реализаций неактуальна.
Короче напишу высокоуровневые тесты, максимально устойчивые к рефакторингу. Думаю это лучше что можно сделать.
Достаточно просто знать
Еще и куколд.
И че там по таблицам? Комменты хоть будут? Авторизация?
Хотя тут самое главное на чем фронт будет.
Вот хорошо девочкам. Можно выйти замуж за программиста и самой стать программисткой.
>говноланг
Лол! Дежурное напоминание, что в джэве все обмазываются ломбоком и тормозным спрингом, который люди учатся настраивать годами, т.к. там столько магии и запутанного говна, что уже через год начинает фляга свистеть.
На гоулэнге же люди начинают писать в прод уже через две недели (максимум месяц) и при этом можно открыть любой исходник и разобраться в нем моментально.
Про скорость компиляции, запуска приложений и скорости работы я вообще молчу - она обгоняет спрэнг и джэву на порядки.
Изначально джава тоже была такой. Ломбоки и спринги привнесённое. Я вот помню как в 2006 мы писали в Эклипсе ftp-сервер и клиент к нему без всяких спрингов, а только за счёт средств стандартной библиотеки. Всё было красиво, логично, понятно.
>Изначально
А кого это волнует? Сейчас бы продолжать писать на джэве и буквально страдать каждый день, испытывая физическую боль.
Всегда знал, что петушарперы и говношеры тупые, но не думал, что настолько, чтобы учиться ставить @AllArgsConstructor годами.
Лучше бы накидал ссылочек с инфой по Спрингу
На голованге походу надо всегда писать руками логику, которая уже 15 лет как есть в спринге.
И средний прикладной программист на голованге напишет хуже, чем написано в самых помойных частях спринга.
>Даже по голангу
Пактовский читатель?
Вон какой-то Самойлов норм книгу написал.
"Learn Java 17 Programming" N. Samoylov, Packt, 2022
Ещё "Go for Java Programmers" B. Feigenbaum, Apress, 2021 збс
Эта девочка пытается в фронтэнд вкатиться уже несколько месяцев, наверное. Пиздец она тупая, не понимаю, в чем там контент.
>пытается в фронтэнд вкатиться уже несколько месяцев
Зачем? На лицо вроде норм и покатит, может анальника в рабство искать
Спокуха, чел! Она очень милая и у нее все получится!
Каких месяцев? Она с 2021 стримит программирование. Но она и не стремится разобраться, просто она нашла свою нишу для стриминга.
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
Завидую англоговорящим. Могут легко любой материал почитать. А нам приходится годами переводы ждать.
Англочитающим техническую литературу с маленьким вокабуляром. Это по затратам времени пару сотен часов.
Авторизации не будет, по таблицам я пока не знаю как это сделать.
А вот комменты - хорошая идея :/ Фронт будет на html :D
3 ГОДА писали моды на майнкрафт, пойдет ?
Я пробовал читать на английском, но усвояемость крайне низкая. Подозреваю, что тут дело в том, что мантра на родном языке резонирует с нужной чакрой и сакральные знания сами подгружаются из дхараны. К примеру, как мавен подгружает зависимости из репозитория.
>Я пробовал читать на английском, но усвояемость крайне низкая
У меня ровно наоборот, поскольку внимание к тексту гораздо выше, чем при чтении на русском, запоминается надолго.
такое фиксится только опытом, читай комменты на ютубе и в реддите сиди, за год где-то язык становится комфортным
А как же МОСКОВСКОЕ образование?
>Фриланса на джаве за исключением майнкрафта нет, но там большие деньги не водятся.
Это значит мне в лучшем случае нужно будет в 8 утра через весь город в какой-то офис ехать?
да, и сидеть в кубикле в лучшем случае в тесном офисе. Опенспейс хуже
Да але сука, че так сложно ответить
Есть удаленка, но меньше чем на не-тырпрайз бек-стеках. А для джунов еще меньше.
Но у меня вот все в галере работают на удаленке, поэтому нанимают даже джунов и стажеров на удаленку.
Автотесты и CI не связаны никак. CI будет гонять ровно тот билд пайплайн, который ты сконфигуришь. Если этот пайплайн будет включать в себя запуск тестов, значит CI будет гнать тесты.
Я по этой книге смог написать только веб-приложение про каравашки. Дальше не знаю как двигаться.
Напиши двач.
Там после первой трети от шаблонизаторов на ангуляр перешли.
А автотесты? У нас вот пока их нету, прямо сейчас собирают qa-команду под наш проект.
А наши юниты/интеграционные мы гоняем на пайплайнах. Каждый пуш в мр запускает пайплайн на 3-7 минут.
А ваши юниты и интеграционные тесты разве не автотесты?
Еще раз: тесты - это тесты, а CI - это CI. Просто тесты бывают разных уровней (гугли "пирамида тестирования"). Вы мейнтейните низкоуровневые тест-сьюты, а QA видимо вам запилят высокоуровневые регрессионные. Как правило, высокоуровневые тесты выполняются много дольше и тяжелее чем низкоуровневые, поэтому их выполняют реже. Например, не на каждый девелоперский коммит, а раз в полночь (когда один пень никто не работает и все CI агенты простаивают). Но как, когда и какие тесты запускать, определяется настройками билда в CI.
Нет такого деления - "CI-тесты, не-CI-тесты"
лол
Почему так жестко? Там че правда на ангуляр перешли после первой трети?
Ну а че ты хотел, чтобы я тебе лекцию прочитал про то, что такое регрессионные тесты? Гугл это все равно лучше меня сделает.
Хотя бы попробуй
Мои программы это и есть сплошные баги.
лол никогда, с первого дня с первого раза всё работало. Ты видимо чмоня и проганье не твоё, тебе не место среди нас
Есть еще вариант: я делаю еще одну папку с ликвебейз в тестовых ресурсах и там убираю все вставки, но спойлер ликвибейз как-то сука находит, что у меня есть еще одна такая и заставляет все названия файлов внутри заменять, так что из этого делаю вывод, что держать отдельные файлы с миграциями под тесты вряд ли хорошая идея и мне ликвибейз как бы пытается на это намекнуть. В общем, че скажете по этому поводу?
Забыл упомянуть, тесты пишу на все приложение, поднимаю постгрес с помощью тестконтейнерс
да. Ликвибейз не выполняет скрипт второй раз, если он уже выполнялся. Там для этого специальный механизм есть.
Плюс щас модно в тестах поднимать докер с базой, а не подключаться к установленной.
https://www.testcontainers.org
но если не трогал докер пока забудь
Не, ты меня не понял, я и так пользуюсь тестконтейнерс. Ликвибейз всегда выполняет скрипт для поднятой в тестах базы, тк там нет его служебной таблицы с изменениями, база же чистая. Просто проблема в том, что в моих скриптах ликвибейза есть вставки в таблицы, немного, но есть, плюс я возможно еще какие-то буду добавлять. И эти вставки мне мешают, потому что я не могу с ними написать нормально ассерты, тк количество юзеров, допустим, может изменится, когда я в очередной чейнджсет добавлю еще инсертов. То есть, надо выпиливать походу эти вставки из скриптов миграций, вместо этого делать инит.sql в отдельной от ликвибейза папке, я только узнал, что их тоже там как-то спринг или хуйбернейт запускает, так что наверное так и сделаю.
Если тестируешь на тестконтейнерах, то миграции должны быть включены. Потому что это тоже код, и он тоже должен тестироваться.
Это как? У меня тест на эндпоинт для получение юзеров постранично. Я пишу там ассерт на сайз возвращаемого списка юзеров, сейчас вернется два и тест пройдет, завтра решу добавить чейнжсет с вставкой еще одного юзера и все тесты попадают
Данные через миграции вставлять надо в крайнем случае. И если вставил - нужно от него всегда отыгрывать.
Например можешь перед каждым тестом вызывать sql скрипт с удалением вставленных через миграции данных.
>Следует ли мне включать ликвибейз в тестах?
Лучше включать. По совести, ченджсеты тоже надо тестить.
>Просто вот какая проблема выходит, у меня в пете происходит в чейнжсетах вставка двух дефолтных юзеров админа и забаненного для удобства
Вроде бы у этих штуковин можно отдельные миграции отключать в зависимости от окружения. Надо гуглить. В самом крайнем случае, если нет опции попроще, можно миграцию, которая нагоняет юзеров, вынести в отдельный модуль и ключать этот модуль только в прод.
там есть какая-то аннотация для начала тестов и конца. В начале вставляешь своих юзеров, в конце удаляешь
Будет один ко многим епты
Может быть много военников с определенной специальностью и в военнике может быть несколько специальностей
специальность1, специальность2, специальность3
Там даже не один есть, можно еще как-то через предусловия зайти. Но этот более прямой.
про jms, ibm mq, и какими паттернами при этом пользоваться
Книжка 2003 года. Сам как думаешь, много ты оттуда можешь взять?
Ага, открываю Фаулера и там в 3 главах типовые подходы использования веба - jsp и asp.
Тогда рест только на бумаге был, а джейнсон только появился.
Это как физику по монографии Ньютона учить.
Аппликатион программинг интерфасе
Ясно, вот как вкатунойду с говнопоиском на его простыни отвечать, так сразу, а мне на коротенький микропиздочный вопрос с подвохом - хуй. Даже пробелов зажал, спасибо блять не искренне
Кинопоискодебил хоть вопросы по хибернейту задавал, а ты со своим гитхабом последуй в нюфаг-тред и захвати заодно таких же шизиков с докерами, дженкинсами, постгресами и js-фреймворками.
Гит и гитхаб имеет прямое отношение к любому языку программирования, каждый разраб обязан за него шарить но тк пишу на джабе, спрашиваю в этом треде. Да в принципе опытный жабист и за докер должен еще уметь пояснить и за дженкинс, так что ты во всем не прав, кроме жс фреймворков.
Вот так:
- Название проекта
- Libraries
Как это исправить ?
Установить идею
> имеет прямое отношение к любому языку программирования
То есть не имеют прямого отношения ни к одному языку программирования.
Со своими "должен" и "обязан" тоже можешь идти отсюда подальше. Тред про жабу, и сидят здесь аноны, которые в первую очередь знают жабу и технологии для жабы, не гит, не докер и другую оффтоп хуиту, которая нужна здесь не всем.
Ебало, очевидно
А в тик токе искал?
Тайные символы, чтобы свои узнавали своих
Спринг бут избавил от необходимости писать эти конфиги вообще. Дефолтных хватает в 90% случаев. Но если тебе нравится пердолиться с каждым - то спринг не запрещает.
Людишки боятся код. Боятся со времен первых software кризисов времен 70х.
За десятилетия большинство людей так и не научилось кодить так, чтобы код не приносил боль и убытки, поэтому все грезят о том, чтобы количество кода было близко к нулю. В идеале - чтобы был no-code (или щас еще модно дрочить на chatgpt, кек), но спринговая конфигурация вместо кода тоже сойдет, ага. Типа: нету кода - нет и техдолга. Наивные.
Только вот первопричина никуда не делась, и по сей день ебашит разрабов, из-за чего на среднем и дальнем горизонте один хер что no-code, что спринг вырождается в говно. Те, кто прочувствовал на себе этот эффект, даже зная устройство спринга под капотом, называют спринг дерьмом, а его фичи - "магией".
Типичная реакция культа. И нет, спрингом я владею в полной мере. Не пойму только че у тебя дупу то подорвало - я вроде выше спринг дерьмом не поливал.
никак. Это ещё один из многочисленных минусов микросервисов
А как ты это поднимешь? Предположим тебе надо поднять еще один сервис, который использует свой инстанс бд. И че делать, прописывать дохуища контейнеров базы, прокидывать их нетворки и датасорсы в каждый сервис, это же заебешься так делать
Ну ок, ладно. Тогда заимей стейджинг. Или запили сине-зеленый деплоймент - пока одна сторона хостит прод, вторую тестишь.
Ее сложно описать, не скатываясь в лонгрид, а краткий ответ один хуй не раскроет тему в должной мере.
Если вкрадце: переиспользование кода (техника, на основе которой стоит вся разработка ПО начиная с 60х и по сей день) - литералли синоним каплинга, со всеми вытекающими. Это не хорошо и не плохо - это просто данность, из-за которой ты не можешь не брать техдолг, у тебя тупо выбора даже такого нет, ты по определению "живешь в кредит" в тот момент, когда создал пустой проект в идее.
И сокращая количество кода, мы не мэнеджим, мы тупо маскируем эту особенность. А она никуда не девается. Поэтому выигрывая в короткой перспективе (где импакт каплинга на разработку мизерный и в разы меньше чем импакт от бойлерплейта), но проигрываем в долгосрочной.
>>Людишки
>>Наивные.
Сильное заявление. На каком основании такие высокомерные высказывания?
>>все грезят о том, чтобы количество кода было близко к нулю
Чем меньше подвижных частей и проще составные элементы - тем надежнее система. Код не исключение.
>>no-code
Там больше кода, чем в обычном приложении. Его нет только для макаки нажимающей кнопки на верхнем уровне.
>>chatgpt
К чему его приплел? он на вопросы отвечает, но сам ничего не создает.
>>спринговая конфигурация вместо кода
Спрингбутовые конфигурации вместо разномастных конфигураций на каждую отдельную залупу.
Вместо кода там кодогенерация.
Все это можно при желании написать руками как тебе угодно.
>>на среднем и дальнем горизонте один хер что no-code, что спринг вырождается в говно
В чем это проявляется? Системы становятся сложнее - инструменты тоже.
>>даже зная устройство спринга под капотом, называют спринг дерьмом
Это ты сам так решил?
>>а его фичи - "магией".
Это ж ирония. Только вкатун такое всерьез воспримет. Да, там много неявного. Но фабрики фабрик и тонны хмл нахуй не нужны,
Все верно. Поэтому я выше и написал. Связанность - это не хорошо и не плохо. Это - данность, которую нужно контроллить.
Эк тебя порвало.
Я тебе даже отвечать по существу не буду - ты сам не понимаешь в чем ты хочешь меня переспорить. Тебя то бомбит от того, что я высказал субьективное (все эти твои "сильное заявление"), то ты сам несешь субьективное ("только вкатун такое всерьез воспримет"), то тебя несет на типичную демагогию спрингокульта (типа дихотомии что "если не спринг, то миллион говнофабрик"), в то время как я ничего плохого про спринг не сказал. Считай, что я слился, мне похуй, я спрингокульт за достойных оппонентов в споре не котирую.
Как убрать? Он тоже против спрингокульта был.
Чела, перекатывающего после 500, закибербуллили в щепки.
Пошёл нахуй, перекаты после 1000.
Если у меня есть 3 года на условном Python, и работаю старшим программистом (сеньором за 200к), то есть вариант вкатится в Java сразу мидлом хотя бы на 150к?
Если у тебя миддловые скиллы - почему нет? Грейды - не столько про стэк, сколько про компетенции.
На моём языке всё тоже самое, докеры, sql, kafka, redis и всё такое.
Не хватает типизации и серьёзных проектов, с которых не увольняют по дуновению шизы экономики
>то есть вариант вкатится в Java сразу мидлом хотя бы на 150к?
Это возможно, если прямо хорошо покажешь себя на собесе. Не вижу особых препятствий.
Ладно, понял. Организую себе серию фейковых собесов, определю глубину требований и буду вкатываться
Лучше сделай пет на спринге с технологиями, которые тебе уже знакомы, после чего сразу хуярь на реальные собесы.
А, так это само собой
Spring уже приготовил. Только вот не знаю какие версии java и спринга актуальны на 2023й год.
LTSы. 11я, 17я.
>>какие версии java и спринга
Джава 11+. Разница между 11 и 17 не велика.
Спринг бут 3 уже вышел, но все пока сидят на 2.
А Шилдта?
Так еще больше денег потратит, ведь время потраченное на чтение говна - тоже деньги
знакомому еще со сбера много писали, звали на убер легаси с 8 жабой, а меня чет даже эти игнорят, хотя я уже на все готов
Я вот купил Эккеля, а потом хотел на шарп уйти, но то, что у меня куплена книга по джаве, вынудило меня остаться на ней.
При чем тут мидол, мне б на ждуна хотя б попасть
>Имеет ли смысл вкатуну в резюме напиздеть и приписать себе полгода-год опыта работы в нн компании
Скорее нет, чем да.
>Во время могилизации знакомый быстро вкатился на неплохую зпху с такими же вводными как у меня сейчас
Поговори с ним, спроси его историю успеха. Это будет всяко продуктивнее чем искать ответ здесь. Тут и так полон тред вкатунов в депрессии - это болото тебя затянет и не выпустит.
Java 8 и Spring 4 без всяких хипстерских бутов.
Есть и более новые версии, но из никто не решается использовать в проде. Так что все эти java 17/spring 6 - хуйня для вкатышей.
Да говорил с ним кучу раз, делаю по тем же чертежам. Может действительно дело в неудачном времени? Не замечал кто-нибудь спада наборов в этом году? Или может я не в сезонное время этих наборов вкатываться начал?
я понимаю, я не самый обаятельный и приятный парень на свете, но чтоб…никто
Время реально говенное, но ты и сам уже это осознал. Нет смысла на этом зацикливаться - все уже случилось. И нет смысла обсуждать это с двачем - достаточно одного взгляда на /по чтобы понять что двач сегодня - площадка борьбы лахты с ципсо, и ты в этой борьбе - их пища. В ответ на свое "руки опускаются" ты щас найдешь тут такой ушат подкрепления, что сопьешься и роскомнадзорнешься нахуй.
Вот это ты его затролил...
>>12773
вот, держи
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Там рикролл, да?
Благодарствую.
Всё, спринг дата ап за 1 день.
Никак ведь в жабе нет extension methods, зато там наверняка есть какой-нибудь StreamUtils.toList()
Ну так уродливо я могу и без гуав и прочих свистоперделок, через .collect(Collectors.toList());. Но в том то и прикол, что это уродливо, и поэтому все, кто не обновляются до Java 17 - зло во плоти, ведь из-за них я не могу пользоваться этим методом красиво.
Люблю восьмую жабу и буду сидеть на ней до последнего. Да и как на 17 жабе запустить Websphere?
>это уродливо
>зло во плоти
>не могу пользоваться этим методом красиво.
Ты щас звучишь как ебанутый религиозный фанатик. Доебался до вшивого метода, а ору - выше гор, экстаза полные штаны. Проори "анафема" три раза еще, поп.
>Тут и так полон тред вкатунов в депрессии - это болото тебя затянет
Кстати да. По себе заметил что как только в этот чумной барак заходишь так сразу плохеет. Одни унылые вкатуны и выебщики у которых единственная радость в жизни это выебываться на дваче ибо в остальном вероятно провал полный.
Выебщики выебываются, сомневающиеся ноют и сомневаються, нахуя это все...
>>Stream#toList()
Почитал - это похоже единственная вещь ну мб текстовые блоки и свичи еще ради которой можно перекатываться на 17. Спринг то один хуй еще тестить будут пару лет, а рекорды все также бесполезны.
>>12895
Ну вот меня очень расстраивает невозможность писать var если вижу 8 - прям фрустрация накатывает.
Ну а на меня фрустрация накатывает, когда порриджи начинают гундеть о "красивом" коде. Не типо- или потокобезопасном, не поддерживаемом, не производительном - красивом. Эстеты блять. Весь ебаный код уже "красивый", в рюшечках-анноташках, блять, а им все мало, давай еще красивше.
Ну ладно вары, вары впринципе неплохая фича, с точки зрения развития системы типов type inference - это прогресс. Но раскатывать телегу о сраном методе на стримах, или каких нить силед классах или свичах новых - да идите вы нахуй, выслушивать ваши оскорбления и мигрировать ради такой хуйни.
Хуя дед порвался, иди на 8-й жабе попиши, чтобы успокоиться немного.
>>Весь ебаный код уже "красивый", в рюшечках-анноташках, блять, а им все мало, давай еще красивше.
Ну вот я написал функцию на вебфлаксе и стримах на 2 экрана. Красивое. Боб был бы доволен.
>>Не типо- или потокобезопасном
Ну тут жава со спрингом уже все сделали, там выебнуться особо нечем. Можно йоба запросы на сиквелке писать, но это не только лишь все оценят.
>>мигрировать ради такой хуйни.
Так а если там больше и нет нихуя реально полезного? На 17 переходить будут только ради спринг бут 3, но я хз что там нового. Как то и не видно выступлений на джугах как третий все поменял, будто бы и не было ничего.
>Ну вот я написал функцию на вебфлаксе и стримах на 2 экрана.
Да-да, слыхали. Вас блять когда разговор об качестве кода заходит, всегда мотает из крайности в крайность. Типа, если не аннотации, то портянка на 2 экрана, иного быть не может. Заикнешься говорить о декомпозиции и абстрагировании - ответите что вместо двух экранов будет сотня файлов-модулей, и тоже иного быть не может. И только когда спринг или чатгпт за вас все напишет, вот тогда будет заибца. Непонятно только нахуя нужны вы.
И главное - написал какой то стрим на два экрана, зачем то рассказал об этом, и типа этот факт должен стать в этой теме чем? Аргументом? Опровержением? Какой вывод то?
Забей, короче, бессмысленно это все. Ни ты меня не переубедишь, ни я тебя.
>Ну тут жава со спрингом уже все сделали
>типо- или потокобезопасном
Да ща. Спринг сделал... В каком месте?
Поддвачну.
Пишут что 17 на 6,5% быстрее, чем 11 и на 15% чем 8.
поддвачну. И я против варов
Я тоже считаю его говноедом, но то что у него есть авторитет в индустрии - неоспоримо. Везде можно найти тимлидов, дрочащих джунов его книжкой.
https://openjdk.org/jeps/8302326
После этого джепа у скуфидонов на 8 жабе начался сущий кошмар!
Подскажите нубу, как управлять и что правильно прописывать в /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)
Но файлом это не управляет, в нем все-равно
> export J2SDKDIR=/usr/lib/jvm/java-8-oracle
> export J2REDIR=/usr/lib/jvm/java-8-oracle/jre
> export PATH=$PATH:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
> export JAVA_HOME=/usr/lib/jvm/java-8-oracle
> export DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
Что, все это вручную менять? Нужна либа 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`.
Подскажите нубу, как управлять и что правильно прописывать в /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)
Но файлом это не управляет, в нем все-равно
> export J2SDKDIR=/usr/lib/jvm/java-8-oracle
> export J2REDIR=/usr/lib/jvm/java-8-oracle/jre
> export PATH=$PATH:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
> export JAVA_HOME=/usr/lib/jvm/java-8-oracle
> export DERBY_HOME=/usr/lib/jvm/java-8-oracle/db
Что, все это вручную менять? Нужна либа 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`.
sdkman
Когда операторы верхнего уровня как в сишарпе?
Дядька Боб - авторитет от безнадеги. Альтернатив попросту нет особо.
Кек, забавный джеп) Назад к процедурным истокам)
Не надо ничего прописывать.
И не надо никогда джаву ставить из репозиториев линукса. В репах дистрибутивов та джава, которая нужна этим дистрибутивам, а не тебе как разработчику, и она всегда будет старая.
Юзай https://sdkman.io/. Через него поставишь и джаву, и мавен/градл, сможешь быстро скачивать апдейты, альтернативные дистрибутивы, переключаться между релизами и никогда нигде ничего не прописывать ручками.
Это был сарказм, он же все время топит за сотню микрометодов в 3 строчки.
только если будешь работать продажником или менеджером каким, у которого инструмент это рот
вокруг шум и мельтешение за спиной и перед глазами. Двачи не почитаешь. Сосредоточиться невозможно
А ну тогда точно работать там не смогу, меня даже дом отвлекают переодически от философских размышлений во время написания крудов, там тогда просто шум будет вместо мыслей. Буду морозить их до последнего значит.
Бтв, может кто-то подскажет бест практис, как взять побольше времени на подумать, когда дают оффер. И сколько вообще обычно просите, если не уверены, что пойдете?
Да по-моему я сам какую-то древнюю версию поставил, когда пробовал торрент-клиент один, который внезапно требовал старую версию. Я отошел от разработки андроида на время, и в это время вот нахимичил. А теперь не пойму,к ак назад вернуться. Не знаю, sdkman наверно для меня избыточная шутка. Мне бы понять, как поправить /etc/profile.d/jdk.sh и больше я в это наверн не полезу.
Я по времени имел ввиду, деньги то понятно, что согласно опыту и компетенции
Для целей обучения и написания пет проектов кафку можно на винду поставить? Только начал с ней знакомство, пишут, что поставить можно, но какие-то проблемы возникнут. Во время обучения и петов я с этими проблемами столкнусь?
Есть у кого-нибудь опыт использования Докера и игр в онлайн-дрочильни одновременно? У меня круглые сутки напролет включена такая, и система защиты в ней ОЧЕНЬ НЕ ЛЮБИТ виртуальные машины. Никто истории не слышал, что из-за докера забанило кого-нибудь? Безопасно пользоваться?
Поставить линукс на единственный комп возможности нет.
И еще вопрос, могу ли я ожидать х 2 от зп в случае успешного прохождения стажировки?
Ок, понял тебя.
>>13068
Вобщем, я хз откуда этот файл у тебя взялся изначально, но alternatives с ним скорее всего тупо не работает. В линухах вокруг джавы выстроена хитрая система из символических линок, и alternatives позволяет перключаться между несколькими версипями джавы в системе, апдейтя лишь эти линки (типа, предполагается что переменные окружения тоже будут указывать на пути с лингками, и их апдейт не потребуется). В файлы не лезет.
Ответ на твой вопрос сводится к вопросу о том, откуда вообще взялся этот скорипт. Может, ты сам его когда то по гайдам накопипастил и забыл? Или может быть его прописал android sdk? Я могу лишь посоветовать их обновить руками.
Можешь поискать тут еще тред андроидодевелоперов, и там спросить.
Бери к чему душа больше лежит, главное - вкатуном на жопе не сиди, стаж набирай.
>могу ли я ожидать х 2 от зп в случае успешного прохождения стажировки?
Врядли. Смотря какой x.
Как я это вижу:
Создаешь массив интов размером (длина строки +1)
Берешь рандомайзер интов
В начало ставишь 0
В цикле
....смотришь очередной символ из строки
....если это I,
........то в очередной элемент массива интов
........кладешь рандомный инт в диапазоне от (инт из передыщего ........элемента массива) до (инт=длине строки)
....иначе
........кладешь рандомный инт в диапазоне от 0
........ до (инт из передыщего элемента массива)
Просто начни с азов (крутани рулеточку)
Я просто только начал с ней ознакомление, и мне сразу в гугле написали, что на винде с ней какие-то траблы, WSL2 или докер. Вот я и пришел подуточнить, испытаю ли я какие либо проблемы если мне чисто петы писать на ней.
Используй докер и не парься.
Вот тут книги хейтят, а между тем хорошая книга по алгоритмам сразу бустанёт скилл решения задачек с литкода
> на винде с ней какие-то траблы
В своих учебных хеллоуворлдах никогда с проблемами на винде не столкнёшься. Проблемы будут только на проде, как и с любым серверным софтом на винде, включая сам докер.
за видео лайк
Да умею я решать алгоритмы, просто не выспалась. Упала производительность мозга.
Вот ошибка: !!! JUnit version 3.8 or later expected
Ебанутый?
JUnit сложный и непонятный, я его не осилил. Юзаю TestNG.
НАХУЯ???????????????????????????????????????
Можно как угодно к этому относиться, но в жабу никогда это на завезут. По уровню развития синтаксиса самая последняя жаба не дотягивает даже до шарпа десятилетней давности. Да куда там до шарпа, если type erasure до сих пор не выпилили. А всё из-за обратной совместимости, которой на практике нихуя нет.
Сердобольный чмоня-шарпист опять пытается забесплатно продать поделку майков через балабольство о том, в чем он нихуя не сечет.
Эти оправдания бесплатной лахты.
Шарпообрыган пыхнул.
Пришло время переустанавливать идею!
Стул спиздят.
Ни как. Уоллс не написал полноценное веб-приложение в своей книге, поэтому и у меня оно не доделано.
Хз что там в книге, но если ты хочешь использовать авторизацию через гугл/гитхаб, то сначала тебе нужно зарегистрировать своё приложение (получить ключи) в гугле/гитхабе
Нет, совершенно ничего не понял. Вот Адам Фриман в книге по ASP.NET последовательно строит своё приложение и можно пройти через все этапы и получить законченное приложение. А в книгах по джаве авторы откровенно плюют в читателя, видимо рассчитывая по-быстрому срубить деньжат на вкатунах.
Двачую, заебали затупки, особенно на работе. Хуле я такой умный ебать?
Но на работу возьмут тупенького, но приятного в общении, а не токсика-задрота.
Уверено решаю эти задачки на литкоде, но это ни как не помогает с изучением Спринга
Конечно. А я вчера за вечер написал свой аналог хуибернейта, но работаю на галере за 100к, потому что мне тут нравится.
Джава для меня не первый язык, поэтому алгоритмических задачек я нарешался ранее. Нас 4 года в универе пичкали лабами, где, как и на литкоде, всё сводилось к 3 действиям:
1. Привести данные к нужному виду
2. Применить алгоритм
3. Вывести результат
99% задачек с литкода именно такие. Когда поймёшь этот принцип, то будешь щелкать их как орешки.
А вот изучение Спринга упирается в отсутствие информации по нему. Она вся разрозненная и я не вижу общей картины. Ну допустим я научился крутить эти бины, а дальше что? Все книги на этом моменте обрываются. Практическое применение бинов никто не пишет.
Изучение спринга упирается в тупое заучивание аннотаций, если ты не способен на это, то и про алгосы напиздел.
Если тебе надо все от и до и в одном месте и ты не можешь искать инфу в интернете(читать доку, баелдунг и стековерфлоу), не можешь читать на английском, не можешь собрать все это вместе и применять самостоятельно - то выход только курсы или ментор.
У отуса тысяч 300 стоят. Может скидку сможешь найти или курсы по спрингу подешевле.
Ментор стоит тоже где-то тысяч от 3 за час.
Что значит не равно? Аннотации - это инструменты. Зная, что делает каждый из инструментов или хотя бы бОльшую часть можно запросто применить один или несколько из них для решения возникшей задачи. Если тебе надо забить гвоздь, а ты знаешь, что молотком можно забивать гвозди, то просто берешь и делаешь без задней мысли, вот и здесь так же. Да и в петах просто не бывает таких задач, которые сильно прокачают тебя в понимании спринга в целом, пока не попадешь в кромешный ад и пиздец на работу, хорошего владения технологией не достигнешь.
Так сам Боб писал, что в тестах так делать не надо.
Пиздец все кругом жалуются на то, что работу не найти. Че, реально такое говно и джуны с мидлами не нужны? И реально к джуну теперь дохрена хотелок, что на джунов только мидлы проходят?
>Это может плохо кончиться, одно мимолетное упоминание ЕО заставляет знатно просраться даже самых зажатых анальников.
Бля, а чем он так страшен? Почему нельзя говорить, что читал ЕО?
И какая же хорошая?
Это копия, сохраненная 6 апреля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.