Это копия, сохраненная 29 сентября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вики по вкатыванию в джаву🎓: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>2730933 (OP)
Сразу база треда полилась. Перекатывайтесь, джавапетуханы, пока не поздно.
А работа на твоём шарпе есть, А?
Не упоминай что ты писал на джаве.
Да похуй мне вообще какой язык там лучше/хуже, это все для дегенератов без жизни, а Энтерпрайз и на жаве сладко пишется
Какая рельса, что сказать-то хотел, гений?
прогнал меня почти по всему кору, правда внутрь внутренние реализации коллекций не спрашивал.
Прогнал по Spring core. Стандартные вопросы про скоупы бинов, как конфигурировать.
Был смешной вопрос: "Что мне делать, если мне не нравится реализация класса Стринг и я хочу создать свой".
Затем мы прошлись по всем моим учебным проектам и я рассказывал что тут для чего. Какая аннотация что делает.
Потом попросил написать меня юнтитест для класса, с чем я не справился пушта там надо было мокать jdbcTemplate, а без гугла я не смог условие в when прописать.
Потом мы открыли простой текстовый редактор и я написал в нём на спринге CRUD для условного эндпоинта /user
Ну и решил задачку в этом же редакторе на зубчатый массив.
Дано: [1,2] [3,4] [5,6] метод должен вернуть [1,3,5][2,4,6]
>как конфигурировать
Ну и как?
>Что мне делать, если мне не нравится реализация класса Стринг и я хочу создать свой
Ну и что?
>Ну и решил задачку в этом же редакторе на зубчатый массив
Ну и как решил?
>Что мне делать, если мне не нравится реализация класса Стринг и я хочу создать свой
Реально странный вопрос, мы ж не в cpp, где можно делать хоть 100500 реализаций, тут у стринга помощь от jvm, она литерали подменяет методы, шоб работало быстрее.
>Потом мы открыли простой текстовый редактор
Ебанутые что ли? Типа я должен помнить все импорты и нейминги методов? Какая-то странная контора, компеляцию прям там же не попросила провести?
> на зубчатый массив.
Это не зубчатый массив, в чем задача вообще?
> Реально странный вопрос, мы ж не в cpp, где можно делать хоть 100500 реализаций, тут у стринга помощь от jvm, она литерали подменяет методы, шоб работало быстрее.
Примерное такой ответ и ожидался.
> Ебанутые что ли? Типа я должен помнить все импорты и нейминги методов? Какая-то странная контора, компеляцию прям там же не попросила провести?
Это самый крупный банк РФ. Да и никакие методы не требуются же. Ты не помнишь как массивы в лист положить и фором по нему пройтись?
Даже когда станешь сеньором. Только вопросы будут типа "расскажите как устроена кафка" и "расскажите о паттернах микросервисной архитектуры, которые вам приходилось использовать"
>Только вопросы будут типа "расскажите как устроена кафка"
э ну там девопс ставил я хз
чето пишешь туда читаешь
>"расскажите о паттернах микросервисной архитектуры, которые вам приходилось использовать"
апи гейтвей
>апи гейтвей
Ну это не серьезно. Там ждут что ты хотя бы о саге и транзакшнл аутбокс расскажешь.
> Ты не помнишь как массивы в лист положить и фором по нему пройтись?
list .ddAll(Arrays.asList(array)) и так по каждому
сеньор
Ну не только форы. Я б например без идешечки вряд ли смог мокать этот темплейт. Да и не ебу где там в спринге спрятаны импорты от аннотаций.
Кстати, а нахуя здесь лист?
>Это самый крупный банк РФ.
Бля, а неплохие амбиции на первый-то собес.
>>760131
Надо просто адд тогда. Там же вложенные листы... Но ас лист дает иммутабельные листы, ну не совсем иммутабельные, только по размеру, потому нужно обернуть там new ArrayList(), например.
Ну значит проект не серьезный. На самом деле сага достаточно часто используется.
ну у нас нет, все домены внутри микросервиса инкапсулируются
Хули тебе отвечать. Если ты не знаешь ответа на эти вопросы, то оно тебе нахуй не надо.
нет, но если не ответишь ты, то возьмешь за щеку
>>Это каждый раз происходит или когда я стану мидлом собесы перестанут длиться по 2 часа?
От конторы зависит, в некоторых типа сбера тебя будучи сеньором будут по всей теории гонять, начиная с определения класса и т.д., причем могут и про спринг не спрашивать.
В норм. конторах на мидла/сеньора спрашивают про опыт, паттерны, архитектуру, как устроена кафка, кролик, кишки спринга, хибернейта и т.д.
Почему с юриспруденции ушел? Стал бы уважаемым опытным кабанидзе, а теперь будешь вынужден конкурировать с зумерами.
Я другой анон, но тоже работал до айтишки юристом.
На собесах на юриста не просто так особо жестко не спрашивают.
Хотя могли бы по основным кодексам и фз, нужными для определённой погонять.
Потому что там решает блат на 90%. Если твои предки не судьи, кабанычи или еще какие начальники юр отдела, то с вероятностью 90% ты будешь до пенсии работать за соротыгу. Ну и 10% сами смогут нужные связи наработать и подняться.
Хотя бы пенсия будет, в айти к 40 годам выкинут на улицу, будешь побираться на фриланс-биржах а с джавой его вообще не будет
Какой лвл, как вкатился, что в резюмехе после курсов писал, как тебя вообще в сбер на собес позвали, туда вкатунов не берут
Еще помню меня из суда кабаныч подвозил один, который с моей конторой на одной стороне судебного процесса был.
Я был 22 лвл после института. А он меня лет на 5 старше.
Такая охуенно была комфортная тачка. Ауди кроссовер. Меня в автомобилях укачивает и тошнит от выхлопухи и плохого пластика. Типа в корпоративном фокусе, на котором меня водила в командировки возил было еще ничего, а вот всякие тазы и логаны просто пиздец, мне после поездки надо час отходит.
А в эту тачку сел и там свежо, вообще не ощущается что в машине едешь и места больше чем в кабинете, где я пахал.
Короче просто поразился тогда. Это еще добрый кабаныч был. А некоторые прямо как на жука на тебя смотрят, издеваются какое ты нищее чмо.
Вернулся, а там сидит мой коллега с 12 лвл стажем с зп около тридцатыги. Выглядит на 50 в свои 35 и шуточки тупые шутит с девчонками моего возраста. Работа вне айти, как страшный сон.
Пиздец, уж лучше на завод к грече пойти, если айти не осилил, чем за 30к юриком сидеть в свои 35
Ну и сама работа говно. Я за те же деньги, что получаю сейчас джавистом и даже немножко выше тоже не пошел бы опять юристом.
Сроки больше всего бесят, каждый день как белка в колесе.
Вот представь. У тебя в работе одновременно 50 документов. Сроки от сегодня до месяца. Обычно треть - в течении пары дней.
Тебе их надо написать, подписать, прикрепить к ним сопроводительные документы, завизировать у начальника, отправить, сходить с ними в суд. Что-то из этого сделать.
Ну и не проебываться по срокам нереально.
Тебе постоянно надо искать способы и уловки. Если не нашел надо скрывать факап или перекидывать. Если не смог скрыть - очко начальника должно быть всегда отполировано, чтобы он тебя не депремировал за факап.
Ну и вообще это очень социоблядская работа. Надо постоянно вызванивать коллег, чтобы они сделали то что должны. Нужно вызванивать людей из других контор, чтобы они что-то тебе подсказали или сделали. Нужно бегать по городу для всяких манипуляций с документами. Нужно ездить в командировки в суды, в том числе в совсем мухосрани.
Тонкий наброс...
Ушёл потому что понял, что мне не нравится скакать кабанчиком. Аутировать за пекой приятнее. Плюс зарплата выше, а заебов меньше.
Так я в сбере юристом и работал, поэтому на собес попасть не проблема. Резюме слепил за секунду. Т.к. ещё не прошёл карьерный трек. Указал весь стек, который учил на курсах и все. Сделал 10 откликов. Получил 9 отказов, на 10 пригласили на собес.
Лвл 25
А так ты через связи в обход общей очереди пробрался. Понятно. Украл рабочее место у более сообразительных челиков, которые даже на собес попасть не смогут из-за заградительных хр фильтров
Какой же ты молодец.
Врал?
>пушта там надо было мокать jdbcTemplate
не надо. Запросы к базе надо тестировать
>Что мне делать, если мне не нравится реализация класса Стринг и я хочу создать свой
идти в байтоёбы. Какой правильный ответ?
В юнит-тесте надо мокать jdbcTemplate. Если тестируются запросы, то это другой тест.
и в чем смысл такого юнит-теста?
Нет, тестировать надо максимально полно, минимально затрагивая и раскрывая детали реализации
> и в чем смысл такого юнит-теста?
Проверить логику в коде.
> Нет, тестировать надо максимально полно, минимально затрагивая и раскрывая детали реализации
Это не юнит-тест.
логику чего? Твоя логика тесно завязана на sql, значит и тестировать надо вместе
ты какую-то лохматую книгу из двухтысячных прочитал. Не дядюшки боба?
Моки - последнее дело. Если можешь тестировать с поднятием базы - делай именно так. Все вокруг мокать и потом "тестировать" узкий срез - не имеет смысла
Это ты тот самый анон, который насколько тредов назад рассуждал о "мокающих дебилах"? Если да, вопросов больше не имею.
нет, не я. Но я думаю что у меня больше опыта чем у тебя. И я гораздо больше видел падающих тестов с моками от малейшего изменения реализации. В чем тогда их смысл если они повторяют реализацию
Тест и должен упасть от малейшего изменения реализации. Иначе толку от этого теста ноль.
Чё бля? Нахуя?
>>763577
Хуйню порете, пацаны.
Дело даже не в том, посыпался тест или не посыпался. Юнит тесты пишут чтобы зафиксировать ценную семантику у юнита. Например, если юнит считает баланс корзины, он должен считать его предсказуемо вне зависимости от того, как реализацию этой корзины написали-переписали-отрефакторили.
И хуйня-мантра, что "тесты должны от малейшего изменения падать". Падать они должны от малейшего изменения семантики юнита под тестом, а не от любого изменения. Последнее еще имеет имя fragile tests и считается антипаттерном. В примере выше - если подсчет баланса корзины в определенного момента по какой то причине стал включать в себя учет скидок, это повод поменять тест. Но если корзину просто отрефачили, трогать тесты вообще не в интересах рефакторящего - тесты его предохраняют от корнер кейсов которые он забыл учесть за собой, и как результат - от регрессий.
Может в кои то веки джавадока к коду появится... хотя кого я обманываю.
Еще не озвучили, но я юристом на 6 грейде имею оклад 60100, а там будет 9.
Это да. Но от чего то такие типчики сразу про это не пишут тут. Вскользь мож на 5 посте упоминают.
Ну он понимает, что он просто мошенник, который украл чужое место, поэтому и помалкивает. Нет математической базы, алгоритмической подготовки, понимания устройства компьютера. Он не ответит даже на элементарный вопрос, почему long и double имеют одинаковую длину 64 бита, а double может хранить числа аж до 10^308, а лонг только до 10^18. Но зато он смог узнать и выучить вопросики для собеса и подложить своё резюме в обход всех заградительных фильтров. Когда тысяча других желающих этого сделать не сможет, хотя их подготовка вероятно гораздо лучше
Хера ты говно высрал, маня. Студенты универов попадают в компании через стажировки. У вкатунов вроде меня база плюс минус одинаковая. Как знания этой хрени про 64 бита в лонг и дабл помогут не писать код? Забавно что ты высираешься про то, что я незаслуженно получил это место, хотя я хуярил как не в себя и учился больше года. Энивей я вкатился, а челики, которые знают какую-то не нужную муть, а переключить GC не смогут не вкатились. Вопросы?
>Вопросы?
Почему сразу то не пишешь - прошел по блату? Нахуя ты тут высераешь свой пример, на который смотрят вкатуны, но при этом изначально умалчиваешь самую важную деталь?
А кто мешает тебе устроиться в хелпдеск любой айти компании и также как тот юрист подать резюме на разраба внутри? Обычно студенты из всяких колледжей, которых учили на сисадминов, так и делают чтобы не конкурировать за стажировку с студентами с вышки
Где ты блат увидел? 9 отказов тебя не смутило? Техническое интервью с решением алгоритмической задачи шутка какая-то?
По сути мне просто повезло, что hr мне позвонила. Я по политике компании вообще не имею права на такие грейды откликаться. Я отличаюсь от других вкатунов только тем, что мне повезло оказаться внутри компании у которой развит it кластер и тем, что мне зачем-то решил позвонить hr. Это в большей степени удача.
Мой одногруппник с этих же курсов вообще устроился на работу через hh. Ему сама написала хрюша их какой-то компании, сказала что хорошее резюме и позвала на собес, который он успешно прошёл. Это тоже блат и он занял место более умного чела?
>алгоритмической задачи
Дано: [1,2] [3,4] [5,6] метод должен вернуть [1,3,5][2,4,6]
>алгоритмической задачи
Условие не совсем верное. В дано может быть не три массива. Там их может быть бесконечное множество. Типа [1,2][3,4][5,6]...
Если отбросить само громоздкое красно-черное дерево, то почему бы и нет. Простое задание, но покажет понимание человеком структур данных и алгоритмической сложности. А то что выше - это не алгоритмы, это даже не two sum или физбаз, а просто задание на знание индексов в массиве. Ну то есть буквально 4 занятие по языку программирования.
Значит я легко отделался. Когда я сам писал в домашке treeMap, у меня на это ушло часа три.
>Так я в сбере юристом и работал, поэтому на собес попасть не проблема.
>Где ты блат увидел?
Да хуй знает)
Согласен, с непроблемой погорячился. На эмоциях писал.
Если анальник может ответить на такие вопросы, то он сможет ответить и на любые вопросы на собесе.
Ну и как работает красно-чёрное дерево?
https://github.com/XFWong/Head-First-Object-Oriented-Analysis-and-Design/blob/master/chapter05/ricksGuitars-mandolins/Inventory.java
Потому что он в том же пакете.
Рановато тебе читать книги по "дизайну". Начни с изучения кора.
спасибо
Двачую. Дебил.
https://docs.oracle.com/javase/specs/jls/se19/html/jls-16.html
Джава не любит, когда в коде есть неопределенные переменные. Без этого явного нуля код даже не скомпилируется, потому что значение instrument явно неопределено, когда spec - не GutarSpec и не MandolinSpec. И компилятор такие ситуации отслеживает.
Не я понимаю, что если не будет if ... else хуй ты оставишь без значения переменную. Я вообще про введение special значения в класс. Нахуя? Обычно этого можно избежать.
Хотя судя по отсутствию женериков, это какая-то старая старая книженция.
Спокуха, в книге сначала "плохой" код идет потом его оптимизируют. Вот окончательный вариант
Называется оно "головой вперед ориентироваться в объектах анализе и дизайне". Вряд ли там про глубокие размышления.
Чел про что ты, тут женериков нет даже, про iterable думаю вспоминать и не стоит.
Optional-то тут нахуя? Да и стримы по перфомансу бьют. Вам бы с автором сиквел написать.
>Optional-то тут нахуя?
Чтобы не возвращать нулл. Это теперь плохая практика.
>Да и стримы по перфомансу бьют.
Если пишешь на ебанном спринг буте - вообще поебать.
>Так возвращать optional практика не лучше. То же special значение.
Лучше. Макакий джва раза подумает межушным гангалием прежде чем начать дергать методы прямо с ходу или лезть за данными.
Когда уже оракле раздуплится нулл аннотациями...
Чем тебя этот вкатнуский сайт не устроил? https://docs.oracle.com/javase/tutorial/
Качественнее в плане точности информации нету.
> Шарписты забрали всю работу?
Нет, работы дохуя, но все хорошие ресурсы для вката надёжно спрятаны, чтобы вкатиться могли только достойные. Для остальных подготовлены ловушки, чтобы вкатуны только думали, что чему-то учатся, а когда до них дойдёт, что они топчутся на месте, будет уже слишком поздно. И остаётся им в спешке учить 1С и PHP.
Юзлесс что-то советовать.
Джава самый популярный язык на планете. Хорстманн, Эккель, Егор Бугаенко, Кэти Сиерра - про эти имена знают во всех уголках мира, как про имя Гарри Поттер.
Другое дело инфа по спрингу...
пилю в android studio так как целевая платформа это android
столкнулся с проблемой поверхностного знания явы именно с точки зрения работы с памятью. дело в том, что для оптимизации своей игры я делал подгрузку текстур по мере их надобности, а не загрузку всех текстур заранее, тем самым хорошо экономил потребление оперативы
в java я не понимаю как снизить потребление памяти. дело в том что я загружаю так же текстуры по мере надобности. после чего когда они уже не нужны я не знаю как их выгрузить. они просто занимают какое-то дико большое количество памяти.
можно ли как-то в java принудительно выгружать неиспользуемые данные? например я пробовал просто стирать эти переменные придавать им пустые значения, но толку нет никакого.
как вообще явисты решают вопрос с принудительным освобождением RAM
это читал?
https://libgdx.com/wiki/articles/memory-management
А так можно дёргать System.gc(), но это ниче не гарантирует. Можно объекту присвоить null. Есть еще всякие soft references, но это немного про другое. На этом вроде всё. JVM сама решает, когда ей освобождать память.
finalize()
Пидорас,опять на связь выходишь
ХАХАХАХАХАХА БЛЯ
СНАЧАЛА ПЕРЕЕЗЖАЮТ НА ГРАДЛ А ПОТОМ ДЕЛАЮТ ИЗ ГРАДЛА МАВЕН
>Другое дело инфа по спрингу...
Да, всего лишь фреймворк благодаря которому джава еще жива в кровавом ынтерпрайзе, но документация написана пидорами с синусоидальными руками. И устаревают в пизду быстрее чем версии джавы.
Он мне сам говорил, что он гпт-3.
В общем случае не существует такой вещи как принудительное освобождение памяти. Память подконтрольна GC, и освобождается тогда, когда на нее не остается ссылок.
Исключение - ресурсы offheap-ресурсы типа файловых дескрипторов и offheap буферов - для них обычно есть метод типа close и unload. Странно что ты вообще об этом спрашиваешь - в JSе разве не так же?
Ты доку либгдх то смотрел? Вот это вот - не оно?
https://libgdx.com/wiki/managing-your-assets#disposing-assets
Ну и плюсом - то что GC уничтожает обьекты не означает, что GC отдаст эту память операционной системе. Он ее придержит для будущих аллокаций, и на это есть свои причины.
https://stackoverflow.com/questions/30458195/does-gc-release-back-memory-to-os
Вроде и сениор дохуя, 6 лет опыта работы, но последний год-полтора все чаще чувствую, что я нихуя не знаю. У коллег сениоров опыт, конечно на лет 5-10 больше моего, но на фоне них чувствую себя временами ущербно. С самим написанием кода никаких проблем нет, все как по маслу и как того требует бизнес, но есть огромные дыры в архитектуре приложений плюс кишках самой жабы. Недавно появилась задача по исследованию утечки памяти - так я охуел с того, что я бля даже не знаю как приступить к задаче. Понятно, что гугление дало свои результаты, и я что-то там даже сделал, но ощущения были неприятные от того, что я не знаю того, чего знают любые мидл разрабы, наверное.
Короче, пока есть вдохновение учиться и изучать новое, хочу от вас получить какие-то советы что ли, книжки/статьи, которые вас охуенно забустили в какой-то теме.
Заранее спасибо каждому кто откликнется, с меня как обычно
слышал про некую книгу дракона - про построение операционных сетей. Сети - олифер. Это курс вуза кстати. Как прочитаешь и поймёшь от корки до корки - начинай прорабатывать кишочки жабы
Ты хотя бы джуновскую базу знаешь? Как числа в кудахтере хранятся, хип от стэка отличаешь или только жсоны грузить умеешь?
>Понятно, что гугление дало свои результаты, и я что-то там даже сделал, но ощущения были неприятные от того, что я не знаю того, чего знают любые мидл разрабы, наверное.
Не комплексуй. Грейд - это просто то, насколько дорого анальник продал свою жопу кабану, ни больше ни меньше. Если ты реально 6летний синьор и честно сам за собой все вышесказанное признал - то сам должен это понимать. По умолчанию экспертизу большинство набирают примерно так же как ты описал: впоролся в нужду первый раз, погуглил, изучил тему, сделал для себя выводы. А кто-то так и сычует всю жизнь, нихуя не научившись.
Позырь конференции - мне в свое время это дало хороший буст. JPoint и Jokerconf - твои бро, нагугли их в ютубе и вдохновляйся. Много годных докладов-нетленок было в период 2016-2020г. Можешь съездить даже, если можешь себе это позволить (или может за тебя тебе позволить твой работодатель), хотя сейчас конфы переживают не самые лучшие времена, по понятным причинам.
Мимо 10+ лет джавист.
Любишь видосики смотреть? А к доте и аниме как относишься, м?
Монолог как будто это предварительное интервью от херки, где она немного технических вопросов по бумажке задает.
Ты загоняешься, у меня за 5.5 лет такие задачи всплывали очень очень редко и практически никто с ходу не знает, как правильно проводить диагностику.
Что за бред про фриланс?
На жабе фриланса больше, чем на других языках
Откуда вообще такое мнение пошло, что на жабе нет фриланса?
Где его искать?
Под ВПНом не качает, даже под Тором выдаёт Oracle Access Manager Operation Error.
Слушайте, но не бейте сильно нуба, ну я вообще не прогер, а инженер - просто мой говноСАПР на современной Джаве не работает.
Если я отсюда скачаю - я не получу кипу троянов в систему?
https://archive.org/details/jre-8u51-windows-x64
Скачай у беллсофта.
Все на месте
>Условно, залогинился ты на сайте и кто-то хочет спиздить конфиденциальные данные аккаунта.
Каким образом?
Ну как csrf работает? Нажал по ссылке и отправился гет запрос на /id0 в вк скажем. Получили какие-то скрытые поля, если существует сессия.
Хотя я чёт не понимаю, в какой момент куки появляются в хедере.
Вот кому-то делать нехуй, лол.
лол. Выпилили rest template переехали на реактивную нонблок парашу WebClient, потом скуфы в оракле запили виртуальные треды, эти решили вернуть rest template только под другим именем. Теперь-то можно спокойно блокирующий код в отдельный виртуальный тред кидать.
Урааа статьи по spring !! 1
как читать букавы...
Ну - сагу городить конечно перебор для такой мелочи, но тыж сам должен понимать что как только ты делишь реляционную модель на два независимых куска, нормализация, констрейны и прочие ACID гарантии идут по пизде.
Обычно это решают глобальным айдишником и эвентами. Типа - удалился юзер, юзер сервис шлет на брокер сообщение, что "юзер такой то удалился". А остальные сервисы подписываются на это сообщение и реагируют на него. Например, инвалидируют связанные с этим юзером ресурсы.
Есть приложение с multi tenancy, есть главная схема и схема на каждого тенанта. Для работы с этим есть два ентити менеджера, мастер который всегда на мастер схему смотрит и тенант, который динамически ставится. И вот мне нужно создать ентити, который мог бы содержать другую ентити, которая есть и в мастер схеме и в схемах тенанта.
Я пытался через @MappedSuperclass, но ведь его нельзя указывать в других ентитях ибо его не видно, а делать по филд для мастерИд и тенантИд выглядит туповато.
В каком направлении мне смотреть нужно?
Ты пытаешся просто сущность связки сделать? Нахуй тебе @MappedSuperclass куда ты наследоваться собрался? Или ты имел в виду @EmbeddedId? В любом случае просто сделай идшки и забей хуй. Все равно нормально повесить зарубежный ключ на них не сможешь.
>Дали таск и я над ним туплю и чет не понимаю как делать.
Готов помочь за процент от зарплаты.
Да, пока-что просто связать.
>Нахуй тебе @MappedSuperclass куда ты наследоваться собрался?
Это я просто пытался бреинсторить так сказать. Ибо вот есть EntityMaster и EntityTenant, должен быть EntityHolder, который по моей идее бы держал EntityParent, а мастер и тенант от него наследовали. Ток оно с ошибкой падает что парент unkown, погуглив я понял что это из-за @MappedSuperclass, нельзя на него ссылаться на реальных ентитях.
>В любом случае просто сделай идшки и забей хуй
Это вообще нормально? Выглядит же пиздец всрато, всегда есть филд который будет нулом, типо EntityHolder будет иметь entity_master_id и entity_tenant_id, а потом смотря какой из них не нул то обращаться в нужной схеме. В хибере ничего не смогли придумать что ли?
>>769682
Как удостоверится что поможешь и помощь решит мою проблему? А если кинешь?
>Как удостоверится что поможешь и помощь решит мою проблему? А если кинешь?
50% до, 50% после.
@
оно действительно работает как магия, никто не понимает как и что делает
@
на собесах дрочат кишочками этой магии
@
хорошо
Да, абстракции протекают. Глупо было надеяться, что не протекут.
Как же заебал хибер, в нём всё через жопу.
Реально пиздец, я всё больше имею желание начать читать Бугаенко, судя по смехуеечек с него здесь. Вот как объяснить эту залупу на пикриле? Весь день проебался с дискриминатором потому что не хотел создавать лишнее поле, ладно похуй создал. Теперь оно срёт мне что Cannot instantiate abstract class or interface. А НАХУЯ ТОГДА ТЕБЕ ДИСКРЕМИНАТОР ЕСЛИ ТЫ ВСЁ РАВНО РОДИТЕЛЯ ДОСТАЁШЬ?? На кой чёрт указывать resultClass если ему похуй. Пикрил собрал сейчас чтобы тестить вдали от реального кода.
>>770037
Что мешает тебе забрать 50% до и кинуть?
Бля буду.
Каждый раз когда я так думаю, то задаюсь вопросом а нельзя просто нахуй хибер с проекта снести, но тимлид не даёт
@DiscriminatorValue ставил над MasterTestClinet? Включи полный дебаг SQL и глянь чо оно там вставляет и достает.
Не знаю... инфы ноль о нем...
После того как добавил это поле в БД то поставил и начало работать.
https://vladmihalcea.com/the-best-way-to-map-the-discriminatorcolumn-with-jpa-and-hibernate/
Отсюда взял. Однако проблема как и написал, оно пытается этот абстрактный класс естественно инстанциировать.
Пиздец, такой простой вопрос:" как при использовании одного филда в ентити иметь доступ к разным ентитям из разных схем" Вроде и интерфейс сделал и абстракный класс, всё равно говно
Кароч разобрался, всё там нормально, болие ли мение по крайней мере, это просто я тупень.
ХИБЕРНЕЙТ ЭКОНОМИТ ВРЕМЯ
Я не понимаю, на собесах алгосы или кишочки фреймворков дрочат?
Если первое абсолютно нахуй не надо, то второе +- полезно...
Кстати, пример задачек, которые затруднения вызвали скинь.
Ну алгосы вроде, кишочки можно и в процессе работы узнать, а вот научиться решать эти ебучие задачки…
>пример задачек, которые затруднения вызвали скинь
Их слишком дохуя, чтобы все скинуть, наверное из всех могу выделить задачки на дп, для меня они одни из самых тяжелых
>кишочки можно и в процессе работы узнать
Алгосы можно там же узнать.
>могу выделить задачки на дп
Вообще, кстати странный термин. Вроде как это разбивка разделяй и властвуй, но тем не менее выясняется, что это ебучий подбор магических формул. А ну и обычно объяснения чисто математические: "очевидно, что"
Ну вертеть деревья и пересобирать массивы не сложно, если ты конечно владеешь линками.
Хотя вот алгоритм балансировки я хуй напишу. Но зач оно мне надо, если есть TreeMap
Лол, чел, я начинал прогать с книжки по алгосам, много деревьев написал сам и до сих пор помню как они устроены, но этого нихуя не достаточно, потому что есть задачи, которые ты либо знаешь/догадался как решать, либо сосешь хуй, проебываешь час-два времени и идешь смотреть как решили какие-то сверхразумы, а потом через время еще и забываешь это решение и все идет по кругу.
>и до сих пор помню как они устроены
Граф без циклов ну и пути у него во все ноды есть, если ориентирован то по крайней мере из корня.
>которые ты либо знаешь/догадался как решать
На собесах такое спрашивают? Или это только на олимпиадках и иже с ними
Большей порриджей можно привлечь. Они не любят технологии, проверенные временем, им новое подавай.
Так наоборот вернулись по сути к старому синхронному RestTemplate немного поменяв синтаксис.
Там же написано в коментах - не надо будет тянуть webflux в зависимости, если тебе не нужна реактивность.
Это был сарказм, bruh...
Контекстом легче управлять. Но я реактивщиной не пользовался, потому не ебу че там с ним.
А если сравнивать с обычными потоками, то виртуальные просто выкидываются из обработки в очередь, а не паркуются осью.
Ты задаешь неверный вопрос. Профитов никаких в этом нет. Но в отличие от нативных потоков, в закидывании блокирующего кода в виртуальные потоки нет ничего плохого, и в этом - профит виртуальных потоков. Писать блокирующий код гораздо легче, чем асинхронный, это умеют делать литералли все.
Каков язык - таков и.
Да.
Трололоша, не можешь успокоиться?
Да хоть на битрексе. Нарисуешь потом в резюме, что помимо РНР писал микросервисы на го и тебя с руками и ногами оторвут.
Но у меня 6 лет попыта и так. Аплаюсь на зепку джуна и не берут. Вот думаю может спрятать 5 из них и тогда возьмут?
Да, пиздуй.
>Писать блокирующий код гораздо легче, чем асинхронный, это умеют делать литералли все.
Давно ли блокирующий код стал синхронным? Он даже serializable-то далеко не всегда. Может ты имел ввиду non-blocked, но чет бля сомневаюсь, что кто-то атомиками напрямую манипулирует. Вон в прекрасном языке шарп, просто берёшь и запускаешь асинку или в гошечке горутинку.
Да нет, всего лишь из-за того что спринг слишком медленно запускался. Задач на оптимизацию и рефакторинг зависимостей никто не заводил, пока петух в жопу не клюнул.
Какое преимущество у джавы перед связкой питон+го? Правильный ответ - преимуществ нет. Вот вам новый стек
Ты это серьезно, клоун?
В джавамире никто алгосы не спрашивает. Дрочат заученные аннотации спринга, хибернейта, джейюнита, мокито. Мозги джаваскуфов закостенели и думать не способны. Оттого алгосов там нет, ибо скуфа могут обоссать прям на собесе. А вот аннотации скуф выучил хорошо и сможет заебать кандидата
А я уж обрадовался, что кого-то доебало писать на коболе с джавасинтаксисом.
Давненько я не колупался с JPA/Spring Data, поэтому могу ошибаться. Но если помню правильно, EntityManager::merge - то что тебе нужно.
https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#merge-T-
Можно использовать criteriaAPI, как тут https://stackoverflow.com/questions/24717292/spring-jpa-best-way-to-update-multiple-fields
Второй вариант выплевывать в кафку json и конвертить его в dto, например так:
https://docs.spring.io/spring-cloud-stream/docs/Brooklyn.SR1/reference/htmlsingle/#_using_streamlistener_for_automatic_content_type_handling ну или как описано в этой статье: https://www.baeldung.com/spring-kafka
Потом конвертишь dto в entity и используешь метод .save() JPA Reposirory у которого под капотом скрывается create or update.
Чел спрашивал как ему не сетать огромный список полей из мессаджа, а не как заперсистить в БД. Его вопрос сводится к тому как лучше десериализовать сообщение.
У меня такой же таск был, после гугления решил не ебать себе мозг и сделал просто заюзал BeanUtils у спринга для копипейста филдов и NativeQuery у хибера с UPSERT кверей, чтобы не делать лишние квери для мерджа.
>спойлер
Схуяли лол, с кафки уже должен прилетать json в обговоренном DTO. Вызывай потом просто mapstruct и будет тебе ентити
Я это и сказал. mapstruct то еще говнище, как и вся автогенерация кода, лично я modelMapper предпочитаю
>>778210
Но, вообще, иногда бывают ситуации, когда нет возможности использовать dto. Например у тебя продюсер это какая-то внешняя система, которая ничего не знает про твою реализацию и твои дто, а просто выплевывает тебе набор данных в формате ключ/значение. Тогда лучше использовать первый вариант с criteriaAPI
мегареспект мужик, вот он карлики СВЕРХЧЕЛОВЕК
Всегда боялся столкнуться с багами в чужом софте, а то потом буду думать что это я дебил и не умею кодить
мимо
Ну так искать баги в чужом софте и потом поверх делать это тоже скилл. Причем очень востребованный.
Нехуй бояться. Баги в зависимостях - обычное дело, встречается сплошь и рядом.
Причины подрыва? Ты еще, наверно, и дтошки свагером генерируешь, уеба? Чтобы полный набор симптомов был.
А от Kubernetes?
отношение IS-A
Выпил finalize сломает много легаси-кода, а проверяемые исключения можно выпилить хоть сейчас.
К 2030 году жава станет похожей на пыху, а пыха на жаву и они сколапсируют в один язык...
А я всегда заполнял массивы через fori...
Микросервисы на пхп можно хоть сейчас, но не нужно.
Микросервисы уже хз сколько лет пишут в компаниях на symfony/skeleton с messager компонентом
))0
Зато весело.
Скажи на собесе, что на великом голанге можно написать любой бэк на голой стандартной либе, попусти скуфанов заучивших магические аннотации спринга!
Впервые слышу, синьор.
Тогда спроси как сосется джавистам ведь у них до сих пор нет асинхронности в языке (потому что нет async/await). После этого они оценят твой кругозор и закроют глаза на пробелы в спринге.
Так а теперь хуй с ними. Нахуя, если виртуальные треды.
В го тоже.
Да, пусть пойдет и скажет. И попустит сам себя, ибо пиздеть - не мешки ворочать. Охуенная страта по вкату в кандидаты на премию дарвина.
>>781502
Всем похуй. А кому не похуй, подрубают котлин или лабают реактив. А ты, чмоня, небось и нагрузок то таких в своей жизни не видал, где тредов перестает хватать и нужно ебаться с асинхронщиной, а чето там вякаешь про то как там джавистам сосется.
Експерты, а что технически более совершенно виртуальные треды или вот асинки? Просто, вот например конкурентной мапы в шарпе вроде и нет. Вообще, я смотрю все, что под что авторством doug lea просто невероятно, в шарпе есть кто-то его уровня?
Асинки хуже, т.к. раскрашивают тебе функции. Из-за этого обычно каждую функцию дублируют. Типа есть CheckZalupa и CheckZalupaAsync, т.к. асинхронную функцию нельзя вызывать из синхронной.
А вообще шарп просто стал жертвой корпоративных кпи, когда тебе нужно постоянно чё-то изобретать, чтоб дать это в отчёте. Скуфам в оракле похуй на джаву в принципе, она и так идеальна, а индусам в майкрософте надо постоянно повышать менеджерские метрики эффективности, чтоб не попасть под сокращение, оттого они срут бесконечно новыми фичами, которые никому не нужны и которых никто не знает. В результате шарп разросся до размеров плюсов с документацией только по самому языку на несколько тысяч страниц.
Ну... так то конечно это надо хорошо так изъебнуться, чтобы сделать какбэ треды, но не нативные, и при этом сохранить по максимуму возможность срать блокировками. Да еще и методы не красить. Мое почтение.
Нахуя после этого вообще нужны рутины и асинк-авайт в джаве? Просто через ступень перешагнули нахуй.
>так то конечно это надо хорошо так изъебнуться, чтобы сделать какбэ треды, но не нативные, и при этом сохранить по максимуму возможность срать блокировками. Да еще и методы не красить. Мое почтение.
Erlang смог ещё в 1986. Go тоже смог.
>Erlang смог ещё в 1986
Erlang - не в счет, он функциональный.
>Go тоже смог.
Go делал это начисто, не имея за душой багажа легаси. Так кто угодно может.
Говори что тесты пишут только ебаные культисты TDD и ты напнимался разработчиком, а не тестировщиком.
По результатам последних 8 лет евангелизма TDD никогда не угадаешь, что встретишь в тестах. С 60% вероятностью там может встретиться параша, которая навсегда отобьет тебе охоту когда либо связываться с тестами. Но бывают и исключения.
Просто смотри как все делают и делай так же. Так хотя бы не вылетишь сразу.
Двачую.
Нахуя писать юнит тесты на строго типизированном языке.
А интеграционные/е2е пусть пишут автотестеры.
>>782706
>>как не вылететь с испытательного срока
Просто пиши такую же хуйню как в соседних классах/сервисах. Через полгода-год вам надоест их поддерживать и может быть начнете о чем то догадываться.
>Erlang - не в счет, он функциональный.
Чел у тебя каша в голове, это вообще никак не связано. Есть скала, кложа которые функциональные при этом спокойно компилируются в байткод.
>Go делал это начисто, не имея за душой багажа легаси. Так кто угодно может.
И кто кроме Го смог?
Смотрю Java вакансии хх.ру, там пиздец же, максимум 250-300к, а часто бывает и 150к.
Хрюши пишут с такими же предложениями.
Но это же блин мало.
У меня 10 лет опыта, я не должен работать за еду.
Давай станем любовниками. Будем вместе получать 600к (больше половины мультыги!!!).
Я жирный 40-летний скуф.
А у тебя кол в жопе, видимо, коли так настырно лезешь доказывать априори хуйню.
Это в императивных языках типа сей и джавы в определенный момент встала проблема конкуррентного доступа к общим мутабельным данным, из-за чего пришлось изъебываться, собирать грабли и придумывать модели памяти, конкарренси и всякие языковые конструкции, желательно не ломая совместимость. На них и приходится основное мясо.
В функциональных и прочих декларативных языках таких проблем и не было никогда. Там всем похуй было всю жизнь на ламерские асинк-авайты и рутины - хули им, когда в каком нить условном хаскелле все вычисления - ленивые, функции - чистые, а сайдэффекты надежно изолированны монадами. Хошь - параллель. Не хошь - не параллель. Для них что джаваны, что го-лемминги - один сорт черных людей с какими то унылыми загонами. Тот же эрланг - тоже считай просто залез в свой акторский райский манямирок, и ему там норм. Тока вот мейнстримом ни он, ни прочие функциональные языки так и не стали, максимум заняли свою нишу.
Любой инициативный челик с математическим бэкграундом может придумать-спиздить какую нибудь модель вычислений, где уже учтена нужда в параллелизации, и сделать на ее основе язык. Это несравнимо проще, чем вкорячивать новые конкарренси-фичи в язык, который тащит за собой багаж легаси. Поэтому первые не в счет.
>И кто кроме Го смог?
Спроси лучше - кому кроме го это было надо? По большей части всем кроме гугла было похуй.
Пара лет - считай уже не вкатун
Потому что для го нет golangrush с агрессивной рекламой для таксистов и грузчиков.
если ради денег - то в 1С лучше
Благословляю твой скорейший перекат в PHP. Вкатывайся в пыху, битрикс, 1С, JS, макросы на VBA, Python, ручное тестирование и подобное. Упаси тебя Боже даже подумать о вкате в джаву или шарп.
Почему у спринга такие омерзительные доки по сравнению с пхп ларавел? Понятно почему джава осталась только в легаси.
Вот и уёбывай в свою пыху из нашего легаси.
Ничем, уёбывай в свою джангу.
Ничем и ничего. Уёбывай в свои дотнеты.
>Вот и уёбывай в свою пыху из нашего легаси.
>Ничем, уёбывай в свою джангу.
>Уёбывай в свои дотнеты.
Видите, как тут всё плохо? Нас и так жизнь наказала, хз, чё вы сюда набежали.
Мы пишем на спринге и тут дохуя работы. Нахуя копаться в ваших помойных стеках?
Проблема в тебе. На других стеках все еще хуже.
Эх, вот бы в хуйбере можно было бы смаппить какули из БД в объекты так, как это тебе нужно под задачу... да не... хуйбер это ж просто хуйня про расставление ван ту мэни бллээдь
Эххх вот бы можно было бы высрать новый класс специально под задачу... с ограниченным контекстом... да не... анриал... это ж нарушение принципа дру кисс дринк юр оун писс
select * from comment where post_id = :postId
Если у тебя только один джойн, то можешь попробовать пиздануть pageable прямо в запрос. Хибер все равно постфактум твой кал склеивает в одно. При появлении второго джойна тебе правда розобьют ебало.
попробую угадать что сгенерит хибер
select from comment where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select from post where post_id = :postId
select * from post where post_id = :postId
Да похую. Я неправильно задачу понял. Как я понял ему нужен пагинированный список постов с последним (?) комментом. Пусть ебется или с запросом (сложна) или ставит тупой last_post_id.
Ну и что ты за хуйню написал? Мне нужны комменты в посте тоже
Да проблема не в pageable, а в том, что мне надо чтоб был не один обьект поста с комментами, а много возможно одинаковых обьектов поста и у каждого свой уникальный коммент и еще чтоб на эту хуйню работали лимиты с офсетами
select from post where post_id = :postId
select from comment where post_id = :postId order by created_at offset 10 limit 10
элементарно
Охуенно, только почему ты ищешь конкретный пост? Мне же нужны лимиты с офсетами по результирующей строке, а не только по комментам
Нельзя. Джава - платный проприетарный язык от Jetbrains, встроенный в IDEA. На сервер, соответственно, надо ставить серверную версию идеи.
ment
Все верно, лучшие разработчики - идеалисты.
Делаешь запрос с pageable на id своих обоссаных постов без джойнов и таскания данных. Потом делаешь запрос по массивам ids с джойнами и всей хуитой и не забудь сортировку тоже.
>А у тебя кол в жопе, видимо, коли так настырно лезешь доказывать априори хуйню.
Я был не прав, у тебя не каша в голове, а дерьмо вместо мозгов.
Иммутабельность и продвинутая многопоточность это ортогональные вещи. Иммутабельные структуры данных это просто способ борьбы с доступом к шаред данным, но не способ реализации многопоточности. Для реализации многопоточности иммутабельность не обязательна. В Го иммутабельных структур нет, а продвинутая многопоточность есть. А в том же Хаскеле кондовая многопоточность на базе тредов, хотя структуры данных иммутабельный, функции чистые и монады во все поля.
>Любой инициативный челик с математическим бэкграундом может придумать-спиздить какую нибудь модель вычислений, где уже учтена нужда в параллелизации, и сделать на ее основе язык. Это несравнимо проще, чем вкорячивать новые конкарренси-фичи в язык, который тащит за собой багаж легаси. Поэтому первые не в счет.
Дурак ты и не лечишься. Да Го было легче реализовать рантайм с легковесными тредами, чем Джаве. Но утверждать что это может любой челик с математическим бэкграундом, это надо быть таким дураком как ты.
>Спроси лучше - кому кроме го это было надо? По большей части всем кроме гугла было похуй.
То-то все асинхронность тащат, кто-то асинками, кто-то акторами, кто-то реактивное программирование пилит, кто-то корутины. Настолько всем эти, проблемы с классическими потоками, были похуй.
>Иммутабельные структуры данных
Ах ты дерьма кусок. Демагогию врубил?
Перечитай мой предыдущий мессаг и процитируй, где я хоть одним словом заикнулся про иммутабельные структуры данных. А когда ты нихуя не найдешь - пиздуй нахуй.
Асинхронность тащат, да, но не изобретая при этом новый ЯП, а вкорячивая в имеющиеся.
Мало кому в хуй всралось именно вбахивать бюджеты, соразмерные гугловским, на прокачку коммьюнити и экосистемы ЯП, который еще и может не взлететь.
>Но утверждать что это может любой челик с математическим бэкграундом
И что тебя смущает? Пайк, Томпсон, Гризмер, Тэйлор, Кокс. Конкретный костяк людей, стоящих у истоков гоу.
А почему нетбинс? Чем он лучше эклипса? Вот в госушной прокладке, откуда я с испытательного сбежал тоже был нетбинс.
Я вот когда изучал работу с spring data jpa года три назад - игрался с query dsl. А сейчас смотрю, что он сдох, уже 2 года нет обновлений. Хотя был удобнее, чем критерия и с типобезопасностью получше.
>Перечитай мой предыдущий мессаг и процитируй, где я хоть одним словом заикнулся про иммутабельные структуры данных. А когда ты нихуя не найдешь - пиздуй нахуй.
>>783989
>встала проблема конкуррентного доступа к общим мутабельным данным
>В функциональных и прочих декларативных языках таких проблем и не было никогда.
>>786514
>Асинхронность тащат, да, но не изобретая при этом новый ЯП, а вкорячивая в имеющиеся.
Только проблема в том, что по нормальному асинхронную работу можно сделать только если при дизайне языка про неё думать.
Акторы в Эранге органично вписываются в дизайн языка, а акторы в Скале костыль, который к тому же криво работает. Асинки красят функции и портят стектрейсы, а у Горутин таких проблем нет.
>>786523
>И что тебя смущает? Пайк, Томпсон, Гризмер, Тэйлор, Кокс. Конкретный костяк людей, стоящих у истоков гоу.
1. Некоторые моменты в дизайне Го вызывают вопросы о психическом здоровье авторов.
2. Будь ты хоть трижды гений, в одиночку язык не запилить. Нужна стандартная библиотека, нужно долго и методично работать над производительностью.
Бамп
Ну и че ты процитировал? Где я здесь утверждаю, что "иммутабельные структуры, это какой то там способ реализации многопоточности"? Сам бред придумал, сам его опроверг - типичный двачер-демагог в споре блять.
>Только проблема в том, что по нормальному асинхронную работу можно сделать только если при дизайне языка про неё думать.
Ты жопой не верти. Исходный стейтмент был про то, что с нуля учитывать проблемы при проектировании языка несравнимо проще, чем костылять в имеющихся, поэтому критиковать джаву апеллируя к гоу и эрлангу в этом вопросе смысла не имеет.
Что касается "нормальности" асинхронщины - а ты не дохуя ли на себя берешь с такими заявлениями? С чего ты решил что если эрланг существует с бородатых лет, все остальные языки должны были быть на него похожи и со старта лабать и мейнтейнить "зеленые" потоки проектировать? Чтобы что, какую проблему решить? Это сейчас, когда условный гугл обслуживает миллиарды запросов в секунду, старая схема "реквест-тредпул" для его юз-ке1йсов скейлится хуево, а во времена первых джав все было и так заебись. Причем что характерно, в первых джавах была своя либа с зелеными потоками, но ее выпилили за ненадобностью в версии 1.3 (https://web.archive.org/web/20040211225937/http://java.sun.com/developer/technicalArticles/Programming/linux/)
>Будь ты хоть трижды гений, в одиночку язык не запилить.
Я что, должен блять юридическим языком в диалоге с тобой все разжевывать, чтобы ты не капитанил? Ты еще давай впиши мне в качестве контраргумента что помимо стдлиба нужно нихуевое финансирование, чтобы язык занял хоть какую нибудь нишу, а не сдох в забвении. Идея языка тем не менее принадлежала трем людям из списка выше, первый тулинг для него также написали они, то есть стадию "придумать язык" они прошли сами.
>Будь ты хоть трижды гений, в одиночку язык не запилить. Нужна стандартная библиотека, нужно долго и методично работать над производительностью.
Мне что, при общении с тобой надо все досконально разжевывать?
Не, не паттерн. Реактор в мавене это просто механизм, который позволяет мавену понять, в каком порядке нужно собирать модули (так как модули могут друг от друга зависеть, порядок имеет значение).
>Если у меня должен быть класс, который из нескольких сорцов генерит какую-то штуку, как его назвать?
КлассКоторыйИзНесколькихСорцовГенеритКакуюТоШтуку
У критерии тоже все норм с типобезопасностью, она так же поддерживает метамодели классов. Хотя мне тоже нравился кверидсл.
Jooq как альтернатива.
Ну каким больным уебком надо быть чтобы такое выдумать?
Незаметная шарпоблядь незаметна.
Хуй тебе, это джава поглощает в себя котлин. Шарпы не нужны.
Чем?
Может тебе еще туда поддержку юникода добавить?
Нахуя в стандартной либе джсон, шиз? Этих джсонов - с десяток библиотек, есть даже одна от оракла в джакарте. Ты часом не из тех дебилов, у которых стандартная либа обязана быть все-в-одном?
Почему у анальников такие плохие зубы?
А вообще, советую во время отбора кандидатов обращать внимания на зубы анальника, в том числе прикус.
Чем хуже - тем более трушный задрот.
Чифирь на работе хлещут
На hh.ru практически в каждой вакансии: "Docker/K18s".
С Docker вроде еще понятно, он нужен для автоматического развертывания окружения.
А это что за хуйня?
Сервер приложений для докеров.
>для автоматического развертывания окружения
ахуенное определение докера
сразу видно ты разобрался в технологии
Ничем, уёбывай в свой ПЩ.
А у тебя кол в жопе, видимо, коли так настырно лезешь доказывать априори хуйню.
Если строка известна только в рантайме, то никак.
>Как без рефлексии сделать так чтобы строка "foo.bar.baz" превратилась в цепочку вызовов "foo.getBar().getBaz()"?
JEP 430 реализовать свой StringTemplate.Processor, но и там надо будет писать в синтаксисе Java: foo.getBar().getBaz()
На груви пиши
только создавая десктоп проги ощущаешь себя программистом. Если только в консольку срать умеешь - ощущение как от лабы с турбопаскалем
А если умеешь высирать гуи, то ощущение как от лабы с делфи.
Попробуй погуглить.
Там на примерах со свингом объясняются всякая многопоточка с комлитбл фьючами. Поэтому поверхностно можно прочитать, но не вчитываться.
Я уже думаю вкатиться в java и самому блять сделать его или форкануть какой нибудь и добавить нужных функций
Это тред про Спринг, Андроид обсуждают в другом месте.
отправляешь по https и нет нужного сертификата в системе. Прямо же об этом пишет
на серваке поднят nginx с https сертификатом, но я, как понимаю, его не использую.
Есть вариант отправлять по http или для smtp это важно? Или есть какой то вариант подргузить сертификат в докер? Нашел способы просто сертификат загрузить, а как его внутрь контейнера положить не представляю
если ты из докера отправляешь, то значит тебе надо позаботиться об этих сертификатах внутри своего образа.
Ищи как установить сертификаты в жабу, и прикрути эту команду в докерфайл
Там есть лог и stdout/err, а консоли нет. А если ты мудило не различаешь их, то тем хуже для тебя мудака.
мыл.ру разве не пидорнули белые господа из своих своих цепочек сертефикатов? Качай скрепные сертефикаты от товарища майора чтобы пользоваться этим спидозным калом вместо почты.
Ну ок, напишу я условие через ассерт, ну упадёт оно. Выдаст мне Error, который не перехватить, и всему пизда. А чтобы не было пизды, надо отключить ассерты, сделав эти строчки бессмысленными. Можно, конечно, использовать их только в тестах, но и там везде жэюнит, в котором assertTrue() и т.д. В общем, для меня этот кал выглядит как легаси-сахар, который позволяет срать не снимая свитер. В чём я не прав?
Для тестов и дебага это говно и нужно было. Никогда его не использовали для бизнес-логики.
1С
Стата:
1000+ откликов, 9 собесов, 2 оффера (но потенциально жду еще 1)
60-68к
Попробуй ChatGPT.
Пошёл нахуй, даун.
Ни в чем. За рантаймовые дженерики топят примерно те же люди, что топят за рефлексию в прикладном коде - малолетние дебилы.
аналитики востребованнее
Так по заветам Борисова ничего делать не надо, он на пальцах показывает как спринг устроен.
В прикладном коде иногда нужны аннотации, которые делаются над метааннотациями спринга. И там рефлексия не нужна.
Анончики, если я хочу в андроид-разработку, лучше Джава или Контлин?
Дайте советов мудрых.
>огда нужны аннотации
Чекни как вызов метода сервиса работает. Особенно если он @Transactional
Ты мне прямо на вопрос ответь. В каких случаях в прикладном коде на спринге нужно писать через рефлексию?
Не нужно. Рефлексию за тебя будет фреймворк делать.
Советую Android-тред.
Нихуя дегенерата порвало, лол
Не всё можно нормально реализовать. Например метод Map.get(Object) принимает именно Object а не тип ключа именно из-за ограничений дженериков в джаве. Или классический пример String[] приводим к Object[], а List<String> к List<Object> нет, то контр интуитивно и объясняется именно особенностями реализации. По объекту нельзя узнать для какого типа он специализирован, приходится добавлять тип в виде поля явно. Нельзя работать с примитивами.
>Например метод Map.get(Object) принимает именно Object а не тип ключа именно из-за ограничений дженериков в джаве
Нихуя подобного. Мапгет принимает обжект не из-за дженериков, а из-за долбоебизма кодеров, которые референс мапы оформляют без дженерика.
>Или классический пример String[] приводим к Object[], а List<String> к List<Object> нет то контр интуитивно и объясняется именно особенностями реализации
Опять нихуя подобного. Контринтуитивно это только для тех кодеров, что не понимают что такое ковариантность, и не знают, что массивы ковариантны по конвеншену. Рантайм ничегошеньки не меняет в этом плане.
>По объекту нельзя узнать для какого типа он специализирован, приходится добавлять тип в виде поля явно
Да, и именно поэтому по рантайм-дженериках пиздострадают в первую очередь любители рефлексии. Таких хлебом не корми дай типозависимую логику в рантайме говнокодить.
>Нельзя работать с примитивами.
Единственный объективный недостаток. С валхаллой может быть разрешится.
> Мапгет принимает обжект не из-за дженериков, а из-за долбоебизма кодеров, которые референс мапы оформляют без дженерика.
Хм. Ок, здесь я проебался. Мапгет действительно задекларирован как принимающий Object. Тем не менее крайне сомневаюсь, что причина этого - именно джавовые дженерики, а не задел для полиморфизма.
>Нихуя подобного. Мапгет принимает обжект не из-за дженериков, а из-за долбоебизма кодеров, которые референс мапы оформляют без дженерика.
Чел, ты пишешь про вещи которые не понимаешь. Если гет будет иметь иметь сигнатуру
V get(K key)
то из мапы с вайлдкардами ничего нельзя будет прочитать. Это именно то, чего хотели избежать авторы этой ебалы. А вот из мапы вообще без параметров все будет прекрасно читаться Нубы не в курсе, что переменная объявленная без указания типов эквивалентна объявлению с типами Object. Таким образом старый код будет компилироваться без ошибок, только ворнинги.
Вот пример https://pastebin.com/hZEVjwec
justMap.get(n) прекрасно читает данные, а numberObjectMap.get(n) не компилируется. По этой же самой причине Collection.contains(Object) а не T. Авторы хотели чтобы коллекцию с вайлдкардом можно было читать и удалять оттуда данные, но нельзя было ничего туда добавить.
>Контринтуитивно это только для тех кодеров, что не понимают что такое ковариантность, и не знают, что массивы ковариантны по конвеншену. Рантайм ничегошеньки не меняет в этом плане.
Ты как обычно. Ковариантность можно сделать любую, все определяется средствами которые есть. Для массивов сделали потому что это достаточно безопасно. Если String[] привести к Object[], а потом попробовать туда засунуть String то ты получишь ошибку в рантайме. А если разрешить такое с List то ошибки не будет и в List<String> будет лежать Object. И ошибка вывалиться совершенно в другом месте, а не там где проблема возникла. И никаких способов бороться с этим в Джаве нет.
А вот у C# такой проблемы нет, поэтому там ковариантность работает по другому. Там IEnumerable<string> спокойно приводим к IEnumerable<object>. а вот для List они такую опцию не сделали, чтобы не было как с массивами, хотя технически они могли это сделать.
>Да, и именно поэтому по рантайм-дженериках пиздострадают в первую очередь любители рефлексии. Таких хлебом не корми дай типозависимую логику в рантайме говнокодить.
Свой доморощенный анализ оставь для мамы, она за тебя порадуется. А по сути, рантайм дженерики позволяют реализовывать такую штуку без рефлексии:
T NewInstance<T>() where T : new()
{
return new T();
}
Компилятор и рантайм просто вставят вызов конструктора, без всяких рефлексий.
>Нихуя подобного. Мапгет принимает обжект не из-за дженериков, а из-за долбоебизма кодеров, которые референс мапы оформляют без дженерика.
Чел, ты пишешь про вещи которые не понимаешь. Если гет будет иметь иметь сигнатуру
V get(K key)
то из мапы с вайлдкардами ничего нельзя будет прочитать. Это именно то, чего хотели избежать авторы этой ебалы. А вот из мапы вообще без параметров все будет прекрасно читаться Нубы не в курсе, что переменная объявленная без указания типов эквивалентна объявлению с типами Object. Таким образом старый код будет компилироваться без ошибок, только ворнинги.
Вот пример https://pastebin.com/hZEVjwec
justMap.get(n) прекрасно читает данные, а numberObjectMap.get(n) не компилируется. По этой же самой причине Collection.contains(Object) а не T. Авторы хотели чтобы коллекцию с вайлдкардом можно было читать и удалять оттуда данные, но нельзя было ничего туда добавить.
>Контринтуитивно это только для тех кодеров, что не понимают что такое ковариантность, и не знают, что массивы ковариантны по конвеншену. Рантайм ничегошеньки не меняет в этом плане.
Ты как обычно. Ковариантность можно сделать любую, все определяется средствами которые есть. Для массивов сделали потому что это достаточно безопасно. Если String[] привести к Object[], а потом попробовать туда засунуть String то ты получишь ошибку в рантайме. А если разрешить такое с List то ошибки не будет и в List<String> будет лежать Object. И ошибка вывалиться совершенно в другом месте, а не там где проблема возникла. И никаких способов бороться с этим в Джаве нет.
А вот у C# такой проблемы нет, поэтому там ковариантность работает по другому. Там IEnumerable<string> спокойно приводим к IEnumerable<object>. а вот для List они такую опцию не сделали, чтобы не было как с массивами, хотя технически они могли это сделать.
>Да, и именно поэтому по рантайм-дженериках пиздострадают в первую очередь любители рефлексии. Таких хлебом не корми дай типозависимую логику в рантайме говнокодить.
Свой доморощенный анализ оставь для мамы, она за тебя порадуется. А по сути, рантайм дженерики позволяют реализовывать такую штуку без рефлексии:
T NewInstance<T>() where T : new()
{
return new T();
}
Компилятор и рантайм просто вставят вызов конструктора, без всяких рефлексий.
Уже перетащил свою говнолибу на новый дегенерадл? Уже поебался с build failed?
>Если гет будет иметь иметь сигнатуру V get(K key) то из мапы с вайлдкардами ничего нельзя будет прочитать
Да, я ниже уже отметил что проебался в этом месте.
Это все конечно здорово, но как описанная тобой дилемма коррелирует с отсутствием дженериков в рантайме? Проблема о которой ты гутаришь - проблема типобезопасности, а не дженериков как таковых. Говоря о твоем примере с пастбин, ты просто гипотетически не имеешь права делать get на мапе с ключом extends Number, потому что далеко не факт, что референс мапы указывает на мапу Numberов, а не мапу, например, Integerов, откуда по спецификации GenericMap читать по Number ты не имеешь права.
>Если String[] привести к Object[], а потом попробовать туда засунуть String то ты получишь ошибку в рантайме
Ничего хорошего в этом нет, кстати.
>Там IEnumerable<string> спокойно приводим к IEnumerable<object>
Ну ты конечно привел пример. Тащемто и в джаве какой нить Iterable<String> спокойно приводится к Iterable<?>, и оттуда потом спокойно читаются Objectы через итератор. Такое же работает и для коллекций, List<String> приводится к List<?>, откуда потом читаются Objectы. А вот к List<Object> приведение было бы уже тупо невалидное. Надо обьяснять, почему?
>А по сути, рантайм дженерики позволяют реализовывать такую штуку без рефлексии
Ну и что. Конструктор-референсы вполне себе покрывают нужду дженерикового создания обьектов там где это нужно. Без рантайм-дженериков.
>Ничего хорошего в этом нет, кстати.
Ты последнее слово что-ли хочешь оставить, ебло? Смысл был в том, что это лучше, чем вообще словить это хуй знает где и когда, чем сразу же после делания хуйни.
>ты получишь ошибку в рантайме
>сразу же после делания хуйни.
Че ты несешь, порватка? По твоему ошибка в рантайме - fail fast чтоли?
Сука, разницу между "получишь ошибку в момент выполнения ошибочной строки" и "получишь ошибку хуй знает когда после выполнения ошибочной строки" видишь?
>Проблема о которой ты гутаришь - проблема типобезопасности, а не дженериков как таковых. Говоря о твоем примере с пастбин, ты просто гипотетически не имеешь права делать get на мапе с ключом extends Number, потому что далеко не факт, что референс мапы указывает на мапу Numberов, а не мапу, например, Integerов, откуда по спецификации GenericMap читать по Number ты не имеешь права.
Ага get(Number) делать нельзя, а get(Object) можно, ахуительная логика!
Нет тут никакой проблемы типобезопасности, вся суть в том как реализованы дженерики в джаве. Если у тебя есть тип с вайлдкардом, то можно вызывать только те методы где этот тип возвращаемый параметр, а там где он аргумент - вызывать нельзя.
Вот тебе настоящая проблема типобезопасности именно из-за сигнатуры get(Object) https://pastebin.com/kqpXGizt ни одного ворнинга нет, а ClassCastException есть. Если бы сигнатура была get(K key), то метод было бы нельзя вызвать, но при этом и ClassCastException не было бы.
>Ну ты конечно привел пример. Тащемто и в джаве какой нить Iterable<String> спокойно приводится к Iterable<?>, и оттуда потом спокойно читаются Objectы через итератор. Такое же работает и для коллекций, List<String> приводится к List<?>, откуда потом читаются Objectы. А вот к List<Object> приведение было бы уже тупо невалидное. Надо обьяснять, почему?
Ты читаешь сам знаешь чем. Во первых я писал "почему" и сравнивал с поведением массивов. Во вторых речь идет о том, что там можно кастить просто к базовому типу, без ёбли с вайлдкардами. В третьих разница состоит в том, что у разработчиков Джава просто не было выбора какое поведение реализовывать, реализовали что смогли. А вот у ребят из команды сишарпа выбор был, но они решили не повторять поведение массивов.
>Конструктор-референсы вполне себе покрывают нужду дженерикового создания обьектов там где это нужно. Без рантайм-дженериков.
Не ты ли тут проводил психоанализ людей которые любят рефлексию в прод коде?
Сам сука. Разница - это когда тебя компилятор по рукам ебашит, видя что ты хуйню творишь. Когда тебя по рукам бьет рантайм, это в лучшем случае - безнадега. В худшем - джаваскрипт. Поэтому ковариантность массивов в джаве - не самая удачная идея. По сути - они ковариантны лишь из-за обратной совместимости с джавой <=1.4, где дженериков еще даже в качестве идеи не существовало. По факту - нихуя ковариантного в них нет.
>>796245
>Вот тебе настоящая проблема типобезопасности именно из-за сигнатуры get(Object) https://pastebin.com/kqpXGizt ни одного ворнинга нет, а ClassCastException есть. Если бы сигнатура была get(K key), то метод было бы нельзя вызвать, но при этом и ClassCastException не было бы.
Пиздабол. Проблема в твоем примере не из-за сигнатуры, а из-за реализации TreeMap. Замени TreeMap на HashMap в своем пастбине - сигнатура останется прежней, а проблемы больше не будет.
>Во вторых речь идет о том, что там можно кастить просто к базовому типу, без ёбли с вайлдкардами
Ты тоже читаешь жопой судя по всему. Прикасти лист интежеров к листу обжектов, и поясни, почему add() стринги на таком прикащенном листе - не параша ебаная, которая должна прескаться еще компайл-тайме.
>Не ты ли тут проводил психоанализ людей которые любят рефлексию в прод коде?
А для тебя метод референсы значит это рефлексия? Еблан или как?
ЕБЛАН ТУПОРЫЛЫЙ, МАКАКА ЕБУЧАЯ, НИКТО ТЕБЕ НЕ ПЫТАЕТСЯ ДОКАЗАТЬ, ЧТО ЭТО ИДЕАЛ ДЛЯ ПОДРАЖАНИЯ, СМЫСЛ В ТОМ, ЧТО ОШИБКИ С МАССИВАМИ В РАНТАЙМЕ НЕ ТАК ПЛОХИ, КАК МОГЛИ БЫ БЫТЬ ОШИБКИ С ДЖЕНЕРИКАМИ В РАНТАЙМЕ, ОБЪЕБОС СУКА
Истеричка, лол.
"Могли бы быть" такие ошибки разве что у балбесов, которые, используя дженериковые типы, не декеларируют у них дженерики, потому что "ыыыыыы.... компилятор дууушит, вайлдкарты это слооожна, вариантность это слоооожна, пусть все что мне нужно будет ковариантно и кастится как я хочу".
Что ты высрал?
Ты тупой и агрессивный, это мой последний ответ тебе, дальше ебись ты конём.
>Пиздабол. Проблема в твоем примере не из-за сигнатуры, а из-за реализации TreeMap. Замени TreeMap на HashMap в своем пастбине - сигнатура останется прежней, а проблемы больше не будет.
Ты просто тупой и не можешь посмотреть на остальные сигнатуры в SortedMap, например headMap(K toKey) - тут сигнатура метода не допускает таких проблем. По твоим тупым высерам видно, что ты не читал один из самых первых дизайн документов дженериков, где прямо сказано
>In particular, the language is designed to guarantee that if your entire application has been compiled without unchecked warnings using javac -source 1.5, it is type safe.
>Прикасти лист интежеров к листу обжектов, и поясни, почему add() стринги на таком прикащенном листе - не параша ебаная, которая должна прескаться еще компайл-тайме.
Повторяю для тупых
>разница состоит в том, что у разработчиков Джава просто не было выбора какое поведение реализовывать, реализовали что смогли. А вот у ребят из команды сишарпа выбор был, но они решили не повторять поведение массивов.
>А для тебя метод референсы значит это рефлексия? Еблан или как?
Я думал что ты про MethodHandle, ок это не рефлексия, но все равно костыль. Ошибешься, передашь не тот метод референс и класс каст экспенш.
Порватка уже эпитетов не знат каких в мой адрес подобрать, а я в итоге агрессивный оказался. Ну охуеть теперь.
>Ты просто тупой и не можешь посмотреть на остальные сигнатуры в SortedMap, например headMap(K toKey)
Ты блять определись с тем, о чем мы спорим блять - о всратости коллекций (с чем впринципе не поспоришь) или о дженериках.
По сути - ничегошеньки не мешало сделать в get ключ дженериковым, ни коим образом особенности джавовых дженериков этому не препятствуют. Но сделали как сделали. К примеру, в Vavr (альтернативном наборе коллекций) сделали наоборот - https://www.javadoc.io/static/io.vavr/vavr/1.0.0-alpha-4/io/vavr/collection/Map.html#get-K-.
>А вот у ребят из команды сишарпа выбор был, но они решили не повторять поведение массивов.
Ты блять заебал уже. Я с самого начала тебе говорю что массивы по сути не ковариантны, и решение сделать их такими в джаве было от безнадеги - ты рвешься как неадекват, и апеллируешь ровно к тому же самому.
Сука, перечитал и искренне пытаюсь разобрать твою шизофазию, не выходит. Походу она отсюда проистекает:
>А если разрешить такое с List то ошибки не будет и в List<String> будет лежать Object. И ошибка вывалиться совершенно в другом месте, а не там где проблема возникла. И никаких способов бороться с этим в Джаве нет.
"Разрешить", лол. Единственный способ, как ты можешь это "разрешить" в джаве, это не специфицировать дженерики у дженериковых типов, что априори моветон, и идея вместе с мириадой статических анализаторов тебе за это подсветит. Если у тебя переменная List<?>, которая указывает непонятно на какой лист, ты попросту не сможешь вызвать у него add ни с чем, даже с Object, потому что ни один тип не подойдет под вайлдкарт.
>Ошибешься, передашь не тот метод референс и класс каст экспенш.
Не передаш. Типы не сойдутся, компиляция не пройдет.
А хули в них хорошего? Мутабельные и иммутабельные коллекции одни интерфейсы имплементируют, кидая рантайм-эксепшоны на попытку мутировать то, что нельзя. Map декларирует контракт для ключей, IdentityHashMap его по пизде пускает. И это еще из того, что с наскоку вспоминается, приколов с коллекциями хватает.
>мудила
Сам мудила
Ты пидор.
Хуясе,а че в джаве есть иммутабельные коллекции помимо List.of ? Нахуя они нужны?
мимо синька
>Нахуя они нужны?
Чтобы не мутировать, ебт. Очевидно же.
Ну так то действительно не особо нужны. Там где нужна иммутабельность, лучше просто не ебать мозг и взять персистентные коллекции.
Че за персистентные коллекции?
И в итоге будешь со знаниями на уровне хуевого стажера,чтобы стать настоящим джавистом одного алкоголя мало
На мидла как минимум три передоза за спиной должно быть. Отсутствие оных свидетельствует о твоей слабой активности и тяге к знаниями запретным в том числе
Синьор в треде.
То есть по делу нечего высрать, да?
А где для идеи?
Это небольшой костылёк, чтобы ленивым кодерам из Оракла не надо было переписывать половину JDK.
Сорян, я имею в виду инспекцию unchecked generic array creation for varags prameter, и в совокупности, главный майндфак для меня -
Possible heap pollution from parameterized vararg type.
Я непонимаю че там за хип екарны бабай, че за полюшен?
Бери тогда другой язык. В жабе все жадные и ленивые.
О, вот кстати еще одна бесспорная объективная проблема отсутствия дженериков в рантайме, которую мог бы привести в пример тот психушник выше, если б был хоть немного в теме.
http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ300
Сверху же просто парочка влюблённая отношения высняла, не?
Джависты в ярости! Чтобы выучить Spring за 3 дня, нужен всего лишь простой советский...
Хуй знат. Вот тут вроде пытались выяснить, но чет вяло.
https://softwareengineering.stackexchange.com/questions/155994/java-heap-pollution
Евгений Борисов: "Чтобы понять как работает Спринг Бут и успешно пройти любой собес, нужно три дня перед сном читать гайды...
Это эвент сорсинг Агутин дривен дизайна?
Нет
Перед собесом нет смысла,лучше во время чтобы собеседующий начал нервничать и пм задумался о его замене на тебя
Надо было пролить на нее и сказать: "Ого,вы такая мокрая,хехе". Сразу стало бы понятно что у тебя софт скилы развиты
@Data
public class Person {
private String name;
private int age;
}
@Data
public class Room {
private int number;
private List<Person> persons;
}
// Найти любую комнату, в которой есть человек с возрастом меньше чем minAge, и вывести её номер. Использовать StreamApi
public int findRoom(List<Room> rooms, int minAge) {
return rooms.stream()...
}
...
.filter(room -> room.getPersons().stream().anyMatch(p -> p.getAge() <= minAge)
.map(room -> room.id)
.findAny()
.orElseThrow(() -> new RuntimeException("Нет такой комнаты"));
Благодарю, анон, буду подтягивать стримы.
А нельзя через хибер сразу найти..?
Тип того:
select p.room_id, min(p.age) from Person p where p.age < minAge group by p.room_id
А что ты ожидал от комьюнити самого быстро теряющего популярность языка в мире? ИТТ одна шиза пенсионеров
>комьюнити самого быстро теряющего популярность языка в мире
От этих - ничего не ожидал. Непонятно только, что коммьюнити шарпеев забыло в джава треде.
Я бы вот такой бы хуитой воспользовался:
https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html#between-java.time.temporal.Temporal-java.time.temporal.Temporal-
Duration.between(
LocalDate.of(2023, 8, 8).atStartOfDay(),
LocalDate.now().atStartOfDay()
).minusDays(1).isZero()
Подставляешь вместо LocalDate.of(2023, 8, 8) свое распаршенное LocalDate, и смотришь, вернет ли эта конструкция true
Ну и нахуя стримы нужны в при >O(n)? Тем более изначально надо запрашивать Ordered by данные, ну или хотя бы sorted list сделать. Хуита, а не задание.
Ой все.
Щас бы предьявлять тестовому заданию, цель которого - проверить кандидата на базовые знание стрим апи, за асимптотику.
Пипец ты душный, чел.
>Пипец ты душный, чел.
Ну вообще преждевременная оптимизация зло, да. Ну вообще я не про асимптотику, а про то, что все, что не линейно решать через стримы такое себе.
Нормас ты ему пятак обоссал
Смотрел туториалы на их сайте? Там примеры для разных языков есть, в том яисле для джавы и спринга.
Ждать 30 вакансий на всю рашку с 50000 рыл на место и зарплатой 35к до вычета налогов.
Какой же ты молодец!
Ну значит пошел нахуй.
По сути у меня есть user_uuid из keycloack и я хочу привязать этот uuid к общему аккаунту. Так есть два запроса для создания. Один пут, который использует имя из тела и получатся создает ресурс по адресу /{requestAccount.getName()}, второй же пост, который если еще не существует общего аккаунта, то создает новый, иначе возвращает старый.
Также стоит упомянуть, что общий аккаунт подгружается через jwtAuthenticationConverter.
Слой контроллера перегружен, лучше всю логику в слой сервисов перенести.
Не понял нахуя ты путом регаешь по особому пути, в чем проблема передавать все на "/register", а в теле все передать (requestAccount как я понимаю)? Уникальность имени (стринги) уже в коде проверить.
Геттеры и сеттеры нахуя написал? Пиши @Data и не выебывайся.
Статические классы для дто не годятся, используй обычные pojo. Либо я твою логику не понял и ты решил специально насрать себе в штаны сломав стейтлес
Возвращать респонс энтити можно, но лучше просто саму дто вернуть. Результат тот же, кода меньше.
Наследование не нужно в твоем случае
>>800392
F31
>>800394
почему во фронты не пошел?
вместо жизни у тебя теперь монитор, куда надо пыриться 12 часов в день. И сидеть на жопе
Не очень понимаю какую конкретно логику в сервисы запихнуть.
Пост автоматически генерирует имя. Типа id%. В путе это имя в теле задаётся и его изменить можно. Т.е. по сути как в вкшечке можно менять путь до аккаунта.
Ну идея дто спиздить вот это https://habr.com/ru/articles/513072/ . Правда там чуть иначе, у меня упрощено и ломбока нет в зависимостях.
Там 201 код типа. И Locate ещё. Идея мол в том, что в одном случае создаётся в другом нет.
Хотя @Transactional надо бы убрать.
И если в сервисах нормально репохитории использовать, то вроде понятно, что перенести...
На джаве пишут миллионы (12) индусов.
На го пишут энтузиасты-конверты с питона/крестов/джавы, которые высоко ценятся на рынке - https://survey.stackoverflow.co/2023/#section-top-paying-technologies
Какая же база. Так этих жабадебилов. Надо всем и всегда повторять, что она говно и идти в неё не надо
Главное это же инфраструктура, либы и сообщество. Жаба я думаю и до судного дня доживёт если хозяева не пойдут по пути шарпа
>>зачем вообще изобретают новые языки?
Сахар, лицензии, какие то нужные только тебе фичи.
Если бабла много - то че бы и не кинуть его на хотелки техдира.
В idea ultimate какой-то new UI есть. Она оттуда.
Бля, а по поводу апишки-то че? Нормально ли так пост использовать; он вроде имподентным должен быть.
Низачем.
Адекватных причин для новых языков - где то около трех:
- Своя парадигма на чужом рантайме (typescript, kotlin, scala, closure)
- Уникальная экспериментальная идея или фича, которую невозможно или невыносимо тяжело вкорячить в имеющийся язык (как borrow-checker в rust)
- Корпораты и их инвестиции (typescript и go)
В остальных случаях это - рядовые Васяны, колхозящие свои языки либо ради интереса и нового опыта, либо в надежде засветиться со своей поделкой перед корпоратом (в РФ последнее неактуально).
>Главное это же инфраструктура, либы и сообщество
Все так.
Очевидно - корпораты. Шарп родился как копипиздинг джавы у Sun во времена, когда Java таки стрельнула.
>Имподентный POST
Хорошо
А вообще идемпотентным обычно ожидается GET, а не POST.
https://restfulapi.net/idempotent-rest-apis/
Ну перепутал. Я имел ввиду обратное. По идее пост должен каждый раз возвращать новый аккаунт. Я этого обеспечить не могу, тк uuid уникальный. Да и ник тоже. Но мне нужно как-то генерировать уникальное имя для пути. Вопрос какой метод для этого использовать.
Ну выбери какой нить из этих какой по контексту подходит.
https://stackoverflow.com/questions/3825990/http-response-code-for-post-when-resource-already-exists
Или не падай. Сама по себе идемпотентность POST еще не обязательно проблема.
>Сама по себе идемпотентность POST еще не обязательно проблема.
Хотя, конкретно в твоем случае я бы все таки лучше падал.
>корпораты, корпораты, корпораты, корпораты бляяяяя!!!!!
Глобалист. Он же эти корпорации и придумал. Баба Яга для более взрослых.
Я никакую негативную коннотацию в корпоратов не вкладывал - хуй тя знат че ты рвешься. Или что - по твоему майки с гуглом не корпораты?
Поддерживаю,не надо сюда вкатываться,заебало по тысяче откликов на вакансии видеть
Рвался! Ты пупунька дибильная хихи покекал с тебя пупуня дурацкая хиих
>Оцените апишку.
Говно, вы нихуя не понимаете в АПИ!
АПИ должно выражаться платформо независимым языком. Так чтобы его и ЖопаСкриптер, Котлиноид, Гофер понял. АПИ описывается в терминах: присылаете А, получаете Б. А не ебучие картинки с кодом.
Мы вам перезвоним.
>Либо я твою логику не понял и ты решил специально насрать себе в штаны сломав стейтлес
Статические классы никак не поламают стейтлесс, потому что поля внутри обычные, а не статические. Просто чтобы инстанцировать такой класс тебе не нужен инстанц его родителя.
Сычёв, ту хули выебываешься? Тебе сказали что фронт будет на ноде и всё тут. Закрыл пасть и объяснил Светочке что там у тебя за АПИ.
Зачем?
Ты про дельфи?
>Да похуй мне, есть сваггер и опенапи.
Именно про это, тебе дебилу, в первом посте и написали
>АПИ должно выражаться платформо независимым языком.
В этом месяце без премии. К.А. Банов.
>тебе дебилу
Ну я если че тебе не отвечал. Просто у меня мне нужна оценка и кода в том числе, да и разбираться с опенапи сейчас впадлу, ибо не доделано есче.
Ну дяя...
>Именно про это, тебе дебилу, в первом посте и написали
А ты по одному контроллеру узнал есть у него или нет сваггера?
Ну к слову, решил проверки переместить в репозитории. Правда пришлось написать методы для проверки существования. По моему я костыли какие-то делаю...
Собираюсь зафорсить среди HR
Все правильно делаю?
Не хочу палить схему, чтобы вкатунцы за собой не подчистили
Это против хуйцов которые рисуют себе опыт
В чем проблема-то? Тем более, что jpa работает на jdbc. И вот эти методы точно также раскладываются в jpql.
Ну названия поменяю потом. Бука ты в общем, в попу трахают мало, наверное.
Не ну трипл базу говорит как обычно. Одобряю.
>нахуя смешивать додики ?
Сам додик, баклан недоделанный. Где ты там смешивание подходов нашел, ослина?
>>803000
Ну так и пиздуй к себе в загон, и хуйни не неси, раз не знаешь и не интересуешься. Типичный шарпей блять - мозгов нет, по делу сказать нечего, но надо потявкать на мимокроков, показать свою значимость.
>>802994
>Тем более, что jpa работает на jdbc. И вот эти методы точно также раскладываются в jpql.
Формально говоря - нихуя подобного. JPA это не просто JDBC в типобезопасной обертке. Это еще и персистенс контекст с энтитями. Там свой положняк, и он довольно душный, с нюансами. Поэтому смешивать нежелательно.
Но тебе это не грозит пока что, ты просто лабаешь JPQL через аннотации.
ЗЫ: авторизацию зря засунул в репы, имхо. Лучше б на рестах оставил.
>>Это против хуйцов которые рисуют себе опыт
А в чем проблема с нарисованным опытом? Его рисуют и джуны и херки - по итоги все получают что им нужно.
>>Там свой положняк, и он довольно душный, с нюансами.
Если у меня щас жук на проекте, то стоит душится хибернейтом в петах, чтоб на собесах не попускали или потом за пару недель гэпа подтянуть смогу?
Оставь ченить одно. Или жук, или JPA. Или и так и эдак попробуй на разных ветках, сравни сделай выводы.
>чтоб на собесах не попускал
Смотря куда. Читай требования к вакансиям.
Ну ето понятно, что там есть кэши разных уровней. Так или иначе, все проходит через jdbc внизу. Да и вон, целую главу посвятили sql, так что можно смешивать, просто редко действительно нужно.
> авторизацию зря засунул в репы, имхо.
Мне вообще сложно понять на какой ее уровень лучше впихнуть, на уровень контроллера, сервиса или репа.
>Все правильно делаю?
Ты конечно можешь попробовать, но что-то мне подсказывает что впереди тебя ждут удивительные открытия.
В том то и дело что ты привык к своему java говну
А я как специалист со стороны без предвзятого мнения заявляю, что выглядит как смешанное говно бакланов.
На скринах подход богов, читаемо. гибко, защищено, умно и хитро!
Говно ты, а не специалист. Ты и сам это в глубине души это понимаешь, иначе бы не шароебился по чужим предам в попытке продать свою персональную предвзятость.
Кто мне мешать писать на java как боженька? я бы и с радостью, но пересаживаюсь на язык богов - rust
ты просто сравни мои скрины с своими скринами и ощути разницу
Лаконичность, элегантность, емкость против грамоздкости и запутанности
>Мне вообще сложно понять на какой ее уровень лучше впихнуть
Впихивай ее туда, куда пользователь смотрит (и где он может напиздеть). Покрывай ими все внешние АПИ, включая ресты. С покрытием компонентов уровнями ниже есть такой подводный камень, что ты очень легко в будущем можешь впороться в ситуацию, когда такая авторизация входит в конфликт с новым пользовательским сценарием и тебе понадобятся обходные лазейки, поэтому аккуратней.
Понятно, ты уже даже и не отрицаешь свою суть, клоун. Предъявляет за предвзятость, но даже значение слова такого не знает. "Выглядит" у него. И продает-продает-продает.
Пошел нахуй, лох.
>>Оставь ченить одно.
У меня сейчас жук на проекте и мне с ним заебись.
>>Смотря куда. Читай требования к вакансиям.
Хибер я почти не знаю, но в вакансиях он часто мелькает. Вот и интересно много ли его реально и надо ли там что то задрачивать годами или достаточно пару глав в книжке почитать для собеса на мидла
Не неси чушь
Я тебе все по фактам разбил
Существуют языки, которые лучше твоего, представь себе?
Потому что их проектировали современные люди, представь себе?
Потому что их развивают, представь себе?
Я тебе разнес по фактам, а у тебя единственный аргумент - это доебаться до двух опечаток в тексте.
Ну а сам то как думаешь? Если в вакансиях часто мелькает?
>Я тебе все по фактам разбил
Ты просто сердобольная чмоня в поисках дозы публичного одобрения, ни больше ни меньше. Поссал на тебя.
Пасиба. Пока выберу серединку и воткну их в сервисы.
Если сваггер есть и сконфижен он и без анотаций тебе нахуярит все что нужно.
>Че за хуйня? Либо чистый SQL либо ORM либо конструктор запросов
нахуя смешивать додики ?
В этом примере вообще нет SQL.
>>803020
>Но тебе это не грозит пока что, ты просто лабаешь JPQL через аннотации.
Ты так говоришь будто это что-то плохое...
>>803062
>но пересаживаюсь на язык богов - rust
Rust хорош. Но у тебя на скринах тупоскрипт.
Как этот факт отменяет то что я писал выше?
Я тебе про одно, а ты переходишь на личности
Переход на личность оспаривает те факты сверху?
Ты тупой, не выкупаешь? Мочи на ебало мало?
Ты слишком чмо чтобы я с тобой на равных спорил. Ты просто омежка-приживала, который приперся сюда и пытается в залупу залезть.
Что мне, что прочему треду похуй на твои ценности, доводы и аргументы. С тем фактом что джава неидеальна и есть языки новее и засахареннее, я уж как нибудь проживу. А вот быть тобой - зашкварышем, бестолковой пиздой на всякий хуй, проткнутым евангелистом дешевым - позорнее участи вряди существует.
>подгоревший джавист за 100к, понимающий что он пишет на устаревшем языке словил обидку на rust господина 600к
Утешай себя этим, сучка.
К слову про нее, можно ли мапу сделать не через жопу(joinTable)? Т.е. напрямую как-то соеденить, без посредника в виде таблицы целой.
Так о каком посреднике речь? У ьебя joinTable, через который ты указываешь FK - какую таблицу ты укажешь, такая и будет. Ты так говоришь как будто мы твою схему знаем чтоб судить, насколько посредник у тебя general_account_mapping
О mapping таблицы. Я хочу не через маппинг таблицу связывать, а fk в accounts положить.
Короче пик 1, который сейчас, хочу в пик превратить.
Ради бога. Никто тебя не принуждал делать промежуточную таблицу - они нужны только в случае many to many.
Чекни примеры отсюда:
https://www.baeldung.com/hibernate-one-to-many
ЗЫЖ: а таблица general_account_name тебе нахрена? Если нужна уникальность имен, вруби unique
А в чем проблема?
>>803665
>Тебя не принуждал делать промежуточную таблицу
Ну пик считает иначе.
И как раз примерах мапы и нет.
>тебе нахрена?
https://stackoverflow.com/questions/277630/hibernate-jpa-sequence-non-id
Короче, чтобы автоматически гененировать имена и номера.
>>803719
Мне не нужна таблица соединения, но нужна при этом карта.
А, тьфу ты, у тя же мапа... Жопой прочитал.
А, ну да. Есть некий общий счет, который внутри содержит конкретные счета. Вроде это разделение понадобилось, чтобы ввести имя общего счета, ну типа путь до аккаунта, что-то типа vk.com/id1234567, а ну и еще потому, что я не могу влезть в регистрацию пользователя, она где-то в keycloack происходит. Потому нужны изъебства какие-то.
Пока думаю, пользователь заводит аккаунт в keycloack, заходит обратно на сайт, я вижу, что нихуя у него нет общего и пишу, мол неплохо бы настроить. И вот настройка есть создание общего аккаунта. Также после регистрации можно просто перекидывать на страницу настройки.
ты опять проваливаешься в какие-то баззворды.
Общий счёт и несколько подсчетов, привязанных к основному
CREATE TABLE account {
varchar account_number PRIMARY KEY;
}
CREATE TABLE sub_account {
varchar account_number PRIMARY KEY;
varchar parent_account_number;
}
можно и через одну таблицу со ссылкой на ту же таблицу
Дальше. Какие действия ты хочешь выполнять?
Подобные действия. Карта тут нужна, чтобы в репозитории не писать кучу методов для проверок всяких.
А вот привязывать натуральный ключ к primary вроде плохая практика. Пик 3, короче.
номер счёта уникальный, неизменяемый и не может быть null? Да
Значит он подходит в качестве натурального ключа. Прямо об этом написано
Проверка на принадлежность счета общему счету. Также взятие счета без репозиториев, просто при имении AccountNumber и GeneralAccount.
Еще добавление, если не существует. putIfAbsent. Может еще что-то понадобится, ну проще говоря, с картой эти действия более объектно выглядят что ли.
>>803785
А с чего он не изменяем-то? Как раз изменяем. В вк можно же менять путь до аккаунта. Также как и номер счета почему бы и не изменить.
в мире банков ты можешь открыть счёт, можешь закрыть счёт. Но изменить номер счёта ты не можешь. В этом весь смысл. Номер счёта это и есть ид счёта
>Проверка на принадлежность счета общему счету
SELECT count(account_number) > 0 FROM sub_account WHERE account_number = :subAccountNumber AND parent_account_number = :parentAccountNumber
Не имею ни малейшего желания выяснять как это получить через говнохибернейт
У меня не банк, мне похуй на их правила. Это фантики, по сути номер счета, это то, куда перевести, условно номер телефона. Че я и номер телефона в банке не могу поменять? Нахуй бы пошли они со своими правилами.
Ну я уже делал подобное, туть >>802947
Просто не хочу пихать все методы в репозиторий.
в сущности "телефонный номер" ты не можешь поменять номер телефона.
Если у тебя сущность "клиент", то ты можешь менять у него номер телефона.
Ну в принципе я так и сделал. Только отношение one-to-one. Осталось доделать, конечно и генерацию написать.
Запусти кучу платформенных тредов.
яндекси
Как валидатор нормально написать?
По моему какая-то параша нетипобезопасная вышла.
Все что требуется, это проверка на то, что элементы в массиве имеют в сумме какое-то значение. Также нужно как-то передать функцию, для преобразования элементов массива в число.
Прям вообще вообще? Может можно хотя бы не Function\<Object, BigDecimal\> сделать?
Вредина.
Не знаю, но шарпопидары знатно там высрали сахара. Открываешь любой листинг и каждый раз как будто новый DSL.
А тебя тем более
Ахуеть джуны бабки гребут.
Подожди, через пару недель отвечу.
Спасибо, анон! Еще раз удачи тебе.
Спустя время твои впечатления о работе тоже интересно бы было почитать
Тебя ебать не должно.
Не стоит вскрывать эту тему
Да. Вызывается через ;
Я шарпист
Есть ресурс сервер и клиент. Какой лучший способ запихнуть данные об юзере в сессию, чтобы они были актуальны и обращений к ресурс серверу было минимально количество? И еще стоит ли с этим вообще заморачиваться?
Если по stateless то в SecurityContext. Если хочешь ебануть реально по сессии сделай бин сессионный и туда сри.
>Если по stateless то в SecurityContext
Ну клиент, наверное, должен заботиться о состоянии хоть как-то. Хотя разве SecurityContext всегда не хранит состояние?
>сделай бин сессионный и туда сри.
Ну это понятно. Я про синхронизацию. Если условно другой клиент ник сменил у юзера. Как я про это узнаю вообще?
Или проще не хранить полное состояние, а только то, что нельзя изменить... Но тогда каждый при каждом обновлении странички придется стучаться в ресурс сервер.
>Хотя разве SecurityContext всегда не хранит состояние?
Нет. Там вагоны разных конфигураций и случаев. Если монолит, то обычно на входе стоит фильтр, который по куку или хидеру (JWT) понимает что за пользователь и просто подгружает его данные из базы в SecurityContext. А на логине просто отдаешь этот jwt и дальше клиент с ним ебется как хочет. В микросервисах там все сложнее с OAuth2 и еблей в жопу.
>Я про синхронизацию. Если условно другой клиент ник сменил у юзера. Как я про это узнаю вообще?
>Но тогда каждый при каждом обновлении странички придется стучаться в ресурс сервер.
Ладно. Возможно я не так понял. Ты клиент пишешь или сервер? Или ты пишешь сервер, который стучит на другой сервер? То что я выше написал конкретно относится к сприновым серверным кишкам.
Окей, когда сформирую полноценное мнение, напишу его в этот тред или в перекат
> В микросервисах там все сложнее с OAuth2 и еблей в жопу.
Вот у меня OAuth2 как раз.
> Ты клиент пишешь или сервер?
Клиент. Браузерный. Statless сервер ресурсный вроде написал, вот хоть какую-то морду хочу, но не совсем понятно как сократить количество обращений к ресурс серверу. Хотя, наверное, забить на это можно.
В общем, попробовал сделать. Я говорил про строчку на пик 2. Мне придется добавлять ее практически в каждом контроллере. По моему это как-то неправильно...
Когда школьники спорят - это весело. Пыжатся чего-то, молодые.
Те, кто понял жизнь, не спешит считать сколько там бит в лонге, это всё пустое.
Короче, посоветуйте что можно послушать\почитать по распределенной архитектуре, систем дизайну, а то джуны уже крутят кайфу, а я сижу.
P.S. быть тупым это нормально.
Так и этот шрифт - моноширинный. Просто в идее помимо текста еще есть хинты, из-за которых моноширинность ломается. Все претензии - к жидбрензу.
Если власти реально сольются и начнут каяться, вангую что епам и датаарт - меньшая из проблем, которые будут тебя волновать.
>Короче, посоветуйте что можно послушать\почитать по распределенной архитектуре, систем дизайну
Кабанчика пробовал?
А может к свингу? Хотя насколько я знаю, они собственный рендер шрифтов писали, тк в openjdk он еще хуже.
Ничего хорошего обычно нет в том, чтобы класть в базу куски кода или файлы. Если этого возможно избежать, лучше этого избегать. Например, для файлов заиметь файлсервер/S3, а в базе хранить лишь ссылки.
Понял, пасиба. Пока ебну в static.
Вкатун, ты очень хуево маскируешься.
>не нравится какая-то общая токсичность на двачах
Туда ли ты зашел, петушок? По сабжу присоединяюсь к кабанчику.
Думаете есть смысл перекатываться в джаву если цель найти ремоут за баксы в ближайшем будущем? сейчас стек hadoop, pyspark (дата инж), за рубежом к этому попросят опыт с облаками и ci/cd а на такие позиции меня не берут)))))) вроде вижу вакухи джава джунов на хх
Не. Если хинты убрать, все встанет на место.
Искренне тебе соболезную, конечно. Но ты чет как то поздно очухался - вроде все уже прошли свои пять стадий принятия.
Ты пупунька дибильная
Как ты относишься к логгированию сессий? Какое хранилище чаще всего используют для этого?
У тебя micrometer?
Где надо, там и создавай. Все равно они - часть реестра который их породил.
Да микрометер. Я просто хуй знает, хочется как-то единообразно все организовать,а гайды и дока говно говна. Как написать что-то сложнее greeting count хуй напишут. Все что я вынес из этой писанины это то что все происходит через MicrometerRegistry. При этом есть всякие GaugeBuilder которые вообще хуй знает что делают
> ObservationRegistry.
Выглядит как доп абстракция хуй пойми для чего. В чем профиты по сравнению с Gauge/Timer/Counter билдерами?
Хз
1. Съёбываешь из РФ в Казахстан, желательно Алматы или Нур-Султан.
2. Изи находишь работу.
Остальным только сосать хуй на PHP/1C.
Иди куда шёл.
Чушь, браузеры и сам жс были в те времена куда менее дырявыми, чем джава-апплеты.
На свое время были слишком громоздкими,джава приложуха могла грузиться дольше чем сам сайт. Когда мощности подросли идея поместить среду для запуска в браузер взлетела в виде флеш игр
База.
>а ты пруфани свою чушь, что браузеры были дырявее апплетов.
>https только недавно стал обязательным и бесплатным
>ехал CSRF через XSS
Да ты тупой.
Здорово, что в апплетах никогда не было проблем с XSS/CSRF и всегда был обязательный https, да?
И сразу же от них отказались, как только появились более безопасные аналоги.
Нихуя. Отказались от них в тот момент, когда их депрекейтнули. Никаких более-менее безопасных аналогов в то время не появлялось, просто появилась мода на SPA.
От них отказались потому что гугл выкинул нахуй интерфейс для старых плагинов который дохуя много позволял. Это была конкретно проблема не ява аплетов (они редкий зверь), а ебанного флеша.
Напишем. Наверняка кто-то doom уже портировал.
Зачем тебе бигдецимал?
Какой репозиторий юзаешь, спринговый жпа или ?
Пиши все запросы вручную кста.
Не знаю, вдруг будут промежуточные единицы, по типу копеек.
В основном от жпа, но есть и один пик2.
Не очень понимаю зачем...
а почему критерия апи юзаешь? для тебя это удобно?
есть просто много способов вытащить данные, этот мне кажется громоздким...
Из-за 39 строчки в основном. Хотя можно, наверное было все привязать сразу к general account, но хз.
Ну я там перепривязал к ga. А так, вроде критерия апи как критерия апи.
Главный пиздец, это сервис, для которого все это чудо надо. По сути-то кулдаун вычисляется. Т.е. произошло действие и вот скока ждать еще.
Ну так или иначе, надеюсь уже скора закончу и меня таки возьмут жуном...
смотрел хх тамошний - буквально единицы вакансий синьоров за сотыгу в алмате
Вообще к слову. Фуловый апи. Можете сказать, нормальные ли выбраны пути?
Я же изменяю кулдаун. Если не сделать детач, то контекст вытолкнется и они изменят свое значение. Можно бы было ебнуть вообще рид онли, но я не в репозитории, а двигать это выше как-то неявно.
>>809846
1 - Зачем тебе @transactional над методом если ты сам детач вызываешь. В самих репозиториях уже ведь есть везде @Transactional так ты просто ведь продлеваешь жизнь транзакции без причины.
2 - Если ты делаешь детач то я могу предположить что этот метод возвращает в контроллер? Может тогда мапстрактом просто проще в DTO перевести и готово.
3 - зачем на 52 строке ты опять проверяешь лист на емпти если ты уже это делал на 48?
1. Мне бы хотелось, чтобы оба select-а были атомарны. Я честно не знаю, будут ли проблемы, если это не учитывать.
2. Типа DTO перенести в область сервиса? Так вроде низя.
3. Там разные листы.
Так ладно, по поводу второго я чет хуево похоже понял. https://stackoverflow.com/questions/16866102/using-dto-to-transfer-data-between-service-layer-and-ui-layer/16872129#16872129
Надо будет переделать.
Ну и где ты сложности увидел?
Тебе белые люди дали спринг дату,а ты ебешься с энтити менеджерами парашными. Совсем ебанутый что ли?
Ну курсор хотя бы. Типа вот выборка с какого и сколько. И скажем id могут инкрментиться по +50.
Ну типа выборка n сущностей. Короче обычное перелистывание на сайте. Просто без привязки к id. https://www.baeldung.com/hibernate-pagination
>>809959
Ну тут не проверки, а просто чтобы лишние действия не делать.
А можешь проконсультировать по поводу дто? Я просто не очень понимаю, как именно стоит их впихивать в сервисную часть. Может примеры есть какие-то
Че бля,ты хочешь просто пагинацию сделать? PagedSortedRepositiry в помощь или как там оно называется
Прикольно, одним методом меньше. Хотя интересно, что эффективнее.
>Короче обычное перелистывание на сайте.
Ты рофлишь чтоли? Подключаешь JpaRepository и хуяришь нужный тебе запрос с Pageable. Можешь какие угодно туда лимити, оффсеты хуярить и сортировки.
Вадим, ты?
В idea запускаю junit тест
я читал мнение что хибернейт тянуть только из-за мапперов, которые якобы сложно писать. У меня на ручное написание маппера сущности уходит ну минут 10. Ради экономии 10 минут тянуть хибернейт, на который потом тратить часы?
Ну заебусь я вот это мапить. Ди не очень понимаю, где вы там сложности у меня увидели...
Мотай на ус что тебе старшие говорят, может быть тогда и сможешь стать таким же умным красивым и успешным джуном с двумя месяцами опыта как я
И при появлении JPA стал его реализацией. Это как создавать интерфейс для готового сервиса при необходимости добавить ещё одну реализацию.
>>811393
Ну я это к тому, что для жпа может быть одно написано, а в его классах что-то другое. Просто вот он появился раньше и теперь куча дубликатов есть и возникает вопрос, есть ли разница между ними.
Кстати, а если сделать транзакционным метод A, B и C. Потом сделать что-то подобное:
A() {
B();
C();
}
Будет ли контекст из B виден в C?
Ты блядь пользуешься энтити менеджером,это класс жпа. У хибернейта есть класс реализация—сешн фактори. Жпа это интерфейс,хибер реализация,хули не понятно
Да отъебись ты от меня. Про это во вступлении книжек пишут блять, а ты мне это как скрытое знание какое-то превозносишь. Если не понял про что я, то в SimpleJpaRepository может быть одно, тогда как в Criteria#setFirstResult что-то другое. Если для тебя это один хуй разница, то пользуйся HashTable, не знаю.
Я нинаю какие
Так, сам нашёл. https://stackoverflow.com/questions/37217075/spring-nested-transactions
Контекст сохранится значит.
Пока разберутся что он мошенник - уже 3 месяца опыта есть и несколько сотыг в кармане.
Хз. Скорее всего это те же люди, которые говорят что со спрингом можно кодить только на платной идее.
Есть библиотеки. Мозг ты будешь ебать, если попытаешься проделать это без библиотек.
Онбординг, потом можно говорить про изучение кода, потом уточнять всякую хуйню (все заняты, поэтому мол ждет пока с ним поговорят 2 недели).
Потом когда поймут, что наняли хуеплета, лиду нужно будет еще убедить кабана, что это мошенник и надо заново выделять ресурсы на поиск работяги. Тот будет лепить отговорки что мол ты ж лид, подтяни джуна, хуле ты.
Чем больше бюрократии, тем дольше это все длится.
Так а потом что? Разве хрюша на следующем собесе не будем вкурсе о прошлом "опыте"?
>проделать это без библиотек.
>2k23
>senior java 24/7 lead enterprise developer не может редактировать csv без библиотек
Библиотеки для csv есть но они кривые и написаны криворукими даунами для криворуких даунов, не способных написать парсер цсв. Терабайтные цсв ими не поколупать, терминальные случаи типа когда в заголовках и в строках разный разделитель, они в принципе не поддерживают
На самом деле нет ничего плохого в этом, если в целом тащишь. Я вкатывался в нулевых с неплохим опытом в смежных вещах, осемблирах и интерпрайзе на проприетарном говне, в целом с опытом ведения проекта, но на жабе мне дали такой конченый продукт что я в ахуе уволился через 8 месяцев, решив что ето не для меня. Но потом устроился на норм проект и понял что все-таки не во мне дело было. Так что всегда есть вариант что даже если ты дартаньян, можно влипнуть
Я норм код пишу, работодатель не жалуется
Я про то что не надо стесняться, устраивайся
Работодателям безразличны проекты вкатунов. Ты не художник и не фотограф, о портфолио говорить смешно и нелепо.
В плане не художник и не фотограф? Разработчик тоже творческая профессия. Скуфик ты
Скуфик, умение написать круд несколькими разными способами - это ещё не творчество.
public class Oberon {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int result = 0;
System.out.println("Желаете использовать римские, или арабские числа? В первом случае введите I во втором - 1");
String cebteul = s.nextLine();
//Вот здесь блок работы с римскими цифрами.
if (cebteul == "I") {
System.out.println("Введите два числа");
String ss = s.nextLine();
String[] forMath = ss.split(" ");
int[] forMath1 = new int[2];
for (int i = 0; i < forMath.length; i++) {
FromRomanToArabic rome2Arab = new FromRomanToArabic();
forMath1 = rome2Arab.RometoArab(forMath);
}
//А здесь идет работа с цифрами арабскими.
} else if (cebteul == "1") {
System.out.println("Введите два числа");
String ss = s.nextLine();
String[] forMath = ss.split(" ");
int[] forMath1 = new int[2];
for (int i = 0; i < forMath.length; i++) {
forMath1 = Integer.parseInt(forMath);
}
}
System.out.println("Введите операнд");
String operand = s.nextLine();
switch (operand) {
case "+":
result = forMath1[0] + forMath1[1];
break;
case "-":
result = forMath1[0] - forMath1[1];
break;
case "":
result = forMath1[0] forMath1[1];
break;
case "/":
result = forMath1[0] / forMath1[1];
break;
}
System.out.println(result);
}
}
Причем когда я использую блоки работы с цифрами по отдельности - все прекрасно работает. Проблема начинается тогда, когда я подрубаю все эти if-else.
public class Oberon {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int result = 0;
System.out.println("Желаете использовать римские, или арабские числа? В первом случае введите I во втором - 1");
String cebteul = s.nextLine();
//Вот здесь блок работы с римскими цифрами.
if (cebteul == "I") {
System.out.println("Введите два числа");
String ss = s.nextLine();
String[] forMath = ss.split(" ");
int[] forMath1 = new int[2];
for (int i = 0; i < forMath.length; i++) {
FromRomanToArabic rome2Arab = new FromRomanToArabic();
forMath1 = rome2Arab.RometoArab(forMath);
}
//А здесь идет работа с цифрами арабскими.
} else if (cebteul == "1") {
System.out.println("Введите два числа");
String ss = s.nextLine();
String[] forMath = ss.split(" ");
int[] forMath1 = new int[2];
for (int i = 0; i < forMath.length; i++) {
forMath1 = Integer.parseInt(forMath);
}
}
System.out.println("Введите операнд");
String operand = s.nextLine();
switch (operand) {
case "+":
result = forMath1[0] + forMath1[1];
break;
case "-":
result = forMath1[0] - forMath1[1];
break;
case "":
result = forMath1[0] forMath1[1];
break;
case "/":
result = forMath1[0] / forMath1[1];
break;
}
System.out.println(result);
}
}
Причем когда я использую блоки работы с цифрами по отдельности - все прекрасно работает. Проблема начинается тогда, когда я подрубаю все эти if-else.
По проекту можно понять заранее степерь пиздеца в голове.
equals
Ну если для тебя жаба это онли круды, то это твои проблемы.
Это по сути парсер+калькулятор. Ты давай делай конечный автомат.
В Кату поступаешь?
Почему джавистам не нравится котлин? Я думал наоборот он им заходит?
очередной убийца жабы с нескучным синтаксисом. В одном ряду с убийцами жабы груви, скалой, шарпом, и что там ещё было
так убил что никто не заметил
>Почему джавистам не нравится котлин?
С чего ты взял? Джависты то как раз позитивно относятся к котлину.
Я не говорил что он мне не нравится, скорее даже наоборот.
Но он не имеет такой поддержки как жаба. В жабу вкидывают бабло всякие гуглы, делают кучу всяких ждк и гц. Даже у микрософта есть свой ждк для жабы.
С котлином все не так хорошо - его главная фича - это умение доедать за жабой, поэтому его не ебет что собственных либ на нем нет. Но просто так его никто не поддерживает, не вваливает миллиарды, не пишет сотни либ. Поэтому он не может быть убийцей жабы, он сам помрет тут же.
На бэке - сразу, в андроиде попозже, но его готовы сместить всякие дарты и прочие мутные языки.
Яву можно взять на халяву.
>Даже у микрософта есть свой ждк для жабы.
Не от хорошей жизни делают свою сдк, а потому что с жабой случилось то, что она предрекала шарпу.
> В жабу вкидывают бабло всякие гуглы
Пруфы? Или очередные влажны фантазии с ютуба?
> он сам помрет тут же. ... в андроиде попозже
Ох эти влажные ютуберские мечты. Там на ведре у него все хорошо, еще на ios пытается залесть.
а что ещё может быть? Десктоп умер, остались только монструозные автокады, 3дмаксы и архикады на плюсах.
Порт жабы в фронт веба пытались делать (GWT) взлетело, но не затмило жабаскрипт. Мобилки так и работают на жабе
геймдев, там вроде на котлине что-то пытаются, типа коржа и даже вроде есть плагин для юнити но зачем
>Мобилки так и работают на жабе
Переувлажненная мысль.
А еще есть васм, возможно инди игры на васме.
Там в европе сейчас законы прикрутят и появиться веб-апплиухи подобные нативным для мобилок.
Держи в курсе
Для андроида - котлин. Проблем с лицензированием из за санкции будет меньше.
Для бэка - спринг. Котлин там как дополнение от скуки.
А кто сказал, что раст это не говно?
Пишешь em.unwrap(Session.class) и получаешь session. Изи же.
idea ultimate автоматом генерит по аннотациям.
Переделал. Но нормально ли так использовать мапперы и дто в сервисах? Впрочем, так можно контролировать сколько сервис информации отдаст и даже валидацию из джакарты прикрутить.
Хотя лично я вижу тут три проблемы, во первых квадрат, во вторых кривость апи, что нужен фулл аккаунт, а не его имя. А также кривой мердж. Надо значение забирать. Надо поправить все...
всё что нужно знать о спрингодебилах. Вместо подумать они согласны нагенерировать кучу говна в которой потом людям разбираться.
тут не спринг, тут хибернейт в основе проблем. Создает иллюзию что не надо знать бд + делает невозможным нормальную работу с бд. Плюс требует конверторов
>+ делает невозможным нормальную работу с бд
Схуяли, если там есть апи для взаимодействия с jdbc?
потому-что эта штука так и провоцирует выгрузку всего графа и поиск через код/итерации вместо написания запросов. Её для этого и создавали.
В коде куча каких-то запросов, при этом на выходе только одна сущность. Предположу что там происходит select и update, но всрато. Значит надо было написать один селект и один апдейт и запускать их в транзакции. Ещё эти вары. В итоге непонятно что это - структура, лист или что это
>скажи в чем проеб
Ну вот у вас хибернейт, фреймворк позволяющий делоть автоматический маппинг стркутуры БД, и код который делает маппинг и составляет объекты вручную.
Я никогда не юзал хибернейт но мне кажется что за 20 или сколько там лет его существования, должны были быть выработаны средства и решения, позволяющие не писать такие простыни вручную.
Т.е. это классический кейс "треугольника кастомизации" - боимся писать сами, берём 24/7 библиотеку, пишем к ней тонну костылей, в то время как прямой путь от задачи к решению был бы гораздо менее затратен.
Не совсем. Там выгружается 10 таких сущностей. Соответственно раз Lazy, то декартового произведения не будет. Потом по другой табличке мы смотрим когда там крутили эти кейсы в диапазоне id конкретный юзер. Вычитаем кулдаун вычисляя актуальный. Тут только селект 10 сущностей будет. Ну и аккаунтов.
>>813167
Это нестандартный запрос вроде как. Тут около 5 таблиц затрагивается.
> Соответственно раз Lazy, то декартового произведения не будет
ошибаешься.
SQL select с 5 джойнами - элементарно. Через хибернейт 5 сущностей - nightmare, хз что оно нагенерит и с каким оверхедом. Я про это и говорю, эта штука не дает писать нормальные запросы и провоцирует всё выгружать в код
>нестандартный запрос
Значит это не круд а бизнес код, репорт по существу. Репорты делать через хибер это сразу кринж. Сущности нужны только для апдейтов.
>Почему нельзя вручную кверю прописать?
потому-что кверю делаешь через энтити, а значит через всю эту хибернейтовскую логику по генерации запросов и выгрузке графа
/ <criteria> / select
g1_0.id,
g1_0.name,
g1_0.nickname,
g1_0.user_uuid
from
general_accounts g1_0
where
g1_0.name=?
Hibernate:
select
g1_0.name
from
general_account_name g1_0
where
g1_0.name=?
Hibernate:
select
a1_0.general_account_id,
a1_1.number,
a1_2.id,
a1_2.money_type_id,
m1_0.id,
m1_0.name,
m1_0.pathToIcon,
a1_2.amount,
a1_2.number
from
general_account_mapping a1_0
join
accounts a1_2
on a1_2.id=a1_0.account_id
left join
money_type m1_0
on m1_0.id=a1_2.money_type_id
join
account_number a1_1
on a1_1.number=a1_2.number
where
array_contains(?,a1_0.general_account_id)
Hibernate:
/ <criteria> / select
c1_0.id,
c1_0.cooldown,
c1_0.description,
c1_0.name,
c1_0.money_type_id,
c1_0.price,
c1_0.visibleName
from
cases c1_0 offset ? rows fetch first ? rows only
Ну вот. Я же говорил. Ни апдейтов, ни чего такого вроде.
/ <criteria> / select
g1_0.id,
g1_0.name,
g1_0.nickname,
g1_0.user_uuid
from
general_accounts g1_0
where
g1_0.name=?
Hibernate:
select
g1_0.name
from
general_account_name g1_0
where
g1_0.name=?
Hibernate:
select
a1_0.general_account_id,
a1_1.number,
a1_2.id,
a1_2.money_type_id,
m1_0.id,
m1_0.name,
m1_0.pathToIcon,
a1_2.amount,
a1_2.number
from
general_account_mapping a1_0
join
accounts a1_2
on a1_2.id=a1_0.account_id
left join
money_type m1_0
on m1_0.id=a1_2.money_type_id
join
account_number a1_1
on a1_1.number=a1_2.number
where
array_contains(?,a1_0.general_account_id)
Hibernate:
/ <criteria> / select
c1_0.id,
c1_0.cooldown,
c1_0.description,
c1_0.name,
c1_0.money_type_id,
c1_0.price,
c1_0.visibleName
from
cases c1_0 offset ? rows fetch first ? rows only
Ну вот. Я же говорил. Ни апдейтов, ни чего такого вроде.
Короче хуй знает, что с этим мерджем не так, но он хуярит декартово произведение по ленивым коллекциям. Проще по id искать. Так и дтошки можно упростить до получения айдишек.
https://pastebin.com/3EVrXcDT
Спроси в Андроид-треде. Может, к 2023 году уже успели написать учебники по котлину, не опирающиеся на знание жабы. Ведь раньше котлин без жабы было выучить невозможно.
Андроид
А меня это должно волновать? Запрос к базе есть? Данные вытащил которые мне необходимы? Значит всё правильно сделал.
Какие-то энтити-шизы в треде. Какой-то граф. Ну охуеть теперь.
Он упрощает разработку вообще-то!
На бэке котлин будешь учить в перерыве между кафкой и кубером. Он там не в первой десятке нужных технологий.
Вот думаю работу менять.
Но вот с жуком почти нет вакансий. Там пару десятков из нескольких тысяч. А хибер или спринг дата просто везде.
Так неохота всю эту хиберовскую мудотень изучать ради собесов, вы бы знали.
Ну по всей РФ 2к вакух java spring на hh. Из них:
- 1к это дс.
- 500 - удаленка.
- 700 имеют упоминание hibernate
- 40 имеют упоминание jooq
Если вкатун без опыта, то низкий. На удаленку большая конкуренция, особенно после миграции некоторых разрабов в постсовок.
Ведь этот язык:
- жив только в тырпрайзе со скуфами, если не считать котлин
- сложный для освоения (имеется в виду не чистая Java)
- многословный
- работа только от 3х лет коммерческого опыта
(где ты вкатусик будешь его брать - никого не ебёт лол)
- без вышки сразу нахуй
В чём я не прав? Java - отвратительный выбор для новичков, а лохи которые повелись на javarush будут дальше работать таксистами/грузчиками.
Почему тогда в этот язык все вкатусики так стремятся, если они потом всё равно нахуй пойдут, и будут дальше работать таксистами?...Слабоумие и отвага? Что ж, похвально.
Тебя это ебать не должно, скуф.
>SQL select с 5 джойнами - элементарно. Через хибернейт 5 сущностей - nightmare, хз что оно нагенерит и с каким оверхедом.
Ты просто зеленый джун, который увидел в логах огромное полотно запроса хибера и напридумывал себе там какой-то оверхед, а если бы пошел и закинул бы в базу на EXPLAIN то понял бы что нихуя оверхеда там нет вообще. Там просто многословный маппинг полей сущностей на хиберовские алиасы.
>- жив только в тырпрайзе со скуфами, если не считать котлин
Ну да. Сереьзные проекты, бигдата, хайлоад и вот это все. А котлин жив только на ведре. Ты слишком молой и не знаешь что уже кучу раз изобретали язык-заменитель Java для JVM: Scala, Closure и прочие. И они сейчас мертвы чуть менее чем полностью.
>- сложный для освоения (имеется в виду не чистая Java)
Жаба - супер простой язык. Спринг просто добавляет магию, которой нужно научиться пользоваться.
>- многословный
Уже нет. Сейчас просто километровые штуки вмещаются в несколько строк стримов.
>- работа только от 3х лет коммерческого опыта
Как они это проверят?
>- без вышки сразу нахуй
Хз. Я знаю некоторые вкатывались и без образования. Главное скилл чтобы был.
А ты три дня гайды по Весна Ботинок перед сном читал, как Пророк Скуфений советовал?
Если да - можешь хоть щас на собес идти, и меньше чем сотыгу не проси.
Можешь ещё Зимовать месяц поучить под балтику 9 с копчёной косичкой, нарисуешь потом себе год-два опыта с этой технологией на проектах - один хуй проверять не будут.
Ну и потом устраиваешься, через полгода после трудоустройства тёлку примерно пикрил получаешь и сотыги в кармане.
>- жив только в тырпрайзе со скуфами, если не считать котлин
>- многословный
Это правда и для меня это не проблема. Я сам скуф-вкатун из экономистов. И хотел в тырпрайз, для меня корпоративный софт ближе чем интернет-магазин. А пару бойлерплейт уровня public static void main для меня не проблема.
>- сложный для освоения (имеется в виду не чистая Java)
>- работа только от 3х лет коммерческого опыта
>- без вышки сразу нахуй
Это не правда. Я вкатился, у меня куча знакомых вкатилось. Пол отдела без вышки по специальности. И моя галера еще джунов и стажеров постоянно набирает.
1)Сколько у вас часов в танках?
2)Любимое пиво?
3)Чем отличается клев на блесну и на резинку? В каких случаях вы бы использовали блесну? А в каких резинку?
4)Какой жмых вы бы использовали при ловле на закидушки?
5)Лучшая модель волги на ваш взгляд,аргументируйте
6)Лучший маринад для шашлыка на ваш взгляд?
>>Пол отдела без вышки по специальности.
Речь был а о вышке, а не о специальности.
А то вкатился якобы без вышки, а потом выясняется что он инженер-скуфировщик. юристы и экономисты тоже котируются
Без вышки - это школа и все. Максимум - технарь.
Чел, в моем поколении 30-летних у 70% есть хоть какая то корка о во.
И людей вообще без корки, кто вообще заинтересован вкатиться не так много. А из тех кто хотел бы большинство дропает этот ваш кодинг на циклах.
Хотя у нас работают пару ребят без вышки, кто закончил пту на программистов.
В 20 самое время начать ее получать. Студента второго курса примут с намного большей вероятностью, чем челика без корки.
Когда поступишь, будет всего 21. Это на самом деле немного, всего на 4 года старше обычных первокуров. Если на заочку, то наоборот скорее всего будешь младше большинства.
У тебя еще целый год на поступление. Мне вот советовали люди, как я получил военник в 19 лет - дропать нафиг эконом и поступить в на информатику на 1 курс. Я поленился готовиться и зассал отчисляться. И еще 3 курса проучился. О чем до сих пор жалею.
Вкатывайся пока не числанули. Хотя, с таким подходом, тебя и с работы погонят взашей, никому такой тунеядец даром не сдался.
>Ну мне впадлу ходить в проститут.
Так тебе и таски будет впадлу делать. И на дейликах пиздеть впадлу.
Заводчанином. Потому что лето закончилось.
Изучал язык под присмотром ментора (сеньор инженер), потом попал к нему на работу и по сей день работаю.
По факту у тебя есть два стула, выбирай на какой сядешь:
1. Получить вышку
2. Непотизм и связи
Если ни того, ни другого нет - удачи работать на складе, мы вам перезвоним.
И щито, я получаю инженерную заборостроительную вышку, как она мне поможет? Только время теряю, когда хожу на пары. Мог бы дрочить литкод больше, ещё один год терпения остался и диплом кроме мамки никому не нужен будет, на заводе я был, там всё печально
смысла нет, мне неинтересно кодерское легаси учить и пилить универские копропроекты, уж лучше точная механика
нет, но хотел бы попробовать
А копаться в легаси на спринге тебе типа интересно будет? Или на любом другом стеке.
Сложно в отпуск было уйти? Меня вот неделю дрочили со всех сторон. Собирался в отпуск, как на войну.
Ну так иди в андроед тред. Андроед намного ближе к фронту, чем то чем мы тут занимаемя.
Тут тред спринга.
Ну блин, удобно же все связанные с доменом дто сложить в один класс. Почему для вас это разрыв шаблона-то?
Учеба и решение курсовых- беполезный дроч. Трудно делать то, что нахуй никому не нужно. Преподу похуй че ты там наваяяешь - лишь бы сдал что то. Студенту похуй че делать - лишь бы зачет получить и забыть про эту бесполезную нудятину.
А на работе ты погружаешься в контекст, понимаешь что это не просто набор символов, на который всем похуй, а что то реально работающее. И твой говнокод кому то может быть нужен. За него даже готовы платить. Это очень мотивирует развиваться джуна по крайней мере, преисполнившийся мидл - это другое
Три слоя вложенного класса параметризирован другой такой же трехслойной дтошкой. У тебя никаких вопросов не возникло?
>а что то реально работающее
не факт
>твой говнокод кому то может быть нужен
еще сильнее не факт
А еще тебе придется учить кучу хуиты для собесов, для ассесментов. А потом оно в реальной работе тебе никогда не пригодится.
Или тебе лид на ревью будет ебать мозги клинкодом, неймингом и гоф-паттернами, а в его собственном коде будет так насрано, что ты такого больше нигде не увидишь.
Ну вот, например ItemDTO: https://pastebin.com/MfCeDZZM
Эти слои в ином случае перетекут в пакеты. И вот мне для каждого реквеста по имени надо полное имя писать. Чем это лучше?
Да и что по поводу реальных вопросов, не похуй ли как уложены эти дтошки? Че за духота блин...
Блядь,если это ты до этого спрашивал про пагинацию,то я пиздец в предвкушении что за адский монстр у тебя получится. Будет яндере симулятор джава треда.
Останешься в истории
Да могу залить на гит. Там тока клиент доделать...
Я правда не понимаю, че я блять не так делаю, что вы так ахуеваете.
Правда, чтобы это запустить нужен keycloack. И еще мне впадлу было локальные данные стирать.
Да не,я подожду пока ты закончишь, хочется увидеть конечный вариант магнум опуса
Ждем,ты молодец в любом случае
Вначале было ничего. Потом объект. И подумал объект, не создать ли ему своих детей. И сотворил он полиморфизм и сказал всем зверям - плодитесь и размножайтесь.
А зачем тебе столько классов с одинаковым названием, которые являются вложенными дтошками основной дтошки? Тем более вложенные не один раз.
Структура вложений одна и та же. Может и поля и методы те же? Может нужно использовать одни и те же вложенные дтошки в разных корневых?
Это читать больно, как в контроллере, так и в самой этой дтошке. Да, полное имя класса с пакетом было бы читать менее больно.
Нахрена там дтошки с дженериками вообще не ясно.
заорал нах
Няшный? Город?
Похоже меня только что трахнули на двачах, чувствую себя грязным, ушёл в душ плакать.
У нейма может быть разная валидация. Потому, для каждой дтошки нужны свои классы.
>Нахрена там дтошки с дженериками вообще не ясно.
Всм не ясно? Там только один класс дто с дженериком, который контейнер - Page<?>. А вот интерфейсы с дженериками нужны для контракта имен. Мол геттер будет иметь поле того имени, что надо. Ну и NotNull. С ломбоком лучше бы смотрелось, но я не хочу его использовать.
Это реально настолько взрывает мозг? Я все больше думаю переписать, только чтобы такие же скуфы не бухтели, если таки глянут это в резюме.
Я тебя субъектно запрограммировал.
Конечно скуфы на ревьюверах тебя наругают. Они ещё более зашоренные, чем мы здесь
Ну ты сперва допиши и скинь. А потом уже перепишешь.
Это треш конечно. Но хочется понять задумку.
>>придется учить кучу хуиты для собесов
Я не про собесы, а про саму работу.
>>лид на ревью будет ебать мозги клинкодом, неймингом и гоф-паттернами
Уж лучше так, чем профессор будет ебать мозги тем что отступ слева для реферата 2см, а не 2.5см - а значит незачет, все переделывай (а содержание даже смотреть не станет).
Но вообще на работе долбоебов таких с манией величия встречал намного реже.
Лиду все таки надо чтоб фича была запилена, а преподу - нет. Это ты должен доказывать, что ты что то важное делаешь и он должен уделить 5 минут своего драгоценного времени на оценку.
Программистов пока никто не заставляет продавать кабану ручку
Чел, да конечно перепиши. Вопрос во времени. Сколько у тебя его. Что бы ты мог делать вместо вылизывания проекта.
Ну времени нет никогда. Впрочем я просил скинуть мне пример архитектур с дто. Ну пока не скинули.
>>815446
Вроде показывал уже https://habr.com/ru/articles/513072/ . Через интерфейсы удобно контракт задавать. А то, как они запиханы - просто форма же, ну я так думал.
>Программистов пока никто не заставляет продавать кабану ручку
Постоянно заставляют. Особенно лидов. Лиды продают нужность затащить теху, нанять людей. Нужность фичи тоже продают.
А если у вас с бизнес аналитиками и пмами плохо, то и обычный разраб уровня мидла будет за них работу делать. То есть и постановку задачи делать и презентовать клиентам и за фитбеком сам бегать по всем смежникам, прям как в универе за преподом и что угодно всем вокруг продавать.
кодер нет а программист да
Сервиса? В плане вот этого? Хуй его знает, про смысл архитектуры в тех книгах, что я четал не писали. Когда тут спрашивал, забить предположили.
Пока я вижу, что хрень, которая берет на себя грязь в виде репозиториев, а также имеет контракт в виде дто, а соответственно и тех данных, что предоставляет. Мол вот публичный сервис, который дает только публичную инфу юзера. Или сервис, который дает конкретную информацию по домену.
Ну я такую хуйню несколько раз встречал. И в мвп жаловались люди на подобное.
Ну типа кабан тебе скажетя: "Ну мы можем нанять еще двух аналитиков, но тебя, Сычев, мы тогда уволим."
Ну в мяскотах, фаангах или больших галерах такого нет или намного меньше.
В чем суть твоего пет-проекта. Какое у него применение?
Зачем тебе 17 почти одинаковых сущностей? Зачем ты использовал какой-то стремный паттерн использования дтошек от нонеймов?
Как же балдёжно всё расписал.
>Какое у него применение?
Ну изначааально это был пик. Потом бд сократились до онли реляционной, но суть примерно та же. Есть кейсы, крутишь, выигрываешь айтемы, какие-то можно продать, так производится эмиссия денег ремиссия же есть покупка кейсов пока что.
>Зачем ты использовал какой-то стремный паттерн использования дтошек от нонеймов?
Ну напиши нормальные.
Говоришь им, что такие виды работ не входят с обязанности разработчика, если вы с этим не согласны, мы можем расстаться.
Нет, весь твой код это сервис, который что-то делает. Можешь рассказать об этом.
Ну это понятно. Но на рыночке сейчас совсем не так сладко, как перед свохой.
Мне тоже нравица.
А как ремиссия относится к лотерее? Ремиссия это буквально уничножение денежек. Если мы говорим про цифры на счетах это значит, что у кого то цифры списываются, и никому другому они не записываются.
Лотерея стоит денег. Типа вот чтобы покрутить кейс, тебе надо заплотить денежку - это ремиссия, так как нет дебита. Потом ты можешь, что-то выйграть, это будет эмиссией. Вообще не такие важные эти термины, просто суть в том, что фантики не подвержены инфляции, как в кликерах.
>>815519
Ой вот на счет кафки хз, я когда это писал-то. А аппаратные генераторы просто долгие, типа им нужно время для сбора энтропии. По сути в очередь встать может, но мне кажется кафка тут не особа нужна, потому я на нее тоже забил.
Ну вот, актуальная предметная область же. Вообще много россиян на кипре контор с ней работают.
Не знаю, мы ведь тут только ради денег. Нужно делать действительно полезное, что необходимо.
Какую значимость для человечества имеет твой казик с кейсами?
Польза это категория морали. А тут гильотина юма... Проще говоря, зависит от принятой морали в обществе. Так можно сказать, что отберёт деньги у агентов, что ими распоряжаться нормально не могут. Но тк у меня тут только фантики, то хз, покажет реальные шансы выйрать в казино и отговорит лудомана мб. Как с вейпами. Короче можно много чего навыдумывать, я же просто на рандом её выбрал.
>>815552
Тут нет реальных денег и весь код открыт.
Это говно выглядит, как будто кто-то хочет замутить что-то вроде соапа поверх реста, но на уровне дтошек в контроллере.
А если у меня полсотни полей в сущности? И десятки дтошек? Это 50 интерфейсов, и десятки вложенных классов, каждый из которых наследуется от десятка интерфейсов? И все внутри класса, на тысячи строк? Заманчиво.
И это кстати забывая о том, что при хорошем декаплинге дтошка вообще не должна ебать, что там в классе-сущности.
Это табачная монополия в виде государства. Также они всякие джулы впаривают. Ну это так, к делу не относится.
>А если у меня полсотни полей в сущности?
Ебать табличка, наверное.
>И это кстати забывая о том, что при хорошем декаплинге дтошка вообще не должна ебать, что там в классе-сущности.
Ну тут она тоже не ебет вроде. Ебет только маппер. Ну как я это вижу.
Hibernate судя по всему имелся в виду.
Натурой на пару часов разве что.
>>815622
>Просто пишешь все в отдельных классах. И называешь по-разному, чтобы не таскать полное имя с пакетом.
Ну наверное позже перепишу, но интерфейсы-то все равно можно и оставить же. Просто в ином случае надо валидацию пр. в каждом классе индивидуально писать, также можно проебаться с именем поля.
Иркутск.
Так это тоже самое. Владимирская область.
Понятно, что опыт бывает разный, но джуну с годом опыта никто не готов платить 600к+, а синьор с 10 годами опыта, который запрашивает 200к будет выглядить странно.
Расскажите примерно с каким опытом на какую ЗП можно рассчитывать?
Было бы здорово собрать бигдату и построить график, но едва ли у кого-то из тут сидящих будут такие данные.
В моём окружении примерно так:
0 опыта - 60-100к
Год - 120-150к
2-3 года - 150-200к
4 года - 200-250к
Перекати.
>>пик2
Прибавляй пару лет и будет похоже на правду. Но 340к это не сразу, а через полгода поисков, мб с релокацией.
А нахуя их форматировать? Да и в чем проблема с java.text? Как бы стд это обычно наиболее качественный код.
Обычно менять формат нужно при сериализации. И для этого у джексона есть специальные аннотации типа
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ")
private Date createdDate;
В "серьезном тырпрайзе" используют вообще всё. От форматтеров в Jasper Reports до масок в клиентских формочках, написанных не на джаве.
>Как бы стд это обычно наиболее качественный код.
Ща прибежит петушок со скринами косяков стд либы.
Да всм тролля? Чем я тебя затроллил?
Ну ты пупуня
А сервис пользователей это что?
Можно просто uuid пользователя в столбец пихать ну и подписаться на событие удаления.
Ну тип схема такая: зарегистрировал пользователя и ему добавляешь отсмотренных фильмы.
Ну для взаимодействия между сервисами.
Не ну тут без микросервисов не обойтись конечно.
Ну как я уже скозал uuid должно хватить. Не надо даже сагу по идее, да и без кафки можно вполне.
>а синьор с 10 годами опыта, который запрашивает 200к будет выглядить странно.
а если с 10 годами, но не сеньор?
Мне кажется если чувак пришел джуном в компанию за 60к и через год попросит 120 то его нахуй пошлют. Придется место менять
Я пришёл на 60к, через год на том же месте получал 120к. Ни разу не просил поднять зепку, даже намёков не делал.
сиди соси)
моё лицо глянувшее в код
На собесе вас просят перевести текст устно (1-2 минуты)
Спросил зачем? ответ такой: "У нас СТО учит английский, по этому все задачи у нас на английском, хоть мы и полностью в РФ"
Это что ?
Тут еще от места зависит, в какой нить региональной говногалере лиду могут платить, как мидлу в крупном банке и т.д.
Да и похуй, тебе от этого хуже если знаешь хотя бы на базовом уровне? Тем более если не знаешь. А если не хочешь, то что вообще здесь делаешь?
Ты долбоеб ебаный, кажется ему. Все всегда говорят, что с первой работы надо ливать, потому зп поднимают нехотя и со скрипом. Мой случай не исключение я начинал с 30 стажером, дошел до 60 серой зп за полтора года, а когда принес оффер на 130 тыщ после вычетов налогов работадатель не поверил, сказал что я его набываю и на всякий случай поднял мне зп на пятеру, да на 5 тыщ рублей и это не шутки! В самом деле так и было. Конечно же я уволился.
Освоила все основное по самой джаве, пописала сервисы на спринг буте, на чистом спринге, с бд тоже научилась работать, тесты писать умею. Планирую дальше изучить как работает кафка, потыркаться в нее, что еще надо добрать чтоб пойти джуном?
И если кто-нибудь устраивался здесь без опыта джуном, поделитесь как это было: накручивали ли опыт, скока зп, как сильно ебали на собесах и сколько их понадобилось? Заранее спасибо
Во-первых в следующий раз смотри на дату последнего поста в треде. Есть свежий >>2816575 (OP)
А по вопросу самое главное в устройстве джуном на первую работу - УДАЧА. Без рофлов. Всё остальное имеет намного меньшее значение.
Ну ещё могут ролять:
- профильная вышка,
- резюме, из которого будет понятно, что ты не сантехник, который услышал про IT из рекламы на ютубе, а увлекаешься этим с детства и это не стало твоей профессией по чистой случайности. Проблема свитчеров в том, что из курсов они получают очень поверхностные знания. Знания информатики хоть и не так важно, но даст возможность разговаривать с другими IT специалистами на одном языке, сойти за своего. А это как минимум половина успеха.
- фотография в резюме, которая внушает ощущение, что ты можешь быть толковым джуном.
- пол я бы выбрал мужской, но это моё субъективное мнение.
Учитесь 1 год, потом пиздуете в какой-нибудь епам откуда попадаете на работу. У меня многие знакомые примерно одинаковый путь и проходили, причем как с вышкой так и без.
Как там в 2021?
Знакомства забыл. Связи и блат роляют лучше всего тобою вышеперечисленного.
Это копия, сохраненная 29 сентября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.