>>2116295 Можно, но большинство ищет по тегу, и кто-нибудь из них может перекатить ещё раз, потому что последний пост не "ПЕРЕКАТ" из-за некропостеров, и будет два 104-х треда. Так недавно случилось с крестотредом.
Попробовал следовать инструкциям из видео и смачно окунулся в УСТАРЕВАНИЕ ИНФОРМАЦИИ. Это нормально вобще? Ошибка на ошибке одну решаешь другая вылезает, веб приложение так и не видно в локалке что бы я ни делал из предложенных решений в комментах. Стековерфлоу тоже не помог. Видимо нужно смотреть индусов 21го года выпуска. https://youtu.be/FyZFK4LBjj0
>>2116317 Нормально, даже на инглише будешь постоянно на подобное натыкаться, ибо всем лень следить за актуальностью. Хочешь актуальное - смотри только официальные мануалы. >>2116325 Иди нахуй.
>>2116331 Очевидно, что он умеет меньше, чем постгрес или оракл. На хеллоуворлдах этого не понять, но в реальном большом проекте обязательно столкнёшься с тем, что нет какой-нибудь хитровыебаной фичи для мониторинга/репликации/OLAP.
>>2117038 0 причин писать на жабе в 2021 go/rust на бэке это стек современного энтерпрайза. Но русачки и паджеты могут продолжать тонуть в спринг болоте, пока их через годик-другой не заменят на одного самого задротистого помидора с copilot под рукой
>>2117054 В контроллер маппятся запросы. Репозиторий вроде как добавляет какую-то обработку для исключений не знаю точно. Между сервисом и компонентом до сих пор разницы нет
Что делает DispatcherServlet вот у меня есть контроллер, с какой-то логикой. DispatcherServlet он абстрогирует меня от реквестов и респонзов, в чем его функция?
>>2117102 Если не шаришь в сервлетах, почитай про них сначала. В старых приложениях на ЕЕ писали много сервлетов и указывали по роуту на каждый, а в спринге сделали один универсальный сервлет и обрабатывают все запросы через него, не полагаясь на маппинги в web.xml.
Есть набор каких-то объектов, которые надо валидировать. Нормально ли будет, если валидатор просто будет дергать метод validate у каждого объекта, а вся логика по валидации будет внутри класса соответствующего объекта?
>>2117270 Пчел, ты... Валидацию надо делать через аннотации javax.valiation, никто уже давно не пишет императивные валидаторы, за исключением каких-то сложных случаев, например когда валидация одного поля зависит от значений других полей. И то, в этом случае можно кастомную аннотацию сделать.
>>2117185 >k = e.k Это присвоение и колючи там объекты, так что == сравнивает ссылки.
Там надо смотреть полный код, там йоба оптимизации, чтобы лишний раз поле не читать. Эта ветка на случай, когда у нас в бакете уже что-то лежит. Конкретно этот код проверяет что у Node key совпадает с тем, что нам передали. И если совпадает то присваивает его e. А потом в e будут записывать значение или не будут если onlyIfAbsent - true.
>>2117681 Как по мне, главная проблема реактивного программирования на JVM — это отсутствие нормальной экосистемы. Spring Security работает через жопу, реактивных драйверов под реляционные БД нет, вообще реактивных клиентов к каким-либо популярным штукам почти нет, везде всё блочащее.
>>2117730 >Java 9 Reactive Streams Они просто никому не нужны. Вообще если так разобраться, то все эти стримы, вары, реактивные стримы, новомодные потоки, потуги в асинхронность, NIO - все это НИНУЖНО. Джава была относительно неплохим законченным продуктом еще во времена Sun, как раз 5-6 версии уже были со всеми фишками, которых очень сильно не хватало. То, что пилит оракл, имеет очень малую ценность. Я считаю, что джаву нужно было оставить навсегда в состоянии 8 версии, а дальше развивать другие технологии с нуля.
Вообще дела у оракла в последнее время все хуже и хуже... Думаю лет через 10 openjdk поддерживать уже никто не будет и весь джава-мир, включая котлин, скалу и груви, погрузится в вечное легаси.
>>2117779 >Eclipse Foundation Они занимаются не openjdk, а поддержкой мертвой jakarta EE. Основной вклад в openjdk все еще делает оракл. А так как у оракла доходы падают уже который год, их БД повсеместно заменяются на postgres, то жить ему, как и джаве, осталось не долго.
Из современных двигателей IT Oracle самая нищая контора. А если у конторы мало денег, то никакого быстрого развития технологий не будет. Джава и JVM используется исключительно по инерции. Но со временем технологии богатых компаний окончательно вытеснят джаву с рынка. А вот какой-нибудь Golang, который поддерживается гуглом, будет развиваться дальше, в то время как мир джавы, включая jvm, навсегда станет deprecated legacy. Что самое интересное, во времена выхода 8 джавы, ситуация была несколько иная, и отставание оракла от основных гигантов было куда менее значительным.
>>2117815 Годно. Вообще, в жабе должен быть елинственный контроллер-фасад, который просто вызывает хранимые процедуры и передаёт в них всё, что получил.
>>2117816 Ты вообще видел Golang? Это же говно говна. Максимально кастрированный язык, там даже дженериков нет. Пока туда нормальных фич не навалят, им мало кто пользоваться будет в больших проектах.
>>2117816 Тогда почему в языке самой богатой компании мира многопоточность и треды появились спустя 7 лет после выпуска? Алсо, погугли сколько проектов google похоронил и ответь, почему он не решится похоронить golang? https://killedbygoogle.com/
>>2117816 Ну а путь питона/жс/пхп или си/плюсов тебе почему кажется нелогичным. Тот же AT&T сейчас тень себя 50-летней давности. И ничего, си и плюсы используются, плюсы даже развиваются. За спиной питона и жс изначально не было гигантов.
Вообще странно получается, 15 лет назад Джаву хуесосили за отсутстие дженериков, а сейчас создатели и пользователи Goвна говорят, что это нинужно и вообще это преимущество, ибо чем меньше у языка фич, чем проще его изучить.
>>2117826 Максимально кастрированный язык, но почему-то озон и авито выбирают его, а не джаву.
>>2117829 Ну а в джаве дженерики появились спустя 9 лет после выпуска. И что с того? Факт в том, что некоторые технологии умирают, а некоторые наоборот развиваются. Так было с делфи и джавой в 2000, так и сейчас с джавой и Go/Rust в 2021. Ну а если даже голанг похоронят (в чем я все же сильно сомневаюсь), то есть node.js и Rust. Всех разом не похоронят, а вот джава через 10 лет будет при смерти. Даже если умрет мозилла, а вместе с ней и раст (что вряд ли, ведь ее спонсирует гугл), то джаваскрипт уж точно не сдохнет.
Кстати, один из наиболее крупных разработчиков решений для джава мира, IBM, готовится к уходу в мир иной.
>>2117835 Я, как нюфаг думал, что го - это для очень конкретных кейсов. Маленькие, но быстрые бекенды или быстрые микросервисы. Что-то между чистым си и пхп. Но тут говорят, что го захватит долю джавы. Странно.
>>2117833 В си и плюсах нет нихуя кроме стандарта, который пишут деды из комитета. И вообще, кроме стандартной либы там нет ничего. А вот вокруг джавы есть инфраструктура в виде Spring/JavaEE/Hibernate и еще некоторых технологий. Если сама джава помирает, то развития никакого не будет во всей инфраструктуре. EE уже несколько лет как мертв. Спринг и хибернейт - вопрос времени. Естественно через год ничего не умрет, и даже через 5 лет будут писать на спринге, а вот через 10 лет - уже вопрос. К тому же из SE лет через 5 наверняка выпилят все, что связано с ГУИ - awt и swing. А если посмотреть на далекое прошлое, то внезапно выяснится, что технологии вроде Java ME, Embedded, Java Card, EE - все мертво нахой.
>>2117844 Позицию твою я понял и отчасти поддерживаю - нет смысла привязываться к языку, он рано или поздно умрет. Однако, джава остается хорошим выбором для обучения ООП и подходов разработки, что может быть лучше?
>>2117734 >Про возможности языка неправда, по крайней мере если писать на Котлине, то там можно и циклы, и if-ы, и вообще писать императивный код. Котлин все равно ограничен, если у тебя нет неблокируещего IO - например драйвер базы блокирующий, то тебе надо отдельный пул на работу с базой. А тут у тебя все библиотеки сразу заработают асинхронно.
>Про стектрейсы — полуправда, у Project Reactor есть дебаг-режим, в котором стектрейсы более понятные. Ты же не будешь запускать прод в дебаг режиме. А разбираться со стектрейсом с прода - надо.
В целом его мысль была в том, что мы даем вам инструмент которые легко и просто решает задачу масштабируемости. И он проще и легче для использования чем реактивный подход или акторы. И он признает, что есть сценарии когда реактивный подход или акторы все равно будут нужны. Но даже они получат выигрыш от неблокируемого IO.
>>2117930 Ну вообще есть спринговые проекты, которые уже несколько лет как не обновлялись. Понятно, что стандартные IoC, Boot, Data, Security поддерживаются. Но вот от идеи использовать один мега-фреймворк для всего на свете постепенно стали отказываться в пользу разных инструментов, поддерживаемых разными разработчиками. Просто потому что в микросервисах огромные фреймворки не сильно полезны, а монолиты уже мало кто пишет. Да и к тому же, если по какой-то причине спринг перестанут разрабатывать, то это будет означать гарантированную смерть всей джава платформы на бекенде. А если у тебя несколько разных фреймворков и своих велосипедов, то даже если что-то перестанет обновляться и поддерживаться, ничего страшного не произойдет - в короткий срок можно будет найти замену или вовсе написать свой инструмент. В джаве ты такое просто не осилишь сделать за вменяемый промежуток времени.
>>2117816 Тебе не нужны миллиарды, чтобы развивать JVM. Команда JVM сотня-другая разрабов. Опять же благодаря открытости, много мелких вещей - типа багфиксинга делается строронними компаниями. Вон красная шапка целый новый GC законтрибутила. Основные усилия это стратегия развития платформы, но опять же тут консорциум компаний. Тот же Гугл и Амазон сами плотно сидят на Джаве и участвуют в развитии.
>>2117951 > в короткий срок ... вовсе написать свой инструмент
я чуть не поперхнулся чаем. Удачи тебе написать свой фреймворк в короткий срок, который будет оттещен и готов к работе без постоянных допилов.
Даже просто перейти на другой фреймворк - это куча времени, если у тебя конечно не пет-проект в 10 классов
> В джаве ты такое просто не осилишь сделать за вменяемый промежуток времени.
Я может что не понимаю, но на любом языке перейти или написать новый фреймворк, оттестить его - это куча времени
Просто спринг - это огромная экосистема, никто тебе не мешает найти замену для отдельных его частей, просто на то, чтобы связать их друг с другом может уйти больше времени, чем в спринге, но дерзай
>В ближайшие два года количество java-вакансий только увеличиться
Большая часть java вакансий навсегда останется в эпохе java 8, которая вышла аж в марте 2014 года, как раз ровно в период славных побед России на геополитической арене. Чтобы не быть голословным пидорасом, прикреплю пикрилы. Видишь, какие даты поддержки у 8, 11 и 17 джавы? У 8 версии аж до 2030 года, это дольше, чем у всех последующих версий жаб. К тому же, ни на 11 версию, ни на 17 бизнес особо перекатываться не планирует. С момента выхода 8 версии, когда выпустили stream api, никаких значимых апдейтов не было, ни в самом языке, ни в jvm. Большие надежды были на project loom, который наконец принес бы асинхронность и легковесные потоки, но его обещают с 2018 года, и все никак. В 17 версии loom'а не будет, а так как это LTS релиз, то это очень плохо, даже ужасно. Придется ждать теперь как минимум до осени 2023 года появления легковесных потоков в LTS, и только начиная с того момента можно будет рассчитывать, что все эти новомодные штуки начнут использоваться в проде. Естественно не сразу, году к 2025-2026 примерно.
Я вот сейчас думаю, куда переходить из джавы, ибо застрять в спринге и хибернейте на долгие годы я не хочу, так как боюсь, что через 7 лет мои знания этих кобол-технологий станут мало кому нужны.
>>2117983 Насколько я знаю, Джава всегда была медленноразвивающимся языком, таковой она и осталась. После 8й Джавы каких-то значимых фич, кроме варов (которые многими всё равно осуждаются и неиспользуются) и рекордов (которые не нужны, потому что есть Ломбок) не завезли. Вот люди и сидят на 8й. >Я вот сейчас думаю, куда переходить из джавы Советую Node + Typescript + NestJS, мне очень зашло, хоть это пока и не очень популярно в СНГ. >так как боюсь, что через 7 лет мои знания этих кобол-технологий станут мало кому нужны Языки и фреймворки для энтерпрайз / веб-приложений похоже друг на друга, везде используются +- те же концепции. Так что даже если Джава вымрет и ты будешь вынужден сменить язык, твои знания и опыт всё ещё будут релевантными.
>>2118096 Хз, многим просто не нравится, что ты не видишь явно, какой у тебя тип. Да и сейчас это не особо актуально, ибо IDEA показывает тип всё равно. Я сам var активно использую.
>>2118116 Да и хер с ней с джавой, со знаниями сеньора джависта перейти на тот же го не такая уж и проблема. Потом завезут дженерики и фреймворк СпринГо и будут обсуждать, что голанг умирает.
>>2117983 >через 7 лет мои знания этих кобол-технологий станут мало кому нужны. Через 7 лет активной разработки тебе вообще похуй на каком языке писать. Ты в любой из существующих вкатишься за месяц, навыки писать код и тонны смежных знаний за эти года у тебя никуда не пропадут
Вопрос такой: надо из джава кода запустить бин на линупсе Нагуглил только Runtime.getruntime.exec("Здесь команда"); Есть ли еще какие то способы? Что то мне подсказывает, что это плохая идея
Ребята,у меня каталоги по уебански показываются,не знаете как исправить? Когда я делаю com.puk.srenk у меня показывается не три каталога,а один с названием com.puk.srenk,но при этом в файловом менеджере все создается нормально,каталог com,в нем каталог puk и в нем уже srenk
>>2118242 Угу, скажи это огромному числу миддлов и сеньоров на джаве, которые уже вообще не помнят ни джава кор, ни многопоточку, и максимум умеют программировать на спринге
>>2117759 Java не единственный jvm язык. Хуй с ним с языком, развиваться с такой же, скоростью как котлин, он всё равно не сможет из-за груза обратной совместимости, а вот возможности самой виртуальный машины должны развиваться.
>>2118096 >А чем плох var? Тем что, без ухудшения читаемости, его можно использовать в очень ограниченном числе случаев. Там где тип ясен из инициализатора. Т.е. фактически это только конструктора или литерал. Вызов метода - уже оставляет неопределенность - что там вернется. И получается, что в половине мест у тебя var, а в другой тип. Явно напрашивается решение использовать что-то одно.
>>2118477 >>без ухудшения читаемости, его можно использовать в очень ограниченном числе случаев а если там var user = UserAbstractBulderFactoryCreator.create(request.getUsername); var dto = conversionService,convert(user, userDto.class); return dto; Не похуй ли что там за типы в этих варах? Так даже проще рефакторить. Да и IDE все равно показывает что там за тип.
Так значит... Есть конфа в тг вкатыльщиков и бывалых? Только не обоссыте меня. Я тупая, мне тяжело даётся изучение и у меня цель - деньги, а таких как я тут не любят. Ну таких, кто ради денег учит.
>>2118624 Да много таких конф. Там все такие как ты - вкатывальщики, иногда 30+, которые имеют семью и детей и вкатываются в джаву ради огромных богатств
>>2118403 Во-первых, как уже было упомянуто выше, Java ценна не самим языком как таковым, а колоссальной экосистемой вокруг него. Любой альтернативный язык обязан поддерживать её это на 100%, иначе крупный бизнес не будет создавать на нём ничего, кроме всякой экспериментальной хуеты. А на мамкиных энтузиастах котлин далеко не уедет.
Во-вторых, эта поддержка должна быть двусторонней. Так что головная боль совместимости — это проблема не Java, а как раз Kotlin. И ладно бы котлину поддерживать код на жабе, это не так сложно. А вот добиться того же в обратную сторону — пиздец.
В-третьих, все новомодные фичи медленно, но верно перетекают в жабу а разрабы с большим опытом их один хуй не используют, что лишает альтернативные языки смысла существования.
Groovy умер, Clojure умер, Fantom и Ceylon вообще мертворождённые, Scala пока барахтается, но ей недолго осталось. У котлина есть шанс только на андроиде, на десктопе она сдохнет. Жаба их всех переживёт.
>>2118860 Ну так-то понятно, что нет никакого смысла использовать какой-то другой JVM язык на бекенде кроме жабы. А если не JVM? Golang/Rust? Node.js? Там уже другие платформы со своими иструментами, которые в чем-то удобнее, легче и быстрее, как по производительности, так и по скорости разработки.
>>2117983 Сейчас в мире разработки кризис. С момента выхода джавы и шарпа не появилось ни одного вменяемого языка программирования, на котором можно было бы вести серьезный бизнес. А ведь джава все-таки старый язык, его эпоха постепенно проходит, несмотря на то, что годных новых инструментов нет, как бы это абсурдно не звучало. Какие-то потуги делает го, но бизнес на него переходит не очень охотно. Вообще мне кажется, что программирование и все IT отрасль из "быстро развивающейся с постоянно появляющимися технологиями" постепенно перейдет в состояние глубоко легаси, которое будут поддерживать десятилетиями или даже столетиями. Никаких новшеств не будет, так как компьютерное железо достигло своего пика развития. Не будет масштабного появления смартфонов и приложений для них, как это было в конце нулевых, не будет такого развития веба, который произошел во многом из-за развития возможностей сетей. Мы все будем исправлять баги в древнейшем легаси коде. Просто потому что бизнес не сможет уйти с джавы на что-то новое. Физически не сможет.
>>2117759 >Я считаю, что джаву нужно было оставить навсегда в состоянии 8 версии 2 пакетика чая этому анону. Но маркетологам надо чем-то заниматься, вот и добавляют бесполезные свистелки и перделки. И если в предыдущих версиях добавили нужные фичи, которые упрощали код (дженерики, стримы и анонимные функции), то после 9 версии пошел вообще какой-то кринж. Жаба новых версий становится подозрительно похожей на фрактал плохого дизайна - PHP.
>>2118896 > С момента выхода джавы и шарпа не появилось ни одного вменяемого языка программирования, на котором можно было бы вести серьезный бизнес. Scala активно используется, Hadoop, Spark, это все, куда уж серьезнее. Но язык еще сложноват для рядовых макак. Надо что-то попроще.
> Никаких новшеств не будет, так как компьютерное железо достигло своего пика развития. Квантовые компьютеры же. Уже есть единичные действующие образцы. Функциональное программирование пока не пошло в массы. Вот когда на смену экспериментальным языкам вроде Scala и Rust придет нечто более простое, уровня самой Java, тогда возможно все и устаканится, новых языков больше не будет.
>>2118924 >Квантовые компьютеры же Их невозможно использовать в домашних условиях.
>Scala Она умирает и рынок скалы сокращается последние годы. Функциональщина для энтепрайза подходит гораздо хуже, чем стандартное императивное программирование с ООП.
>придет нечто более простое Ну вот Goвно есть. Проще раста. Но там нет полноценного ООП. Для кровавого энтерпрайза, где нужен высокий уровень абстракций не пойдет (учитывая что сами задачи в энтерпрайзе часто сводятся к автоматизации каких-то офисных работников, которые 40 лет назад заполняли кучу бумажных формочек, а теперь заполняют их в компьютере).
>>2116244 (OP) Шалом местным, вкатыш в треде. Учил я Джаву, дошёл до исключений по курсу Sololearn шлак, наверное, тот ещё, но похуй, всё равно потом книги дрочить и только сейчас задался вопросом: а в чём же, мать его, писать код? До этого обходился VSCode с плагинами и прочей малафьёй и JDK от Oracle. А теперь придавило перекатиться под IDE ведь там то точно тонна полезных фич а-ля умных исправлений и прочего. Смотрю на Eclipse, NetBeans и IntelliJ IDEA. Чтоо посоветуете, дорогие аноны?
>>2118495 >Не похуй ли что там за типы в этих варах? Если это write only код - то конечно похуй. Но когда ты будешь читать код без IDE например в пул реквесте, то ты не сможешь сказать что там за тип. И надо или открывать IDE или догадываться что если передаем userDto.class, то наверное userDto и вернется.
Особое веселье происходит со стримами, где есть несколько map() методов.
Как у компилятора изменить кодировку по-умолчанию? Чтобы не писать каждый раз -encoding utf8 как параметр к команде javac. Поставил переменную среды JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8, не помогло. Хочу выводить русские хуи в свинг без лишних телодвижений.
>>2118873 >А если не JVM? Golang/Rust? Node.js? Там уже другие платформы со своими иструментами, которые в чем-то удобнее, легче и быстрее, как по производительности, так и по скорости разработки.
Node.js - просто костыль, чтобы жопаскрипт разрабы могли своими кривыми ручками и на беке пошариться ну и переиспользование кода, куда же без него. Но под JS много библиотек, правда у них уклон в UI, а не бек как на джаве.
Rust - язык для системного программирования. На нем трудно писать быстро, он требует более тщательной проработки кода. У него мало своих библиотек, приходится пользоваться сишными.
Golang - ребята хотели сделать простой язык и получился какой-то недоделанный. Все эти if err != nil . Опять ООП кастрировали, а взамен ни мощной системы типов как функциональных языках, ничего не дали. По итогу получился эдакий Си с GC и без поинтерной арифметики.
На данный момент они не выглядят как языки способные заменить джаву в ее нише. Если Go добавить нормальное ООП, обработку ошибок.и Гугл вложится в развитие и портирование библиотек и фреймворков то возможно. C# как платформа уже мог бы заменить джаву, но опять же мало библиотек Майкам надо работать в этом направлении, но они не хотят.
>>2119045 >>будешь читать код без IDE например в пул реквесте В том примере не нужно знать что там за тип. Сегодня это User, завтра Account. Из за вара даже перекомпилировать не придется. Что вернется из метода понятно по сигнатуре. Приходит в него тоже какой-нибудь request, который хуй знает что содержит. Ты либо идешь в ИДЕ и разбираешься как все работает досконально, либо не ебешь мозги и смотришь на уровне абстракций, а для этого типы тебе не нужны. >>Особое веселье происходит со стримами, где есть несколько map() методов. надо переменные нормально называть, чтоб понятно было о чем речь, тогда и типы не так важны
>>2118896 >Никаких новшеств не будет, так как компьютерное железо достигло своего пика развития. Из нынешнего железа можно очень много выжать, если оптимизировать многие абстракции. Плюс в пару -тройку раз выч. мощность таки сможет еще увеличиться. >Не будет масштабного появления смартфонов и приложений для них, как это было в конце нулевых, не будет такого развития веба, который произошел во многом из-за развития возможностей сетей. iot рано или поздно взлетит. И к нему тоже нужно будет писать бекенд и связывать с вебом и мобилками.
>>2119081 >iot рано или поздно взлетит Когда? Мне еще 6 лет назад на этой доске втирали чушь про iot. А по факту в РФ его как не было, так и нет, а зарплаты ембеддеров ниже чем у курьеров, которые даже русский иногда не знают
>>2119067 >надо переменные нормально называть, чтоб понятно было о чем речь, тогда и типы не так важны Я работал в проекте где по кодстайлу использовать var было обязательно. И ребятам пришлось изобретать свою венгерскую нотацию мэйбиХуй, пиздаЛист, пупаЗалупаМэп. Охуенная идея!
>Из за вара даже перекомпилировать не придется. Иди поспись! Перекомпилировать у него не придется.
>>2119104 Объясни по человечески, что ты имеешь в виду. В базе все хранится в табличках, обычно в 2-х разных и потом джонится. В памяти просто объекты, как обычные джавовские. Только коллекции обычно ленивые
>>2119148 У нас есть агрессивная коллекция внутри сущности. Мы создаём эту сущность. Инициализируем коллекцию и добавляем туда другие сущности(которые тоже создаём). У нас не определены каскадные типы. При сохранении первой сущности сохранятся все сущности в коллекции?
>>2119088 Ну а почему он не должен взлететь? Преимущества очевидны. Для внедрения нужны некоторые инновации. Но это не маняквантовые вычисления. Ну а когда - я не вижу будущее. Может через 5, может через 10 лет. Как появятся массовые чипы, стандарты связи и самое главное - визионеры среди крупняка, чтобы продвигать. Что до рф, то тут и с вебом/мобилками было так же. На первых волнах хайпа ничего не делали, а как технологии подешевели, то появились массовые продукты и рабочие места.
>>2119170 С var есть проблема - тип не всегда ясен из кода, и ты последовательно предлагаешь разные костыли - догадываться из контекста передаем userDto.class, то наверное userDto и вернется - называть переменные так, чтобы из названия был ясен тип при этом сам назвал переменную dto - открыть код IDE, чтобы показала подсказку о типе
И это все, вместо того чтобы просто - указать тип в объявлении. Почему? Это не по хипстерски тип указывать или что?
>>2119203 >Но зачем? Если тебе так интересно, открой код в ИДЕ. Я не хочу ради пул реквеста на 3 срочки, делать чекаут бранча и ждать пока он заимпортится. Тем более, что у меня сейчас своя работа, открыты классы с которыми я работаю, что-то не закоммичено, дебаг в процессе.
>>2116244 (OP) Посоветйте книгу-справочник по Жава, сам C++/C господин, но хочу ковырнуть Луцент и Солр/Еластикчерч. Писал пару раз простые плагины, ничего тяжелого, но хочется быстренько по верхам пробежать.
парни спасайте. собираю варку с помощью мавена, и у меня в проекте есть библиотеки локально, можно их как-то добавить в варку не делая депенденси из репозитория?
>>2119398 >Покупай после вката, когда денег заимеешь, ти що Чел у меня на счету пару лямов, трачу на бухло и книги. Хочу на топшлюх тратить, но пока брезгую.
>>2119727 >Разве это справедливо? Справедливо, если бы он хотел, то работал бы жабапомидором в каком нибудь большом бизнесе и греб деньги лопатой, поебывая херочек и бухов на корпоративчиках.
Сап. Есть проблема - приходит реквест (моделька) с кучей булевых, каждая переменная из которых отвечает за определенный функционал. В данный момент реализация через хуеву тучу if проверок. Внимание вопрос - как из модельки выпилить все False переменные? Подходят любые варианты маппинга, только чтобы без простыни условных операторов и без рефлексии (это overhead и является слабосвязным, при расширении логики человек, который будет этим заниматься должен знать, что есть такой магический метод с рефлексией, иначе новое поле выпадет из логики). Спасибо
>>2119880 Мань, иди со своим агрегированием куда подальше. Я часто использую абстрактные классы, и это намного удобнее хипстерской хуйни, если правильно их поменять.
>>2118957 >Ну вот Goвно есть. Проще раста. Но там нет полноценного ООП Потому что Go - спизженный Оберон, а Вирт дженерики не осилил. JVM у Жабы тоже был спизжен с рантайма у Оберона, поэтому и в ней нет полноценного ООП. Вот C# написан полностью с нуля, там все в порядке, никаких type erasure.
>>2119937 Найс подрыв макакича. ООП, паттерны и аджайл придуманы с единственной целью: чтобы вместо высокооплачиваемых хакеров и математиков код писали дешевые тупые индусы.
>>2119945 Птица обладает способностью летать, а пингвины и страусы не летают. У прямоугольника можно независимо задать ширину и высоту, а у квадрата нельзя. ООП это дичь, непригодная для моделирования реального мира.
>>2119954 > Птица обладает способностью летать, а пингвины и страусы не летают. Полиморфизм > У прямоугольника можно независимо задать ширину и высоту, а у квадрата нельзя. Полиморфизм
>>2119869 >А то учу-учу всякое и конца и края не вижу. Что там учить? Я после крестов пробежался по примерам и начал писать на Жабе, ньюансы конечно не знаю но 95% кода читаемо.
>>2119964 Какой полиморфизм, мань? Квадрат есть частный случай прямоугольника, т.е. должен наследоваться от него. И при этом нарушается принцип Барбары Лисков. Вывод: ООП маньки обосрались.
>>2119991 Пока миллион версий подключения к базе через спринге с хибером и без(хз какие учить) и секьюрити больше всего напрягают. А до микросервисов и брокеров сообщений, о которых говорит челик выше я вообще пока не дошел. Ментор бы пригодился, чтобы подсказал за пару занятий, что точно нужно учить, помог выбрать проект-портфолио и кратко отревьювил пару раз его части .
>>2120003 А нах ты все это учишь? Кое-как выдрочил джавакор, почитал про то как работает JVM, GC, написал пару крудов на спринге, выучил sql на уровне джоинов, хранимок, транзакций и тригеров, и бегом устраиваться на галеру.
>>2120007 Ну я смотрел видосы, читал статьи, посты на харкаче. И резимируя вывод - нужно уже знать и хибер и спрингдату и спрингсекурити по верхам и написать проект(пусть его и не будут читать), чтобы в голове улеглось. Причем не круд на один вечер, а на 5-7 табличек и на десяток-два эндпоинтов, на ресте с фронтом и простенькой авторизацией. Что-то уровня того, что в спрингинэкшоне.
>>2120014 Да твой круд все равно вряд ли кто-то станет смотреть. Для джуна как раз знание джавакора и всяких фундаментальных вещей важнее, как мне кажется.
>>2120014 >знать и хибер и спрингдату и спрингсекурити по верхам и написать проект(пусть его и не будут читать), чтобы в голове улеглось
Это развлечение на месяц-полтора. Только вот с фронтом могут быть проблемы. Если нет опыта в html/css/js твой проект будет крайне всратым неюзабельным гавном на thymeleaf. Но тратить время на фронт смысла особо нет. А вот всякие кишочки джавы, многопоточность, асинхронность, JMM, как работает GC, какие там есть эпохи куч, обычные и многопоточные коллекции, как они реализуются - все это должен очень хорошо знать, понимать и уметь рассказывать на собесе.
Плюс ко всему можно написать какой-нибудь проект на java SE. Я не говорю про какое-нибудь говно вроде телефонной книги, парсеров сайтов, чата - все это делают на курсах для вайтишников. А вот какой-нибудь мини-компилятор, виртуальная машина, интерпретатор небольшого языка программирования, может быть даже что-то с графикой - такие проекты уже показывают, что человек вероятно действительно учился сам и читал книжки, а не только втупую списывал то, что ему показывали на курсах для вкатунов/джавараше/у алишева/трегулова. Но опять же, это если есть много времени свободного.
>>2120048 ну я почти всегда обратные советы слышу. Типо советуют мидлы/синьеры. И говорят они или до сир пор не знают глубоко кишков или учили, но даже на собесах не понадобится. >Это развлечение на месяц-полтора. я уже на этой стадии полгода(два месяца на основы html/css/js убил). И хз че и как писать. Еще и жс-фрейворк придется подучить.
>>2120003 >А до микросервисов и брокеров сообщений, о которых говорит челик выше я вообще пока не дошел. Ну вот и не выебывайся, макака. Нихуя ты Жабу не знаешь. Дорастешь до сеньора, вот тогда и поговорим.
@ МЫ РАЗРАБАТЫВАЕМ СЕРЬЕЗНОЕ ПО ДЛЯ БАНКОМАТОВ И МИКРОВОЛНОВОК, КТО КРОМЕ НАС? @ МЫ РАЗРАБАТЫВАЕМ ДЕСКТОПНЫЕ ПРИЛОЖЕНИЯ @ МЫ РАЗРАБАТЫВАЕМ ВЕБ СЕРВИСЫ ДЛЯ ФРОНТЕНДЕРОВ @ МЫ РАЗРАБАТЫВАЕМ САЙТЫ ВИЗИТКИ И МОЖЕМ ОБОЙТИСЬ БЕЗ ФРОНТОВ
>>2120007 >и бегом устраиваться на галеру В 70% вакансий: - уверенное знание Docker, Kubernates, OpenShift - опыт работы с брокерами сообщений (Kafka, RabbitMQ, JMS) - Solr, Lucene, Elastic Search - Spring Cloud - участие в проектах с высоконагруженной архитектурой Во всех оставшихся: - зарплата менее 100 тыс. р.
>>2120127 если ты реально это все знаешь, то тебе проще искать работу девопсом за 400к +++ java разрабам щас хуем по губам водят, поняли что они пустышки и выжимают все соки.
>>2120132 Еще пару лет назад не требовали ни докеров, ни брокеров. Но жабодебилы все просрали. Еще через пару лет их и на реакте заставят адаптивно верстать, и мобильные приложения собирать.
>>2120145 Такая хуйня только в мире JAVA и других терпил. посмотри GO/rust/ петухоний у них нет такой хуйни, потому что они ценятся рынком и к ним относятся как в БЕКЕНДЕРАМИ и программистам
а к Java щас относятся как к петушкам опущенным. вроде как еще на рынке, а вроде как уже выкинули на мороз
>>2120150 Да тот же C# (главный конкурент в энтерпрайзе) взять для сравнения, что должен знать типичный миддл? - язык C# и базовые классы .NET Framework; - ASP.NET MVC 5 (аналог Spring Boot + Spring MVC); - .NET Core для кроссплатформенных проектов (по сути, тот же ASP.NET MVC); - Entity Framework (простейший из ORM); - Transact-SQL, язык для хранимых процедур MS SQL Server. И все, этого достаточно, чтобы иметь зарплату не ниже, чем у жабокуколда.
>>2120164 Что сложного в лупе? По сравнению с реализацией асинхронности в джаве, где нужно знать многопочку, а для многопоточности джава мемори модел эвентлупа с очередями микро и макрозадач это суперлегко.
Вечер в хату!! В процессе изучения Java возник вопрос про upcasting. На хуя оно надо? В интрнетиках пишут что если, например, есть перегруженый метод, а мы хотим использовать его не перегруженную версию, то делаем апкаст к родителю и наслаждаемся методом. И это все?
>>2120127 Джуну без опыта больше 100к платить никто не будет
>>2120174 >По сравнению с реализацией асинхронности в джаве, где нужно знать многопочку, а для многопоточности джава мемори модел эвентлупа с очередями микро и макрозадач это суперлегко.
По опыту очень малый процент джавистов знает многопоточку за пределами "умею запускать потоки, знаю про synchronized и Executorservice". Про JMM многие вообще не слышали, про то как реализуются атомики, CAS, lock cmpxchg тоже мало кто слышал. Про lock-free, wait-free я вообще не говорю. С nio такая же история, некоторые вообще не догадываются, что помимо новых классов работы с файлами, там есть еще селекторы и буферы.
>>2120145 Уже лол. Просто в требованиях не пишут. Подразумевается что про это и так все знают, ведь со спрингом ты по сути идёшь на фулстек позицию, а там и фронт и бэк и Аллах.
>>2120237 Чего блядь? Апкаст никак не влияет на методы, ибо вызывается метод объекта, который доступен по ссылке. Апкаст нужен для полиморфизма, и вообще, зачем явно апкастить?
>>2120384 Странная критика. С одной стороны плохая статическая типизация. А с другой слишком много памяти жрет. То есть критика и со стороны низкоуровневых байтоебов и со стороны скриптомакак.
>>2120187 >Кстати, когда там в жабе появится async/await? >И когда pattern matching? Сисярп вкатыш в треде. Уже работу нашел или все хелоуворды пишешь?
>>2120127 >>В 70% вакансий: >>Во всех оставшихся: - зарплата менее 100 тыс. р. Тебе без опыта и со знанием всего этого 100к не дадут. Вернее тебя просто не позовут на собес на такую должность.
>>2120145 Им хотелось бы что разраб все знал, но если он сможет впихнуть свое говно в контейнер и даже подключить тестконтейнер - этого уже достаточно в 90% случаев. Но кубер это уже перебор. Брокеры в жабе тоже не сложно - запихнул это в кафку, спиздил результат - и похуй че там за магия внутре. >>Еще через пару лет их и на реакте заставят адаптивно верстать на ангуляре вообще то
>>2120167 >>А фронты просто берут и учат за 1 неделю? На джаве надо спринг разложить на слои, скомпилировать джарник образом-билдером, потом скопировать результат в другой образ. На фронте ты сразу собираешь. Хз че там учить неделю, докер без баз, миграций и прочего говна это 1 вечер.
>>2120627 на фронте такие же абстракции и столько же ебли по бойлерплету.
на фронте ты собираешь проект через тот же компилятор, из ts в js зачем вам что-то собирать? просто в реалтайме работаешь, должен быть упрощенный билд, а а полноценный только перед продакшеном или у вас так нельзя в 2021?
>>2120627 докер учить на уровне: поднять 4 контейнера с БД, нодой, приложением, NGINX, сейчас практически каждый фронт в этом разбирается. ну если выше джуна конечно. А беки пердели годами и не могли это выучить, до сих пор жалуются...
Фронты учат все сразу и быстро ,а беки пердят что это новое не нужное и только спустя 10 лет все же учат.
>>2120495 >Уже работу нашел Эти проекции безработного жабокодера. Ты давай учи брокеры сообщений, не отвлекайся. МОЖЕТ БЫТЬ тогда и возьмут в Люксофт за еду. А у меня скоро отпуск.
Чувствуете запах горящик жоп? Это нищуки всех тредов сбежались к Java-богам в попытках поднасрать успешным тырпрайз акулам. Чуханы всех мастей, вы хоть работу нашли на своем убогом %LANGUAGE_NAME% без java?
>>2120822 >Это нищуки ...провизжал безработный жабокодер, заглушая урчание в животе. Уже выучил, как работают 3 уровня кэша в Hibernate? Давай, давай, учи, может хоть в этот раз пройдешь собес!
«Работа с COBOL вредит мозгу; следовательно, его преподавание должно считаться уголовным преступлением», — так написал в 1975 году знаменитый компьютерный учёный Эдсгер Дейкстра. COBOL был скорее языком «рабочего класса», вторжением «синих воротничков» в святыню кодинга.
>>2121212 >баз данных Знаю SQL и навыки админки бд есть >реальных проектах, за одно набьешь скилл и будет портфолио Не нужно, я C/C++ господин >знание англюсика Учить это говно нет желания, техдокументацию читаю свободно
Жаба мне в принципе нужна для Люцен/Солр/Эластиксерча
Как в грейдле сделать одну крутую таску, которая качает архив, проверяет его хэш, распаковывает и затем заменяет некоторые файлы? Для первых двух заюзал плагин de.undercouch.download, для вторых двух подходит обычный Copy, как я понял. Как теперь это все объединить в одну таску, чтобы у нее корректно проверялся up-to-date статус?
>>2121293 Херовое решение это ад из коллбэков, чем изначально и была асинхронщина, о чем и говорится в статье. Но это тупо самое первое и очевидное решение. Потом организовали это в промисы, придумали акторы, потом в шарпе придумали асинки, потом в котлине избавились от говняка в шарповских асинках. Котлиновские корутины например не ебут кучу кложурами (чем был недоволен автор статьи), потому что разворачиваются в простую стейт машину с одним интом и свичом прямо в месте прерывания, и правильно пробрасывют исключения, и отменяют весь контекст дочерних корутин, что от них и ожидается, и не прибиты гвоздями к реализации как у майкрософта, им можно и треды и контексты выбирать и свой диспатчер написать. Короче они идеальны. А какие там костыли в проджект луме завезут я хз. Алсо с итогом статьи не согласен. В го корутины крайне хуево выглядят синтаксически, потому что общение между ними предполагается только одним единственным способом - через каналы, которые через селектор отсылают к написанию кода стилем гоу ту куда то в 60е годы
Аноны, такой вопрос. Сделал проектик на Spring, разобрался с REST контролерами, мейлингом, вообще с устройством Спринга и хочу спросить: что интересного можно написать на Спринге, чтобы прощупать его? Может, соцсеть/форум/своя имиджборда. Очень хотелось бы вместе с этим потрогать и применить любую СУБД. Спасибо большое заранее за помощь
>>2121433 Я данбуру на ней писал, но так и не дописал. Просто бери любой сайт типа кинопоиска или еще какой хуйни с картинками, табличками, пользователями - и реализуй. Если умеешь во фронт - можешь и его прикрутить на каком-нибудь ангуляре/реакте/вуе.
>>2121449 Спасибо большое, анонче. Во фронт совсем не умею, в своем проекте написал веб-конфигуратор, и то чертыхался через раз, нет у меня чувства прекрасного)
>>2121497 >А зря. Чего это? Что за каргокульт? Ну потоки, потоки, ебитесь они конем, там больше гемора с синхронизацией чем пользы. Хотя может в Жаве необычные потоки?
>>2121501 Если ты хочешь что-то нормальное делать, то тебе нужно понимать, как это говно работает. Иначе придется формочки в таймлифе шлёпать и круды пилить
Вот, полюбуйтесь, свежая вакансия. Жабокуколдов по-прежнему заставляют работать за себя и за девопса. Почтенные шарпобояре, растогоспода, голанго-доны и руби-самураи дружно угорают над этими клоунами, запасаются попкорном и требуют продолжения представления.
Мы ищем Java-разработчика в проект для разработки новой технологической платформы на базе облачных технологий.
Предстоит заниматься созданием удобного и простого в использовании сервиса для клиентов, банковской и бизнес сферы.Вам предстоит участвовать в разработке сервисов Журналирование, Мониторинг, Трассировка, Админ-консоль.
Требования к кандидату: — опыт работы на Java от 2х лет — уверенные знания Java 8+ (мы используем Java 11 для разработки наших сервисов), SpringBoot 2 — приветствуется опыт в Kotlin, Go или желание попробовать эти языки — понимание принципов построения микросервисной архитектуры, разработки высоконагруженных, масштабируемых и отказоустойчивых приложений — опыт работы с Docker, знакомство с k8s / OpenShift (категорически приветствуется опыт эксплуатации этих технологий в продакшене) — умение работать с unix-системами, навыки DevOps (развёртывание и сопровождение приложений) — знакомство с техстеком: ElasticSearch, Kafka, PostgreSQL, Prometheus, Thanos, Jaeger, Fluent bit / Fluentd (хотя бы с некоторыми технологиями)
⭐️Условия: - удаленная работа - Оформление по ТК (возможен договор с ИП или самозанятым) - Заработная плата 150 000- 200 000 руб.
>>2121637 Да вакансий с многопоточкой хуй да нихуя. Что-то очень редкое, возможно без спринга, с Netty или NIO. Обычный джавист потоки видел только когда вкатывается, в работе они не нужны от слова совсем tomcat сам создает треды для каждого запроса.
>>2121730 Ты же работаешь в многопоточной среде. Если работаешь с чем-то сложнее интернет магазина, скорее всего столкнешься с доступом у разделяемым ресурсам и синхронизацией нескольких инстансов
>>2121587 Потому что ты изменил значение из другого потока, а синхронизацию кэшей потоков, без явного на это указания, жвм не гарантирует. Юзай AtomicBool, а ещё лучше CountDownLatch, по крайней мере в этом случае
>>2121830 Все объекты извне, которые используются в лямбде должны быть final либо effective final. Т.к. done в лямбде изменяется, то нужно его оборачивать в массив, либо AtomicBoolean
Стоит читать от корки до корки? Хочется чего-то полноценного, но на первый взгляд очень много неактуальщины и немало редких технологий. И по устареванию. Книга 2017 года. Тут спрингбут 2.0.0 и спринг 5.0.0. Сильно что-то поменялось с этих версий за 4 года? Если нет, посоветуйте другой талмуд. Желательно с примерами кода. Дока core + boot + mvc + data + security будет раза в 3 больше и без готовых программ-примеров.
>>2121395 >Котлиновские корутины например не ебут кучу кложурами (чем был недоволен автор статьи) Автор статьи был недоволен тем, что ты из красного метода не можешь вызвать синий.
Из еще очевидных минусов: куча библиотек работает на основе тред локалов, начиная спринговыми транзакциями и заканчивая всякими метриками. Конечно, если бы корутины были встроены в джаву с версии 5, то конечно бы это было прекрасное решение, которое бы поддерживали все сторонние библиотеки и фреймворки, но увы.
Стектрейс корутины надо расшифровывать с помощью IDEA. Чтобы стектрейс C# async/await читаемый получить надо со спец ключами запускать явно не дешевое удовольствие.
>А какие там костыли в проджект луме завезут я хз. Костылей там не будет, это же просто тред, только легковесный. В API у тебя все тоже самое что и раньше. Могут быть вопросы с перфомансом, но их можно решать не трогая API.
>>2122325 Вообще по мне суть конструкции асинк/эвейт чисто синтаксический сахар. То есть писать асинхроншину типа фьючеров чтобы ее можно было легко читать. А корутины го это про эффективную многоядерность и с читаемостью там пиздец. То есть первый подход пытается улучшить синтаксис, второй масштабирование. И не понятно зачем автор эти две штуки противопоставляет друг другу. Они не противоречивы, а наоборот должны дополнять друг друга
>>2122406 Корутины котлина, async/await, промисы и фьючи - вносят непредсказуемость в этот код. Корутины и async/await делают это достаточно прозрачно и с точки зрения написания кода там почти нет траблов, кроме взаимодействия с синхронным кодом. Но даже они убивают нормальный стектрейс, убивают тредлокалы, контекст вызова.
Я пока не вижу ни одного концептуального преимущества Корутин котлина или async/await перед легковесными тредами лума. Про перформанс можно будет поговорить когда выйдет стабильная версия лума. Более того у лума еще убер фича, что весь IO станет не блокируемым, даже не надо ждать пока драйвер БД перепишут. Последовательный код - самый простой для понимания, выполнили этот оператор, вызвали эту функцию - просто читать.
Очень оригинальный вопрос от ньюфаггета(гуглить я, конечно же, не буду): есть ли смысл учить джаву, если есть котлин? Ведь, котлин, я так понимаю, двигает гугл. И таки продавит по итогу, не?
>>2122560 Джава для энтерпрайза, котлин для андроида. Если ты хочешь в мобилки, то тебе в другой тред и там джава наверное и не нужна. В энтерпрайзе котлина как не было так и нет. И думаю что и не будет.
>>2122616 В спринге есть и котлин, и груви - там все стильно, модно, молодежно. Но сам энтерпрайз часто написан на джаве 8 из за кучи всякого стороннего специфического говна, которое на 9+ не работает и приходится сидеть на 8 (и потихоньку отпиливать микросервисы). А если надо дописать пару фич - переписывать половину проекта на котлин тоже не имеет смысла. Для новых проектов Котлин очень ненадежен и лет через 10 переписывать все с легаси котлина на джаву может быть очень дорого.
Подскажите, пожалуйста: необходимо из кода запустить сервис на линуксе (service name start). Пока единственное что получилось - запустить командой Runtime.getRuntime().exec("bin/bash -c /path/to/file") Где на конце лежит баш скрипт с одной строчкой service name start Сам файлик прописал в sudoers, т.е. предоставляется доступ к юзеру для запуска файла.
Я подозреваю что такой способ максимально некорректный, но альтернатив пока не вижу, ввиду малого опыта.
>>2122664 >переписывать все с легаси котлина на джаву Так если котлин идет как надстройка над джавой, смысл то обратно переписывать? Наверное там можно как то использовать "нативные" методы самой джавы?
>>2122702 Котлин и джава вроде как обратно совместимы. Но пока нет доверия к котлу, особенно на тыртпрайзах. Пока что его максимум - небольшие микрухи мимо
>>2122702 Щас в котлине есть какая то фича и по своему реализована, а потом внезапно она появляется в джаве, но с другой реализацией - и у нас уже получается расхождение. Котлин превратится из надстройки просто в другой язык.
>>2122550 > Я пока не вижу ни одного концептуального преимущества Корутин котлина или async/await перед легковесными тредами лума. Может потому что они решают разные задачи?
>>2122778 >голанг А нахуй он нужен? Ну я вот хоть и советовал его раньше всем, но пописал на нем недельку и понял, что это натуральный Си без ООП, только со строгой типизацией, горутинами и рантаймом с GC. То есть язык и не для байтоебства, и не для энтерпрайза полного абстракциями. Вообще его создавали как средство для сисадминов и девопсов, но по факту это допиленный Limbo из 1995 года, в который гугл захотел влошиться. http://www.vitanuova.com/inferno/limbo.html
>>2122778 Ты пробовал го или питон подключить к проекту? Мне например в жаве BigDecimal больно арифметировать, потому что нет перегрузки операторов. А в сахаре есть. И он без ебли лежит с жавовским проектом
>>2123318 >Го мертворожденный как и Раст Чел, попустись, количество вакансий на го выросло в 10 раз за последние 2 года. А рынок жабы только сокращается.
Уважаемые, а какой тип данных использовать для алгебраических операций, например, с весом в кг? Сейчас на проекте используют float, но с ним, очевидно, траблы при сложениях вычитаниях
>>2123533 Возможность менять размер сторон, это не то, что определяет прямоугольник, тут идет подмена понятий. Повышая планку, если к прямоугольнику добавить еще один угол, то он и прямоугольником перестанет быть.
В ООП так важно правильно выбирать абстракции в соответствии с задачей. Прямоугольник и квадрат из классической геометрии, совсем не то же самое, что фигуры в форме квадрата и прямоугольника которые могут динамически менять свои размеры.
>>2123410 >Уважаемые, а какой тип данных использовать для алгебраических операций, например, с весом в кг? Сейчас на проекте используют float, но с ним, очевидно, траблы при сложениях вычитаниях А какие траблы то? Это же вес, не копейки. В конце при просто округлите результат. Или вам точности нехватает?
>>2123509 > Задача у них одна - повысить throughput на задачах где есть ожидание на IO и внешних сервисах. В очередной раз забивая на читаемость кода. Синтаксически некоторые конструкции в луме не лучше сейчашних фьючеров выглядят. А в каких местах он будет вызывается даже не узнать никак, потому что это никак не выделено. Это по твоему вносит предсказуемость?
>>2123699 > А в каких местах он будет вызывается даже не узнать никак, потому что это никак не выделено. Это по твоему вносит предсказуемость? Когда в io будет срабатывать прерывание неявно фикс
>>2123555 >В ООП так важно правильно выбирать абстракции в соответствии с задачей. Прямоугольник и квадрат из классической геометрии, совсем не то же самое, что фигуры в форме квадрата и прямоугольника которые могут динамически менять свои размеры. А кто говорил про классическую геометрию? Классическая геометрия абстрактная штука и с реальностью не связанная, а мы тут моделируем реальный мир, где иногда фигуры меняют размер. Да даже для иммутабельных объектов Rectangle.resizeTo(int, int) будет создавать проблему квадрату.
>>2123699 >В очередной раз забивая на читаемость кода. Синтаксически некоторые конструкции в луме не лучше сейчашних фьючеров выглядят. Нахера ты принес файберы и что-то тут доказываешь про читабельность? Лум это тред, всё. Ты можешь как раньше открыть HTTP соединение с клиентом и обычным способом его обрабатывать. Только сервер будет тянуть не 100 одновременных коннектов, а тысячи, десятки тысяч.
>А в каких местах он будет вызывается даже не узнать никак, потому что это никак не выделено. Это по твоему вносит предсказуемость? У тебя и сейчас нет никаких гарантий на предмет того, когда планировщик ОС остановит/запустит твой тред. И корутина тоже может быть остановлена в середине, потому что поток носитель был остановлен.
У кого-то это сисадмины на стероидах - иногда еще что-то подкоживают и могут в код системы посмотреть. У кого-то это такие разработчики, которые еще и оперейшенз занимаются.
>>2123749 Нет, это просто обёртка над ,хибернейтом и другими API, там же не только РСУБД поддерживаются. Сам спринг ничего не велосипедит, он юзает другие либы.
>>2123734 > Нахера ты принес файберы и что-то тут доказываешь про читабельность? Так нихуя нет инфы нормальной про этот лум. Кроме той где на всю страницу написано что это манна небесная. Ну по крайней мере в этом коде доказывает, что в очередной раз используются эти ужасные колбэки, от чего я надеялся будут отходить в пользу чего то вроде structured concurrency > Лум это тред, всё. Эм, вообще из того что я находил это больше похоже на некий "контекст с задачами", которые работают поверх пула реальных потоков. То есть как корутины в котлине и в го, только реализованы в жвм > У тебя и сейчас нет никаких гарантий на предмет того, когда планировщик ОС остановит/запустит твой тред. И корутина тоже может быть остановлена в середине, потому что поток носитель был остановлен. Я про другое, имею ввиду ни в синтаксисе ни в иде нигде не обозначено, что в конкретной строчке кода не стартанет поток. То есть ты думаешь что работаешь с блокирующим синхронным кодом и передашь методу свое говно, который его должен изменить. А внутри метода блокирующий вызов по сети, и лум прозрачно создаёт для вызова асинк? А что эвейт вернётся в тот же самый тред я не нашел гарантий. И твой объект станет неконсистентным
>>2123729 1) Есть прямоугольник, и характерные для него атрибуты и методы, как, например: площадь, периметр, проверка на вхождение точки в область и прочие.
2) Нам нужна мутабельность в том или ином виде (Rectangle::resizeTo), мы расширяем базовый Rectangle до MutableRectangle, добавляя новые методы. Это принцип на букву О: открытость для расширения, закрытость для изменения
3) Нам нужен квадрат. Тут нам поможет принцип Лисков. Мы можем пользоваться квадратом как прямоугольником(площадь, периметр и пр.), значит можно наследоваться. Предположим нам нужен MutableSquare подойдет ли нам MutableRectangle как базовый класс? По принципу Лисков нет. Нужно отдельно реализовывать MutableSquare основываясь просто на Square
Получится такое дерево классов (Предполагаем что такая сложность оправдана сложностью бизнес логики проекта): Rectangle <- MutableRectangle Rectangle <- Square <- MutableSquare
И тут прекрасно уже работает полиморфизм: И с MutableRectangle и MutableSuare можно работать как с обычным прямоугольником, когда дело касается характерных для прямоугольника вещей. Если же необходимы расширенные действия, придется уже работать с расширенным Mutable интерфейсом
>>2123803 В итоге получилась огромная портянка кода с кучей бойлерплейта, с возможными багами в equals или hashcode, что лучше было бы просто создать 2 разных класса и не ебать себе мозги наследованием и полиморфизмом
>>2123865 Если задача просто создать два объекта и поменять им размеры, то, возможно, да, лучше.
Если задача чуть сложнее, то, наверняка, код утонет в дублировании и самоповторе, со временем превратится в кашу, добавлять и менять фичи станет все трудней, и, дай б-г, проект будет зарабатывать быстрее, чем будет расти затраты на его сопровождение.
>>2123802 >Так нихуя нет инфы нормальной про этот лум. В последней версии жабы решили выкинуть всю хуйню с файберами и оставить апи тредов. Там будут какие-то микроизменения.
Чет почитал про кваркус и там магии вообще дохуя, даже main не нужно писать. Докерфайлы автоматические, компиляция в бинарник, dev ui. Единственный минус в требовании 11 джавы, я правильно понял?
>>2123925 >Аноны почему так работает Потому что у тебя у класса потомка есть конструктор без аргументов, в котором неявно вызывается конструктор без аргументов родительского класса.
>>2123926 >>2123932 Благодарю за объяснение То есть если конструктор наследника без аргументов, то вызовется конструктор родителя - Верно? И как мне вызвать только конструктор наследника?
>>2123941 > То есть если конструктор наследника без аргументов, то вызовется конструктор родителя - Верно? Нет, аргументы конструкторов наследника вообще никак не связаны с родителем. Сколько бы у тебя в нём аргументов ни было, если ты не вызовешь явно нужный конструктор базового класса, джава попытается вызвать конструктор без аргументов, > И как мне вызвать только конструктор наследника? Никак, это невозможно. Либо не наследуй, либо вынести из конструктора базового класса код, который не хочешь вызывать, в отдельный метод, и не вызывай его.
Лучше открой любую книгу по джаве, найди главу с названием типа "Наследование классов" и прочитай.
>Я про другое, имею ввиду ни в синтаксисе ни в иде нигде не обозначено, что в конкретной строчке кода не стартанет поток. >То есть ты думаешь что работаешь с блокирующим синхронным кодом и передашь методу свое говно, который его должен изменить. А внутри метода блокирующий вызов по сети, и лум прозрачно создаёт для вызова асинк? >А что эвейт вернётся в тот же самый тред я не нашел гарантий. И твой объект станет неконсистентным В лум тред стартует Thread.startVirtualThread() там вообще нет магии.
Лум это просто легковесные треды. Ты можешь взять старый добрый Томкат и синхронно ебашить запросы, только теперь Томкат тянет не 100 конектов, а 10к. Теперь ты можешь в синхронном коде обрабатывать лонг пол запросы.
>>2124252 Никаких волшебных легковесных потоков не существует, виртуальные потоки это те же корутины только стековые, поэтому не требуют контекста для запуска, магии никакой нет.
>>2124473 Я читаю в статье жавараш. Преимущества СпрингБут http-end-points, позволяющие вводить внутренние функции приложения, такие как показатели, состояние здоровья и другие. Я не могу понять что значит эта фраза? Преимущество перед не-спринг-бут(spring mvc) приложением, имеется в виду, наверное.?
Аноны, щас на собесе спросили нахуя в Java нужны такие выебоны с памятью? То есть, нахуя нужны разделения кучи на Young Generation, Old Generation, Permanent Generation? Почему бы просто не оставить простой Heap и туда все кидать?
Подумал, что возможно, доступ к Young Generation происходит как-то быстрее, поскольку только что созданные объекты нам нужны чаще чем те, которые в Old лежат какое-то время, но понял, что проебался.
>>2124483 >Permanent generation Привет из прошлого Сборка мусора в жаве базируется на том, что большинство объектов короткоживущие и перестают использоваться, едва успев создаться, если же объект пережил несколько сборок мусора, то вероятно он будет использоваться ещё очень долго и дрочить его лишний бессмысленно, например инстанс какой-нибудь фабрики. А вообще всё несколько сложнее https://habr.com/ru/post/269621/ https://habr.com/ru/post/269707/
>>2124529 400к - это уровень очень скиллового лида в финтехе, где зачастую нужно будет работать с древним легаси калом. 250к потолок для большинства джавистов.
>>2124483 >Аноны, щас на собесе спросили нахуя в Java нужны такие выебоны с памятью? То есть, нахуя нужны разделения кучи на Young Generation, Old Generation, Permanent Generation? Почему бы просто не оставить простой Heap и туда все кидать? На такое надо отвечать, что вы используете Open J9 с OptThruput GC и такой херни у вас нет.
>>2124342 Корутины это и абстракция поверх рантайма. Да от тебя компилятор прячет все тонкости реализации и ты просто бери и используй. А Легковесные треды это и есть рантайм. Я уже раз пять талдычил про неблокирующий IO, про тред локал, про нормальный стектрейс, все то что нельзя сделать на базе корутин.
>>2124984 Вообще спринг отходит уже в прошлое с появлением таких штук как кваркус или микроравт. Хотя в проде все ортодоксально юзают спринг, но будущее не за ним. Сам изучаю сча кваркус и в восторге от его возможностей, рекомендую. Кому интересно, на хабре есть статьи о нём, и есть ещё канал в телеге t.me/quarkusnews
>>2125007 Куда он тебе отходит нахуй. Я в ахуе просто с пориджей нахуй набьют щеки сортами говна и довольные сидят. В голанг пиздуй пока поезд не ушел. Возможности он изучает, рекомендует блять.
Хочу прикрепить капчу к своему высеру на спринге, но рекапча не очень подходит. Какую норм опенсорс либу для капчи можно взять, или самому велосипедить придется?
>>2125863 > где бы они были незаменимы Программируй в PowerPoint, он тоже тьюринг-полный. Незаменимых вещей нет, инструменты не важны, главное уметь писать алгоритмы, но нужна крепкая университетская база.
>>2125871 >тьюринг-полный Это когда в жопу ебут и называют Белоснежкой? >>2125870 >>2125871 Всего этого лямбда говна ведь буквально 10 лет назад не было и ничего. Наверное Оракекелы посмотрели что в ЖС есть замыкание и решили тако же говно запилить. Вон крестрвики сами не знают, зачем им лямбду завезли.
>>2125883 > Это когда в жопу ебут и называют Белоснежкой? Да. > Всего этого лямбда говна ведь буквально 10 лет назад не было и ничего А в СССР газетами подтирались, и ничего. > замыкания Про анонимные классы ты, наверное, не слышал. > Вон крестрвики сами не знают, зачем им лямбду завезли. Сразу видно, что кресты ты последний раз видел на лабах на первом курсе.
В проекте используется Keycloak. Как передавать авторизационные данные (токен) при написании тестов? Есть вариант в лоб авторизировать тестового пользователя, затем парсить json ответа на авторизацию, вынимать оттуда токен и подставлять в запросы, но мне кажется, что можно сделать проще. Сталкивался кто-нибудь?
>>2126765 В пизду, пока сюда пишешь - десять раз понимаешь, что обосрался при задумке. Как авторизироваться в тестах при кейклоке и потом дальше использовать аксес-токен?
Кто нибудь с java.util.logging.Logger работал? Есть сторонняя библиотека которая туда пишет, и проблема в том, что инфо сообщения в итоге логгируются с уровнем еррор. Что очень сильно засирает логи. Эсли что это все крутится в гугловом клауде.
>>2127682 >где ебаный бейсик на 6 месте Так и есть, в США и Европе на нем тонны legacy кода, который нужно поддерживать. Иначе бы Microsoft не выпускала новые версии VB.NET, как, например, они давно похоронили Visual FoxPro. Только в рашке вместо VB формошлепили на Delphi.
Ёбаным жабоиндусам, напоминаю разницу. Зоопарк вопросов: - где замыкания? - где свойства? - где шаблоны? Разработчики Sun вынуждены только облизываться. Даже генерики, введённые в 5-й версии Java — не более, чем syntactic sugar. Дотнетовские генерики это реально поддерживаемые платформой типы, которые расширяются на лету при загрузке, котрые оптимизируются JIT-компилятором. Для Java генерики существуют только в коде и ни JIT, ни загрузчик классов их никогда не видит. Поэтому проблемы боксинга, преобразования типов в runtime просто скрыты от программиста. - где делегаты/евенты? - где partial-классы? - где детерминированное освобождение ресурсов (ключевое слово using + интерфейс IDisposable)? - где оптимизация JVM для расширений процессоров? - где аналог linq и в частности удобные мапперы? - где расширения методов класса? - где скрытая имплементация интерфейсов? - где перегрузка параметров функций? - где нормальное потребление памяти приложением? - где быстрая работа приложения? - где нормальные иде, с полноценными дизайнерами? - где пользовательские value types? - где методы у инстансов value types? - где var и анонимные типы - где перегрузка операторов? - где оптимизиции хвостовых вызовов? (в свете фунционального хайпа это должно вызывать некоторый батхёрт) - Где чёткое разделение домены и сборки? Это не учитывая, целый ворох технологий недоступный понимаю жабоиндусов, такие всякие сильверлайты/вин-веб/формочки, впф, XNA, список можно продолжать бесконечно, как впрочем и список ущербности жабы... Всего, чего нет в жабе, автоматически объявляется хуитой, как только это появляется в жабе, это автоматически становится нехуитой. При этом, требуется сделать вид, что хуитой это называл кто-то другой.
К нам в айти отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные шарпобояре. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал:
- Ебать, это же Абстрактная фабрика! На чём ты кодил до этого?
- На Джаве.
- Жабапидор! - в один голос заорали все 20 человек.
- Жабапидор! Жабапидор! Жабапидор!
Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать жабопидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев:
- Жабапидор!
В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и жабопидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох жабопидор, даже дело заводить не стали.
>>2127751 На самом деле чем меньше синтаксических возможностей в языке, тем лучше для энтерпрайза. Во всех новых фишках так или иначе есть подводные камни, которые могут выстрелить в любой момент при неграмотном использовании.
>>2127751 >Это не учитывая, целый ворох технологий недоступный понимаю жабоиндусов, такие всякие сильверлайты/вин-веб/формочки, впф, XNA
Хоть и толстота, но проиграл. Экосистема шарпа не идет ни в какое сравнение с жабьей. Она где-то в том состоянии, в котором был жаба-мир в 2008-2010 годах. Понятно, что в самом шарпике куча всякого синтаксического сахара, может даже чуть более быстрая CLR. Но в остальном - это кал говна. Платформа непригодна для нормального использования в энтерпрайзе. А на самой CLR кроме шарпа, мертвого f# и вижуал бейсика, ничего нет, лол.
>>2127792 >В плюсах так и было Было, но плюсы изначально получились монструозными с неочевидными решениями. Потом на это все начали натягивать 11, 14, 17, 20 и 23 стандарты, после чего разобраться во всем этом стало очень тяжело.
>>2127741 Потому что перекатываться только ради синтаксического сахара никому нахуй не вперлось, для таких уже есть котлин. Еще и фреймворки переписывать придется. Когда шарп будет гарантировать скорость сишечки, тогда и можно подумать.
>>2127741 Потому что для сахарных фич есть котлин, который можно легко вхуярить в проект без изменения версии самой жабы. Мантры шарпочмонь смешны, никто ничего переписывать не будет, микрософт давно проебал тырпрайз рынок и никакие потуги не помогут
>>2128070 в энтепрайзе никто не будет подразумевать ЧТО ТЫ ЛЮБИШЬ ДО УСРАЧКИ СВОЮ РАБОТУ, и зп в гейдеве самая маленькая в ИТ хоть синьор хоть мидл, я думал это ни для кого не секрет
>>2128070 Знать полностью все не обязательно, но спринг, хибер, кафку и эластик + sql крайне желательно. Зоокипер встречается не часто, как и кассандра.
>>2128076 >>2128002 LWJGL или libgdx. Движков уровня юнити или ue очевидно нет, так как на жабе игры почти никогда и не писали, я вот только майнкрафт могу вспомнить.
>>2128002 >>Вы даже игрушку написать не можете. На юнити дохуя игр - почти все одноразовое говно. На джаве написана одна игра, которая потеснила некоторые АААтайтлы. Радовался бы, что никому этот ваш обоссаный геймдев не нужен.
>>2128185 >На джаве написана одна игра, которая потеснила некоторые АААтайтлы. Говно для тупой школоты с максимум уебищной графикой. Так-то можно и рогалики на жабе писать, формально они тоже будут считаться играми. В общем, в геймдеве жаба сосет, так и запишем.
>>2128213 Че ты записываешь то? В этом треде ничего кроме спринга не обсуждают. Вот и сравнивай шарповский стек со спринговым. Если большой энтузиаст, можешь сравнить стек котлин/джавы на андроиде с майкрософтовским аналогом.
>>2127697 >Так и есть, в США и Европе на нем тонны legacy кода, который нужно поддерживать. >Иначе бы Microsoft не выпускала новые версии VB.NET, как, например, они давно похоронили Visual FoxPro. Причем легаси столько что бейсик популярней жопаскрипта. Ну и ассемблер на девятом месте, да еще и активно растет.
>>2129426 Чел говно это нерасширяемое говно из стандартной либы. Его вообще нужно вырезать, после апплетов, все равно этим ни один человек не пользуется. А логбэк это первая зависимость в проекте де-факто.
Привет мир. По работе тупому эникею (мне) выдали документооборот. Чтобы им нормально владеть нужны sql и groovy. Каковы шансы тупого эникея в качестве первого языка освоить groovy? Что почитать? С чего начать?
>>2129762 Освоить изи, он как питон, только от жава мира. По груви полторы книги, выбирай ту где про экшен рассказывают. Вообще норм язык как замена пистону для рантайм скритинга, жаль не взлетел. Потому что пиарить некому, никакая корпорация за ним не стоит, как за го, растом или котлином
Например, есть сущность User, и есть сущность Post. Сохраняя или получая Post, я хочу иметь информацию об его авторе, т.е. User'е.
Hibernate предполагает, что в entity Post у меня должна быть @ManyToOne связь с постом. Но, блять, зачем?
Почему нельзя, как в каком-нибудь JOOQ, сделать это руками: в Post'е сохранять не private User user, а просто private Long uderId, чтобы потом в репозитории руками написать query с left join и получить, что хочу, имея полный контроль и избежав еботни с fetchType.LAZY, EAGER и прочей хуйней?
>>2129924 > private Long uderId Можно, почему нет. Но сторонники говнохибернейта и прочих ORM говорят, что это недостаточно ООП-шно, дескать, так будет реляционная модель, а не объектная.
>>2129924 Ставишь везде lazy, дальше вот буквально как ты и хочешь пишешь, когда тебе оно нужно, руками query с left join fetch (ну или энтитиграф включаешь) и имеешь свой контроль
Начинающая джава-обезьяна на связи. Вот я сделал какую-то бизнес-логику, упакованную в класс, положим. У нее есть какие-то там поля, методы доступа к ним, сами методы БЛ. А теперь мне нужно напилить ко всему этому UI на каком-нибудь свинге. Вопрос такой: Это вообще нормально, что я вынужден в класс основной формы (XXX extends JFrame) пихать класс(ы), реализующий бизнес-логику, в качестве члена? И дергать из обработчиков событий его методы? Выглядит это как-то дебильно. Как такие вещи делать правильно?
>>2131350 >Вопрос такой: Это вообще нормально, что я вынужден в класс основной формы (XXX extends JFrame) пихать класс(ы), реализующий бизнес-логику, в качестве члена? Да нормально. Ты ведь не сам класс кладешь, а ссылку на него. Обычно один и тот же сервис передают во все классы, где он нужен. И обычно это делают через DI.
Подсоны, такой вопрос: А нормально ли желание конфигурацию спрингового приложения разделить на два конфига - один в resources со всякими banner-mode=off и именами драйверов для БД, а второй в виде yaml, выставить уже за пределы jar, оставив в нем самое нужное, креденшелы, адреса апи и все такое?
>>2131962 >>2131997 Не совсем, я не фронтендер, но насколько я понял что делает redux, это фреймворк для организации веб приложения. Он определяет структуру приложения, как оно обрабатывает запросы, передачу вызовов между ними и прочее.
DI концептуально проще: просто описываешь что у тебя есть бин такой-то и ему для работы нужны такие-то бины. А дальше DI строит создает бины и инжектит в них зависимости. И всё, больше DI ничего не делает. Он никак не определяет как компоненты между собой взаимодействуют и какие они будут.
Есть Спринг, он начинался как DI, но сейчас гораздо больше чем просто DI. Вот какой нибудь Spring MVC уже концептуально близок к redux.
>>2132024 А почему именно mvc? мне кажется с di+aop(spring core короче) уже можно сравнить менеджеры состояний.
Другой глупый вопрос. Несинглтоновские скоупы нужны только для стейтфул приложух? Посмотрел пяток приложух из туториалов и нигде не видел бинов с явным скоупом не по умолчанию. Сейчас просто перечитываю теорию спринга и пишут, что как минимум прототайп используетя.
>>2132046 >А почему именно mvc? Потому что MVC говорит тебе какие у тебя будут слои Model-View-Controller, как они между собой взаимодействуют. А DI+AOP ничего такого не говорит, херач как хочешь, мы например Спрингом поднимали Акка приложение, там вообще никаких контроллеров, сервисов и репозиториев не было.
>Несинглтоновские скоупы нужны только для стейтфул приложух? Не приложений а бинов. У тебя приложение может быть стейтлес, но содержать стейтфул бины.
> Сейчас просто перечитываю теорию спринга и пишут, что как минимум прототайп используетя. Как правило все упирается в потокобезопасность, но бывают и другие нюансы, например реквест скоуп - можно создавать бин для сбора метрик реквеста, а по завершению сбрасывать в лог/базу. Или кастомные скоупы Спринг Батч.
АНоны, можете пояснить дурачку, почему пик 1 код работает, а пик 2 нет? Методом тыка допер, что stopword нужно объявлять до начала цикла, а почему нельзя в самом цикле?
Привет. Читаю "Джава. Эффективное программирование" Блоха (3 изд., 2019 г.). Речь идет об обобщенных методах и приводится такой пример синтаксиса обобщенного метода: public static <Е> Set<E> union(Set<E> s1, Set<E> s2) { Set<E> result = new HashSet<>(s1); result.addAll(s2); return result; } Далее пишется, что тут все компилируется. Но у меня не компилируется уже в месте Set<E>: 'this' cannot be referenced from a static context. Это ошибка или я чего-то не понимаю?
Друзья привет хай, подскажите какие шансы у пхпшника пойти на собеседование по джаве, сделать тестовое и выйти на работу хотя бы за 30к в провинции? Перед собесом конечно чисто синтаксис чекнуть. Очень хочется уйти из пыхи, но бросать работу, пока не узнаю что возьмут на новую не оч хочется.
>>2134190 С айтишной вышкой проблема конечно я радиотехник, а что на счет тестирования? Тестировщики же на джаве в основе своей пишут селениум или что-то вроде этого ?
Алгоритмы/Структуры данных, и спринг mvc впринципе за неделю думаю расковыряю.
>>2134197 > я радиотехник Тоже можно попробовать, в некоторые места с любой тех. вышкой берут. Хоть технарь, не экономист какой-нибудь. >, а что на счет тестирования? Тестировщики же на джаве в основе своей пишут селениум или что-то вроде этого ? Там требования пониже, да.
Сап. Если я, например, реализую листенер мыши (в AWT), обязательно ли реализовывать, хотя бы пустыми, абсолютно все события, если мне нужен только клик? Это конечно не то чтоб большая проблема, но все эти мусорные пустые методы бесят
@Override public void mousePressed(MouseEvent e) {
}
@Override public void mouseReleased(MouseEvent e) {
}
@Override public void mouseEntered(MouseEvent e) {
>>2134988 Поэтому в нормальных фреймворках эти методы в интерфейсе заданы как default с пустой реализацией. В более старых фреймворках через абстрактный класс. А AWT это вообще пиздец говно мамонта.
>>2134994 >говно мамонта Зато по дефолту есть и все +- просто, и ответ ищется за 3 минуты на любой самый дебильный вопрос. Тратить время на серьезное освоение какого-то UI на жаве, какой бы свежести оно не было... че-то такое себе. >>2135005 ну я имел ввиду может как-то принципиально это можно решить. ну я и впрямь ультраньюфаг
почему не работает replaceAll("\\\\", "\\"));? Во втором аргументе экранирование как-то криво срабатывает, получается эксепшен java.lang.IllegalArgumentException: character to be escaped is missing
>>2135772 Градл - это ант и есть, только хмл заменён на (((груви))). Вместо однородного декларативного описания структуры проекта мешанина скриптов сборки, в которых поди ещё разберись.
>>2135772 Не нужен там Ант, там был дан ответ как это сделать на груви. Но в этом-то и есть проблема грейдла. Что ты можешь заебошить любую дичь на груви, прям по месту.
В маленьких проектах это даже хорошо, можно гибко реализовывать хотелки. Но когда у тебя проект большой, над которым работает команда из десятков разработчиков, у тебя такой пиздец начнется в скриптах сборки. Каждый ебошит как он хочет. Кто-то плагином, кто-то просто грувёй. Я видел проект, где из-за лени, клиентская библиотека и серверная реализация были в одном модуле. А дальше все фильтровалось по пекаджам и шло в тот или иной джар.
В этом плане Мавен лучше, тем что там просто нельзя захерачить file("ABC").renameTo(file("XYZ")) и все. Нужно что-то сделать - юзаешь/пишешь плагин и встраиваешь в стандартный билд лайфсайкл. Не встраивается? Модуляризируешь - тут у нас АПИ, тут у нас Коммон ебанина конечно, но без нее никак, тут клиент, тут сервер. Муторно, нудно, но полезно в перспективе.
>>2135795 Это надо быть в команде Спринга, чтобы знать реальную причину. И ты не Спринг мейнтейнер, ты не знаешь насколько сложно саппортить билд, сейчас и через 10 лет.
>>2135772 Искал жопой и наткнулся на ответ какого то дауна. Макакеры невер ченжес >>2135795 Потому что меньше болерплейта для всех 100500 вариантов использования зависимостей по такому же количеству причин >>2135796 >>2135787 Что ты в программировании делаешь, тебе на хмл верстать нужно сайтики
>>2136212 Не сразу разглядел такого крупного эксель специалиста >>2136230 Грэдл использует груви - полноценный язык со своей стандартной либой и интеропом с жабой. Можешь писать на что хватит фантазии юзая его библиотеки, не обязательно на 100% привязываться к грэдл апи. Это же не мавен говно где все заранее предефайнено и прибито гвоздями к плагинами
>>2136298 >Грэдл использует груви - полноценный язык со своей стандартной либой и интеропом с жабой. Можешь писать на что хватит фантазии юзая его библиотеки, не обязательно на 100% привязываться к грэдл апи. Это же не мавен говно где все заранее предефайнено и прибито гвоздями к плагинами Ага, ну то есть только через ант можно такое сделать. Либо нахуячить императивный груви код прямо в декларативном грейдл скрипте.
>>2136482 Да вряд ли поможет. У меня приложение на котлине, которое по jdbc подключается к базе и что-то выбирает. Самое большое время как раз занимает инициализация jdbc драйвера.
Error: LinkageError occurred while loading main class net.minecraft.server.Main java.lang.UnsupportedClassVersionError: net/minecraft/server/Main has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 55.0
Как мне нормально запустить сервер minecraft на linux?
>>2136939 Мгновенно. Вообще нихуя не понятно почему у тебя именно инициализация драйвера занимает самое долгое время. Может это все таки чтение килотон говна из базы? Что за бд то хоть? Оптимизируй индексы. Нормализация не всегда хорошо. Можно хранить кэш твоих данных на диске и читать его, вместо бд. Нихуя не известно о твоей проблеме короче
>>2136951 Ну я смотрю по логам. Строчка перед запросом, строчка после запроса - между ними разница три секунды. Между ними всякое говно от инициализации драйвера логируется. Там нетти и еще чето. В итоге простейший запрос выполняется 3 секунды с копейками. Через встроенный UI той базы - 300 мс. Хотелось бы поближе к этому результату подобраться. Еще у меня кстати приложение на котлине. Может его в котлин нейтив попробовать загнать? Какие там ограничения?
>>2136960 Ну тут явно инициализация каких то фреимворков. Сам коннект от ждбц без всякого говняка получить меньше миллисекунды занимает. Может orm у тебя стоит, с автогенерацией, миграцией, хз короче
>>2136976 Нет, там ничего такого нет. Голый драйвер и Apache DBUtils. Все время занимает инициализация драйвера, который использует netty. Может как-то к готовой jvm можно подрубаться? И сервер и клиент запускаются на одной машине.
>>2136989 Спасибо анон, не думал, что всего одной опцией получится что-то оптимизировать. Сразу -1 секунда. Но по сравнению с нативной консолью все равно много.
Аноны, такая вот хуйня, при попытке удалить несколько файлов подряд в одной и той же директории при помощи метода Files.deleteifexists удаляется только первый файл, а затем выбрасывается DirectoryNotEmptyException. Где я могу проебываться?
>>2137161 Ну это понятно, дело в том, что в параметр path, передаваемый этому методу, я складываю только атрибуты файлов. Или я неверно понимаю, как работает этот метод, и кроме файла, он также удаляет и директорию, где файл находится?
>>2136486 1. Попробуй граль. BellSoft дает готовый набор для сборки https://libericajdk.ru/pages/liberica-native-image-kit/ 2. Добавь логгирование всех этапов и посмотри, что жрет время. 3. Если жрет коннект к базе, поставь перед базой REST сервак. Заодно и кешей можно добавить.
Есть кто знает нормально Swing, как можно инициировать отрисовку вот этой рамки на ячейке, как на пикрил в центре? В таблице по-умолчанию она и так есть, но рисуется только по клику LMB. Я отлавливаю клик RMB, выделяю строку, но как еще и орендерить вот эту рамку на ячейке хз
>>2137278 >Попробуй граль. У меня котлин. Проще будет переписать все на котлин нейтив или вообще на го (там тоже есть нужный jdbc драйвер) >Добавь логгирование Добавил, жрет старт жвм и инициализация нетти. >Если жрет коннект к базе, поставь перед базой REST сервак. Ну кстати, там на другой стороне тоже нетти. Можно по RPC подсосаться.
>>2137864 >У меня котлин. Проще будет переписать все на котлин нейтив или вообще на го (там тоже есть нужный jdbc драйвер) Да пофик, версия Стандарт поддерживает любые JVM языки.
>Добавил, жрет старт жвм и инициализация нетти. >Ну кстати, там на другой стороне тоже нетти. Можно по RPC подсосаться. Ты что-то недоговариваешь, то у тебя конект к базе тормозит, то у тебя оказывается цельный нетти сервер есть, да еще и на другой стороне тоже нетти. Ты или нормально распиши архитектуру, ну или сам давай.
>>2137590 Нет, это выделяет всю строку просто голубым цветом (если брать ситуацию на картинке). Рамка это какой-то отдельный элемент. Собственно, со вчера немного подразобрался - чтобы поместить фокус на ячейку (назову это фокусом, хз как это правильно зовется в модели свинга) нужно хуйнуть table.changeSelection(row, column, false, false); Это работает, за исключением одной мелочи - нужно чтобы фокус уже был хотя бы однажды назначен обычным LMB кликом на таблице. Если это первое взаимодействие с ней через changeSelection, то рамка так и не появится, сколько ты этот метод не дрочи. Собственно, теперь задача понять как ее изначально засетить, а не сменить.
>>2138520 Это сработало. Ты гений. Я там наугад уже по-моему передергал все методы с вхождениями вроде focus, selection, cursor etc, у всех классов, но мимо этого как-то прошел. Олсо, grabFocus дает тот же эффект спасибо.
Идея вроде вообще на awt основана, иногда в интерфейсе попадаются слайдеры с их дефольными стилями тех времен. Но сейчас столько изменений поверх него сделали, что могли бы полноценной фреимворк для гуйни выпустить.
>>2139174 Там лучше начинать не с документации, она скорее для тех, кто уже хоть что-то понимает. Разберись с dependency injection/IoC (читай все туториалы подряд, пока не поймёшь), дальше тыкай MVC и Boot, и станет понятно.
>>2139180 >Разберись с dependency injection/IoC (читай все туториалы подряд, пока не поймёшь это я уже пробовал, разобрался. > дальше тыкай MVC и Boot, и станет понятно. Тыкал, понятно стало.
Как вывести это все на уровень годности к собеседованию?
>>2116244 (OP) Как сильно с джуна спрашивают теорию про всякие функциональные интерфейсы и круды? Или можно пытаться с минимальными практическими навыками сборки простых приложений на спринге вкатываться? Или какие ресурсы/книги посоветуете для теоретической подготовки к собеседованиям?
>>2139186 > А можно списочек внутриспринговых технологий для собеса?? Типа, вот к примеру, spring mock mcv надо упарывать? Или к примеру, можно ли написать все на чистом коре (с настройкой сервлет инитиализера и сесурити инитиализера) или лучше делать это все на спринг буте?
>>2139188 > Или можно пытаться с минимальными практическими навыками сборки простых приложений на спринге вкатываться? Да. > Или какие ресурсы/книги посоветуете для теоретической подготовки к собеседованиям? Гугли "java вопросы на собеседование", реально это и спрашивают. Учишь все методы класса Object, разницу между checked и unchecked exceptions, тонкости equals() и hashCode() и можешь смело собеситься.
>>2139191 Кишки спринга не спрашивают, максимум спросят про сервлеты и ApplicationContext. Остальное в рамках тестового, если его дадут, обычно достаточно бута.
>>2139253 Я думаю, он говорил, что перепишут свои IDE с Java и её виртуальной машины на какой-нибудь C++ с вызовом функций ОС. Но я не думаю, что хуже существующего по производительности возможно. У меня иногда даже набор текста лагает, когда идея проверяет индексы.
>>2139255 На моей некропрошке ретина конца 13 года, идея работает лучше, чем нативный икскод. Я вообще был удивлен, когда узнал, что она на жаве написана. Это первое хорошее десктоп-приложение, которые я увидел в своей жизни. Переписывать натив под, как минимум, 3 платформы они заебутся, я думаю.
>>2139253 Они пилят новый GUI фреймворк на базе Skia, что-то наподобие SWING. Посмотрим что получится, перестанет ли new IDEA() тормозить. ib4: IDEA тормозит не из-за GUI, даже на P3 IDEA нормально рендерилась
>>2139286 А из-за чего? Вот я ультимейт идею поставил в январе. Не понимал чего в треде воняют. Все норм было. На свежую Винду. Поставил с того времени два доп плагина, переустановил идею вручную, понасоздавал и понаклонировал с гита 50 градл и мавен проектов с хеловордами. И что-то заметил тормоза. Особенно задержки отклика от клавиатуры. Может она и до этого тормозила, но не так сильно. Начну с удаления плагинов неиспользуемых.
>>2139286 Это который compose для котлина? Я его ставил в мае, там даже пример галереи из 4 картинок лагает. Да и этот материал дизинг для десктопа просто моветон в 2022 году.
>>2139313 >А из-за чего? Они пилят новую клиент-серверную IDE, это был основной мотив для написание новой IDE. Ну и раз пилят с нуля, заодно решили отказаться от SWING.
>>2140067 Потому что шарп стал неплохим языком только в последние годы, поэтому у джавы намного больше уже написанного кода. А для новых проектов все равно выбирают голанг.
>>2119954 >Птица обладает способностью летать, а пингвины и страусы не летают. >У прямоугольника можно независимо задать ширину и высоту, а у квадрата нельзя. Ты только что паттерн СТРАТЕГИЯ открыл.
>ООП это дичь, непригодная для моделирования реального мира. Хорошо, хорошо, но свой не зачёт по ООП пересдавать всё равно прийдётся.
>>2140150 >>все равно выбирают голанг. Голанг выбирают для микрофреймворков, где нужен только перформанс и которые, если что, потом просто выкинут и напишут заново. А если нужно писать что то поддерживаемое - берут джаву/шарп.
Листаю вакансии по джаве. 200к, 250к, 300к и выше. Ниже 100к ещё надо постараться найти чё-то. Даже если выбирать именно джуновские, там все равно в районе тех же 100к вилка. Это пиздёж, чтобы набрать классы соискателей и уже на собесе выкатить им ставку в 17к?
>>2141479 Синглтон - это антипаттерн, долбоёб. Иди на фортране синглтоны ебашь, потом охуеешь это говно разгребать. Пиздец, до чего страну скиллбрейнсы довели...
Двач сап. Это пиздец. Учу Java / Hibernate / Spring / паттерны 9 месяц, запилил уже около 10 крупных и не очень петпроджектов......... но есть судимость. Очень боюсь, что проебал все время обучения врустую, так как выбрал enterprise стек и теперь при трудоустройстве рискую быть послан нахуй. Есть ли у кого нибудь кулстори по устройству на этот стек технологий из личного опыта или из ближайшего окружения?
А как хранят данные во всяких соц. сетях, все эти комментарии и прочее? В реляционных базах? Или что-то другое?
В реляционных всегда такие примеры дают, что представляешь что это какой-то интернет магазин, где всякие персональные данные для логина, адрес доставки там и тп
>>2141790 В фейсбуках-твиттерах обычно несколько баз (реляционная, графовая, key-value и другие), чтобы хранить в наиболее оптимальном хранилище. В не настолько масштабных проектах обычно хватает реляционных для всего.
>>2141765 Если не соваться в банки и крупные конторы, то пробивать тебя на судимость никто не будет. Иди в мелкие конторки где СБ нет вообще. Фарту масти.
Может есть варик в конторы, где необходимо предоставить справку о несудимости, ибо если требуют справку - то сами не могут пробить, ибо если могут - нахуй справка? цена вопроса - 10к руб
>>2141828 Всяких "Рога и Копыта" которые пишут сайтики что-то более сложное чем визитка на жабке хватает. Ну да тут надо быть фулстеком, а не чисто бекендером.
Худо бедно начал вкатываться в джаву лет 5 назад, дропал на месяцы, потом возрождал. Потом на работе стали появляться микрозадачи автоматизации (сраный инженегр просто), что позволило чаще ее использовать. В итоге сейчас я вроде как знаю core (само собой синтаксис, включая всякие лямбды, интерфейсы, дженерики и вообще всю эту хуиту, стандартную библиотеку вроде коллекций, И/О, Stream API использовал частенько), немного Свинга/AWT (на уровне напилить оконное говно для тёти маши, чтоб она могла в нем расчитать какую-нибудь зарплату алкашу-петровичу, с менюшками, вкладками, сериализацией настроек и всей этой хуйней), связь с базами данных через JDBC там же (на уровне отправить запрос, получить рекордсет, пробежаться по нему, если надо какие-нибудь кодировки исправить). Вопрос, собственно, такой, могу я съебать нахуй из заводорабов хотя бы на джуна?
>>2141902 Что, даже ждунов без спринга не берут? Сколько надо по ощущениям усилий чтоб вкотитьсяя в спринг, в процентах от самого core джавы (если считать его частью самые нужные части стандартной библиотеки)
>>2141925 В принципе, я его немного трогал когда-то. Олсо, в одном из своих проектов рабочих делал некоторые самодельные похожие вещи, с помощью рефлекшен API, было интересно. Окей, возьмусь. Просто до меня через руки гораздо лучше доходит, а никакого окружения в котором был бы спринг нет.
>>2141910 >>даже ждунов без спринга не берут? И что ты будешь на проекте делать где все на спринге? Начинай сразу со спрингбута - быстро разберешься. >>Сколько надо по ощущениям усилий чтоб вкотитьсяя в спринг 146%. хз как тебе ответить - там за месяц можно научиться круды писать запомнив десяток аннотаций, а можно годами кишочки изучать. Сможешь написать круд, прикрутить аутентификацию, базу данных, рест апи - считай знаешь достаточно для вката, что дальше изучить тебе уже на собесе пояснят. Правда если ты будешь такими темпами все учить - там от джуна уже начнут кубернетесы с редисом в совершенстве требовать и ты пойдешь на новый круг.
Эх, как же хорошо вернуться к Джаве. К нормальным топикам с бекенда. На лето уходил в запой в Андроид, но от бесконечной ебли ради отображения какого-то сраного списка начало пригорать, гугол такое там навертел, что не позавидуешь.
Чего собсна зашёл - хотел спросить по докеру, как вообще это накатить и как это работает. Правильно ли я понимаю, что есть некая удалённая машина, на которую можно навернуть Ось, Jvm и всё дерьмо, которое потребуется для развертки серва?
И вопрос где задёшево арендовать такую машинку для практики. На PaaS что-то деплоил, но все эти паас, саас - это всё не то. Мне хочется понять как на нулевую машину это поставить и запустить. Если где-то проебался поправьте.
>>2142186 Докер - это просто виртуалка (с некоторыми особенностями), как виртуалбокс, можешь запускать локально на винде, интернет для этого не нужен. На виртуалку ты специальными скриптами ставишь серверный софт, запускаешь и можешь уже подключаться и работать. Либо тащишь готовый образ с докер хаба. Нужно это всё, чтобы упростить развёртывание сервисов, раньше надо было на сервере ставить и настраивать СУБД, очереди, сервер приложений, деплоить туда сами приложения и запускать, а сейчас достаточно подготовить один раз докер-образы, на нулевой сервер установить только докер, подтянуть эти образы, и всё.
>>2142344 Некоторыми считается, что вообще все переменные надо по дефолту делать final, типа будет меньше ошибок. И только если надо менять значения после присваивания, final удаляют.
>>2142344 >И что ты будешь на проекте делать где все на спринге? А что, программировать какую-то логику, рефакторить какой-то мусор, постепенно вкатившись в сам спринг - это вообще не надо уже?
>>2142189 >устроится работать в сам ОРАКЛ В США ОРАКЛ как контора говно, уже несколько лет как сдувается вместе с IBM. Хочешь в США, готовься в к фаангам или ищи релокейт (тот же епам перевозит сеньоров и тимлидов на зп 100к до налогов в калифорнию, лол).
>>2141821 В мелких конторах жабы нет и не было, да и новых проектов на жабе в крупных конторах тоже уже почти нет. С судимостью лучше в пыху или js вкатываться, где рынок большой и какому-нибудь кабану будет вообще похуй на прошлое сотрудника, лишь бы код писал. В энтерпрайзе сейчас даже проверки на полиграфе делают во всяких банках, думаю, с судимостью туда лучше не лезть.
>>2141475 Да, обычно реальная зп на 20-30% ниже чем указано в вакансии. А если в вакансии пишут потолок по зп, то готовься к тому, что из указанных 250к тебе предложат 120-150.
>>2142434 >В мелких конторах жабы нет и не было, да и новых проектов на жабе в крупных конторах тоже уже почти нет. Иди нахуй Говнопетух, твой тред в другом месте.
>>2141475 >джуновские, там все равно в районе тех же 100к вилка Это только в ДС в некоторых жирных конторах, типа крупных банков/телекома. В миллиониках стандартная зп джуна 30-45. Почти всё - спринговый стек.
>>2143963 Все не надо, реально и половины юзать не будешь. Обычно да, хватает идеи, надо уметь делать мышкой фетч/пулл/пуш, коммитить, создавать ветки и перключаться между ними. Смысл всяких ребейзов всё равно не поймёшь, не поработав на проекте, где больше одного разраба.
>>2143875 Нет, это долбоебизм. Из тебя уже потенциально хуёвый программист. Потому что программист - это по сути решатель проблем с использованием доступных средств. Если всей силы интернета тебе хватило только на то, чтоб выбрать язык по прикольности названия, и высраться на двач, то прогноз так себе. Покормил?
>>2144003 >JEP 403: Strongly Encapsulate JDK Internals >It will no longer be possible to relax the strong encapsulation of internal elements via a single command-line option, as was possible in JDK 9 through JDK 16. Ммм... cglib использует как раз такие операции. Как же все обосрутся с переходом на 17 в первую очередь Спринг. Тем более что cglib последний раз релизили в 2019 https://github.com/cglib/cglib/releases
>>2143963 Первые три главы книги "Pro Git" прочитай. Работа в консоли сильно упрощает понимание того, что вообще гит делает. Это не так сложно, в книжечке все разжевано, будешь потом без труда пушить без гуя.
короче идея сделать учебную приложу с 2 табличками, простыми крудами и 1 транзакцией. И сделать ее в многих реализациях доступа к базе. Начиная от голого jdbc(написал), потом jdbcTemplate(пишу), а в конце data-jpa querydsl. Думаю нужно больше реализаций в середине. Но какие точно нужно брать? Голый хибер? HQL? Что там еще есть? Пока понял, что Criteria API точно не нужна.
Как так может быть, что в Идее все запускается, а после сборки проекта jar не запускается (пикрил)? Если из сборки выкинуть jdbc драйвер ms sql то все нормально (но само собой не работают функции mssql - ошибка no suitable driver)
>>2144506 Ну при запуске в идее classpath содержит в себе адреса всех библиотек подключенных, и запущенная через Run приложуха работает отлично. Но после сборки артифакта все равно ничего не работает, хотя собираю я "from modules with dependencies". Скорее всего я конечно что-то плохо понимаю.
>>2144532 Мы, походу, не очень понимаем, что ты делаешь. А ты не очень понимаешь, что мы от тебя хотим. Давай попробуем преодолеть это недопонимание.
На всякий случай, jar-файл технически представляет собой самый обычный zip-архив, просто у него спецификацией задана внутренняя структура и обязательно наличие некоторых элементов (типа файла манифеста). Но ты можешь открыть его архиватором и явно проверить, есть ли там классы, которые тебе нужны.
>>2144548 Да, это я уже делал пару тысяч раз наверное. Все там лежит по местам, как задано в самой структуре библиотеки. Еще я когда гуглил, нашел что-то вроде того, что возможны проблемы из-за того что там есть некоторые мавеновские вещи в META-INF, там оно действительно есть, но что с этим делать я не понимаю
>>2144548 Еще есть такая особенность, что проект одновременно использует firebird и mssql, файрбердовская часть работала, пока я в попытках все исправить не снес джаву, и не переустановил. После этого джарники вообще перестали запускаться, пока я не переделал языковой уровень на джаву-8. Теперь снова все стало работать, но окно запускается каким-то уменьшенным, и не работает уже и коннект к файрберду (так же нет драйвера будто)
>>2144532 Я так понимаю "все работало" подразумевает что ты щелкал в проводнике на файл и он запускался, да?
Если так, то 1. Выполни на дефолтной JDK: System.out.println("java.library.path: " + System.getProperty("java.library.path")); 2. Ты получишь список каталогов где JDK ищет dll, там наверняка будут системные виндоуз, вот и закинь в один их этих каталогов dll с драйвером.
>>2144680 >>2144680 Было так (постараюсь покороче) Проект подразумевал использование Firebird. Я скачал jaybird, подключил его, все работало, в том числе после сборки. Потом понадобилось подключить еще одну базу, которая на mssql. Все запрограммировал, в IDE все работало, но после сборки артефакта и его запуска, джава кидала исключение при попытке активировать функционал mssql "не найден подходящий драйвер". После переустановки джавы вообще все отказалось запускаться в любом виде. Тогда я убрал некоторый синтаксис 14 версии, и опустил до 8-й. Но по прежнему джарник даже не запускался. Опытным путем выяснил, что если выбрасывать из файлов, которые идут в сборку, библиотеку mssql, то оно хотя бы запускается, но функционал firebird не работает с той же ошибкой, с которой раньше падал mssql. В итоге у меня сейчас только свинг-шкура, но ничего не работает. Щас сделаю реквест
>>2144825 То что ты сейчас описал, не соответствует тому, что показано на скриншоте >>2144362 хотя оно сразу было так, я просто не обратил на это внимание
Фраза "no suitable driver" говорит о том, что в DriverManager не зарегистрирован драйвер подходящий для указанной базы. Варианта 2: 1. jar с драйвером отсутствует в classpath запуска. 2. jar с драйвером старый и в нем нет service дескриптора и надо руками его регистрировать. В main() напиши Class.forName("org.firebirdsql.jdbc.FBDriver"); - для Firebird Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); - для SQL Server Если получишь ClassNotFoundException - значит jar с драйвером отсутствует в classpath. Если UnsatisfiedLinkError значит не найдена dll
>>2144891 Тут такая странная хрень: В IDE (где и так все всегда нормально) этот кусок с регистрацией драйверов нормально работает. Но работает и без него, почему-то. Может потому что я уже их раньше регистрировал, я не понимаю На собранном джарнике происходит такое: 1)Если регистрацию оставить, и собирать без mssql, то при запуске джарника ничего не происходит, на микросекунду курсор меняется на курсор-часы, и потом ничего 2) если закомментировать регистрацию и пересобрать, то все запустится, но будет no suitable driver. В первом случае это, как я понимаю, не эксепшен, потому что на ловлю эксепшена там поставлен JOptionPane.showMessage, и он не вылазит. Если я в этот блок помещаю поиск реально выдуманного класса, то эксепшен срабатывает. файл FBDriver реально есть по имени со всеми пакетами, по которому я его пытаюсь извлечь.
>>2144891 И да, то что на скриншоте получается, если в сборке остаются библиотеки mssql. С ними вообще не стартует, хотя я качал их несколько разных "поколений" с оф сайта (9.2, 7.0,.. etc)
>>2144891 Я кретин. Если запускать из командной строки то эксепшен видно: для jaybird все понятно: Exception in thread "main" java.lang.UnsupportedClassVersionError: org/firebirdsql/jdbc/FBDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
для mssql: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at Test.main(Test.java:9)
>>2144891 ну и наконец что происходит при попытке запуска состояния, которое приводило к скриншоту: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attribute
>>2145059 Не могу, на всех машинах пользователей джава уже развернута какая есть. Но я взял более низкую версию Jaybird, и хотя бы эту половину логики в джарнике, наконец-то, завел. >У тебя не совместимые версии jar и dll. Скачай все пачкой отсюда Все оттуда и скачивалось, и не раз. Погуглил на тему что какие-то там проблемы с манифестами, и типа можно что-то там поделать с maven-shade-plugin, но я вчера накатил мавен на проект, не умея им пользоваться, и чуть вообще все не сломал к хренам. Пока сижу дальше думаю. Еще по какой-то причине перестал запускаться джарник из консоли, говорит "Could not find or load main class", хотя из проводника ОС отлично запускается.
>>2145420 >Не могу, на всех машинах пользователей джава уже развернута какая есть. Вообще-то сейчас, все приложения идут со своей JDK, чтобы не зависеть от системной.
>>2145420 >Погуглил на тему что какие-то там проблемы с манифестами У меня не винда, не могу проверить. Но вроде эта херня нужна только для аутентефикации пользователя через системную учетку Windows.
>>2142209 Понятно. А ещё вопрос по теме, есть ли смысл учить докер или лучше сразу кубернетис? Насколько я понял, он сложнее в освоении, но также есть тендеция к вытеснению докера.
>>2145718 Кубернетес работает поверх докера. Задачи у них разные, докер - про сами образы, а кубер - про разворачивание этих образов на сразу нескольких нодах. А зачем тебе это? Это всё девопсная тема, в разработке всё равно будешь юзать только докер.
СУКА, почему java.awt и java.swing - это такой кал говна из жопы? Хотел написать простое приложение, которое бы работало в трее под линуксом (ubuntu 20.04 LTS Gnome X11), так соси хуй. И еще наткнулся на это. Не проще ли выпилить всю графику нахуй? Она, очевидно, уже сильно устарела и не справляется с современным зоопарком интерфейсов. Зачем тянут из версии в версию GUI подсистему, которая еще в 90-х была спроектирована и для современного мира не годится?
>>2145796 Тут я наверное погорячился, ибо тот же электрон имеет схожие ограничения. И вообще, да, с таким зоопарком справляться очень тяжело и вообще GUI за пределами винды и макоси - это самый настоящий кошмар. Тогда почему бы не обеспечить поддержку винды, макоси, и gnome + kde, а остальное послать нахуй? Все равно других графических оболочек почти и нет, а те что есть используются малым количеством людей. Тайловые пидорасы любители i3wm пусть сами долбятся с поддежкой для своих поделий.
>>2145796 > Не проще ли выпилить всю графику нахуй? Она, очевидно, уже сильно устарела и не справляется с современным зоопарком интерфейсов. Зачем тянут из версии в версию GUI подсистему, которая еще в 90-х была спроектирована и для современного мира не годится? Так не используй. Её почти не дорабатывают. Выпиливать рано, ибо хватает софта, написанного на этом говне ещё тогда, когда из альтернатив был только борланд хотя выпиливанию jaxb это не помешало.
>>2145830 >ибо хватает софта, написанного на этом говне ещё тогда, когда из альтернатив был только борланд
Понятно, что хватает. Но, если в 18 версии выпилят весь GUI, то в чем проблема разрабам дальше пердеть 17 жабе пока их продукт окончательно не сдохнет или его не перепишут на что-то другое?qt/electron
Например, те же IDE от джетбрейнс. Всякий свинг гуи можно оставить и на 11 джаве. А вот штуки, которые занимаются синтаксическим анализом и прочими вещами, на ГУИ никак не завязаны, их можно перекатывать и дальше на новые жабы.
Вроде это джава сама проверяет какие-то там дайджесты внутренностей джарника, хз. Короче я "справился" с этим дерьмом, если так можно сказать, выбрав вариант сборки просто в директорию, а не в один джарник. Теперь все это говно лежит рядом с запускаемым джарником и вполне себе работает. Это не очень большая проблема. Там правда вылезло еще одно дерьмо в итоге - на серваке конторы TLS протокол устаревший, и все это дерьмо отказывается работать (джава работает с более новым), но там уже проблема админов базы, хрен с ним. Правда, сама IDE умеет как-то согласовывать все это с сервером (пишет TLS 1.2 was negotiated), хз, можно ли это согласование как-то программно настроить. Короче, спасибо тебе, анон, за помощь, в итоге все более-менее работает. Миллион чая.
Уважаемые жабогоспода, подскажите, пожалуйста, про закрытие ресурсов JBDC: Если у меня есть открытый Сonnection, а затем я получаю из него Statement в try-catch with resources блоке, примерно так: Connection connection = StaticDataHelper.getConnection(); try (PreparedStatement statement = connection.prepareStatement("insert into...")) { } То закроет ли AutoCloseable мой connection, вместе со statement? Или connection нужно будет всё-таки закрыть отдельно?
Вообще плохо понимаю дизайн автоклозейбла. Вроде бы он иногда закрывает не только свои ресурсы, например, вложенные стримы. Но чтобы конкретно понять, что он делает, нужно лезть в класс с реализацией и смотреть, что делает close(). Каких-то общих правил/гайдлайнов поведения от оркала, хотя бы для стандартных библиотек, я пока не находил.
>>2146131 Можно всё закрывать явно или через try-with-resources, не рассчитывая, что зависимые ресурсы закроются "родительскими". Обычно не страшно, если close() вызовется дважды, при этом ничего не произойдёт.
>>2145725 Ну раз не надо, тогда докером ограничусь. Зачем мне вообще? Уже писал, хочу развернуть какой-нить сервис/арендовать удаленную машину где-нибудь...
>>2146178 Прально ли понимаю, что кубер нужен для "высоких нагрузок", когда арендуется пачка серваков, и он всё это дело балансирует по нагрузке и тп? Я нуб, если что.
Начал пилить плагин для поддержки одного языка в идее, а потом узнал, что для него уже есть реализация language server, и в идее есть плагин для этого. Что теперь делать, вешаться?
Делаю пет проджект, интернет магазин. Сущность product, очень сильно разрослась, что с ней делать по грамотному надо? Оставлять такой? И ещё я хочу, чтобы на мейн пейдже была фотка с товаром, и названием. Я должен сделать дто, которое, дергает пару полей из этой огромной сущности, например, дтоФорМэйнПейдж, потом если нажать на товар, то выдергивается, некое другое дто, и например в окне эдит ещё одно, третье дто? Я правильно понял концепцию дто? Оно для того чтобы не дергать всю сущность из бд?
>>2146143 >>2146118 >>2146131 Если уж зашла такая тема, скажите, как .close поместить в finally? Ведь эксепшен бросается в конструкторе, и соответственно создать его вне блока try нельзя, иначе как инициировав как null. Но в таком случае, скоуп, где переменная существует, не охватывает finally, и там для него нельзя вызвать закрытие. А если вызвать его для нулл, то будет NPE. Я так понимаю, что это значит, что вообще нет надобности ставить .close в finally в этом случае, потому что если эксепшен произойдет в конструкторе, то коннекшен гарантировано не будет создан, и уж тем более помещен по адресу переменной? То есть в этом случае достаточно всегда вызывать .close в конце try?
>>2146341 Для autocloseable в try-with-resources ничего делать в finally не надо, а так что-то подобное: MyType x = null; try { x = new MyType(); ... } finally { if (x != null) { x.close(); } }
>>2146638 Эксепшен кинется в конструкторе, а значит до оператора присвоения в переменной все равно не дойдет. А если дошло, то эксепшена уже точно не случилось, если только у тебя нет где-то ниже еще методов кидающих эксепшен
>>2147079 Ты может пояснишь хуле в решении плохого? Почему в БД так хранить нельзя? Точно знаю, что иерархические структуры так и хранят, через id и parent_id.
>>2146954 Но мы сравниваем не с трай-с-ресурсами, а олдовую манеру вызова, только с отличием где закрывать поток - в конце трая, или в финалли. Можно подытожить так: если машина действует строго в соответствии со спецификацией, то разницы вообще никакой нет. Если же просто преследовать хороший стайл, то лучше все же закрыть в финалли, потому что в этом случае будут отработаны в том числе и те возможные исключения, которые брошены не в конструкторе. И даже если порядок работы конструктора и присвоения как-то хитро проебан, все равно произойдет попытка закрытия.
Если уж тут все такие гении касательно эксепшенов, если в try-with-resources используется несколько вызовов конструкторов объектов autoclosable, то закроются все из них в итоге, или только самые первые/последние/какие-то еще? Например я сериализую какое-то говно вот так: try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Config.ini"))){---code here---;} какие потоки закрыты будут? все? тот на который есть явная переменная?
>>2147196 Но я такое дерьмо встречал в руководствах в интернете, а выходит что объект аргумент, который никуда не присваивается, вообще невозможно закрыть?
>>2147044 Как вариант можно ещё тупо хранить упорядоченный массив айдишников юзеров хоть в .тхт файле, хоть в отдельной таблице (тоже в массиве). При изменении порядка тупо перезаписывать его полностью.
Все ресурсы, объявленные в try-with-resources, будут закрыты. Все, блядь. Закрываются они в порядке, обратном их инициализации. При этом все ссылки, по каким-то причинам хранящие null, будут проигнорированы. Исключение при закрытии одного ресурса никак не влияет на другие, они всё равно будут закрыты. Если программист не объявляет явно переменную, ссыдающуюся на открытый ресурс, то компилятор создаёт её неявно и через неё потом закрывает.
Может кто знает, где IDEA хранит конфигурации всяких вариантов сборки артефактов? Например, версия джавы, котрая будет использована при компиляции, библиотеки, которые следует подключить, и все такое? Например, я подключаю новую реализацию jdbc-драйвера, но в итоге после сборки приложения в манифест попадает старая, и после запуска приложение ее не находит. Или, например, я меняю имя, под которым хочу собрать джарник, а система мне говорит что "код не соответствует 5 версии джавы", хотя везде в настройках указана восьмая. Но когда-то действитьно под тем именем я собирал под 5 версию, и где-то эта настройка висит, видмо
Пацаны, а какие есть толковые книжки/ресурсы/че угодно по жабе для НЕ джуна? Типа я сижу давно на своей aqa-параше и мне хватает, но охота уже до среднеджависта-погромиста скилл подтянуть, не читая при этом как писать цикл фор
Есть какие-то грамотные гайды, желательно на отечественном языке, по работе дефолтного лэйаут менеджера идеи, и вообще по тому как и что там устроено, в свинге, в части размещения? Пиздец, хуета хует какая-то, жмешь наугад все эти галочки "can grow", "want grow", "can shrink", максимальные, минимальные, предпочитаемые размеры, все в итоге едет хуй пойми куда и где оказывается, еще и сами компоненты по какой-то ублюдочьей сетке располагаются в итоге. Работал на шарпе с их компоновщиком окон - все вроде просто и понятно, здесь же лютый пиздец. Только не надо опять про потому что GUI на джава сосет и все такое, я это и без вас знаю
>>2147927 А в чем проблема просто скипать все что уже и так знаешь, и читать только что-то новое или что надо освежить? Олсо, судя по высерам местных гейткиперов (не знаю правда или нет, ибо и сам сижу в параше), джун от неджуна отличается не знанием языка джавы, а навыками во фреймворках, системах сборки и прочей такой поебени. А так ты можешь быть хоть каким-нибудь джедаем который юзает последний синтаксис, сжимающий 90% кода, и думающий прямо на Stream-API с километровыми цепочками вызовов - все равно тебе скажут что ты обоссанный джун... будешь, как только выучишь спринг. В качестве базы всегда любил шилдта, хотя здесь в этом качестве котируют Хорстманна. Есть книги спецом для продвижения скиллов, типа thinkin in java и effective java Эккеля и Блоха, вроде как канон, но я не читал.
>>2148024 Ок, думал может спецом что есть для уебков типа меня. Буду дрочить основы значт и прочую алгоритмику, а то заебался валиться на собесах нахуя мне как AQA деревья инвертить, они што ебанутые, ни разу эти сакральные знания не понадобились. Пасиб
>>2147927 Читай главы которые не знаешь или знаешь плохо, но если хочешь в джависты, то этот анон прав >>2148024 Учить надо спринг и все что вокруг. А базы,sql,гит, докер ты и так наверняка уже знаешь. Алгосы не спрашивали ни разу. Я их даже и не пытался учить, начнут душить - пойду решать, а пока - похуй. Все равно забудешь если не используешь. А их не используешь практически.
Привет, аноны. Прислали одно ТЗ на тестовое, там есть требование: >Все параметры - город, адреса внешних сервисов и т.д., должны быть вынесены в настройки "город" - это часть бизнес-логики, там задание с чем-то типа сервиса погоды, короче говоря. Куда конкретно они хотят, чтобы я это вынес, подскажите, опытные жабагоспода? Какие "настройки" имеются в виду, как думаете? К сожалению, обратной связи по заданию у меня нет, уточнить сам не могу. пикрандом Проект на Spring Boot 2, собираю Gradle.
Еще такой вопрос, раньше только мавеном собирал: Создал новый проект в идее, подключил сразу Gradle. Проект абсолютно пустой, идея автоматом добавила в билд-файл зависимость junit.jupiter. Создал простой public static void main c одним принтом, при запуске через "play" в идее сыпет ошибку: >Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. >You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
Я нихера не пойму, что там может быть Deprecated, если я создал абсолютно новый проект? gradlew версии 7.1 Запускал ./gradlew build --warning-mode all и ./gradlew buildDependents --warning-mode all - никаких варнингов нет. Собираю проект в идее - тоже ничего нет мб там какая-то специфическая таска для идеи нужна, которой нет в списке tasks? Куда копать?
Кто знает, как указать системе, что я хочу использовать другую JRE для запуска приложений "дефолтным" способом - дабл-кликом в проводнике виндовса? Есть установленная джава (1.8), у нее есть конфигуратор, там можно находить и подключать JRE в любом каталоге. Но когда я нахожу и добавляют в список какую-то альтернативную джаву (опен-ждк 14, в частности), ничего не меняется, все равно стартует восьмая. И это происходит даже если сбросить чекбоксы "enabled" со всех остальных джав. ЧЯДНТ? Надо в реестре менять? В переменных среды? И там и там?
>если собрать решат из сурсов Точнее даже не собрать на сборке то варнингов и нет, а дебаг подключить из идеи, или ещё на какой-нибудь специфичной таске подорвётся. Я даже не знаю, какого поведения от грейдла ждать.
>>2148946 Варнинги из-за того, что кто-то из плагинов или ты дёргаешь гредл апи, который помечен как устаревший. Можешь откатываться на прошлые версии гредла пока варнинги не попадут, но тогда не факт что не насуют других хуёв. Если всё работает просто забей хуй
>>2148973 Понял, спасибо. Я думаю, может быть, сама идея что-то дополнительно подключает или дергает, когда я запускаю мейн-функцию из IDE, и тут я вряд ли уже что-то сделаю потому что, как и писал, при билде встроенными тасками варнингов нет и увидеть я их не могу Тогда оставлю пока так.
Те, кто перешли на 11 джаву в тырпрайзе, вы запаривались с тем, чтобы правильно сгенерить список --add-opens --add-exports или ставили везде ALL-UNNAMED и не парились?
>>2149306 >Лучше возьми мавен и не еби мозги. Грейдл хуйня без задач. Да я бы рад, но таковы условия ТЗ... Мне сходу не понравился, как я только версии плагинов и зависимостей в пропертис захотел вынести
>>2149342 >Указываешь версии в руте И сосешь хуй потому что нет скоупа testImplementation, например. Добавляешь плагин java, чтобы он появился и наслаждаешься наличием пустого root.jar в корневой папке build. Или создаешь buildSrc и определяешь новый класс, в котором задаешь версии как строковые константы...
>>2149335 Было бы прикольно, конечно, но все-таки пока рисковать не буду.
>>2149342 Я не про синхронизацию версий в модулях тем более, что вроде как грейдл всё равно тянет то, что лежит по иерархии выше, а про вынос версий в отдельные пропертис, как это принято в мавене, например, чтобы оно всё было в одном месте, а не по билд.грейдл раскидано.
>>2149520 У меня тоже >>2149528 нормально не заработало с ext блоком, но я нашел в документации к грейдлу 7.2 у меня 7.1 вот это решение docs.gradle.org/current/userguide/plugins.html#sec:plugin_version_management На моей версии тоже заработало. Хотя, опять же, в мавене это всё проще делалось.
Большая проблема гредла ебанутая графомания и отсутствие системности в манах. Нужно во первых изначально знать конкретную хуйню которую хочешь найти, потом прочесть два километра текста, без примеров, чтобы нихуя не найти и в итоге скопировать код с индусского тутора где вообще нихуя не объясняют эту магию. Касательно выноса версий нашел это https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_version_management тут показано что пропертисы изи доступны из пропертис файла, но опять нихуя не написано когда и в каком контексте. И так вот всем. Сиди и проверяй что как работает.
Прошу прощения за тупой вопрос, но задам: подскажите, какой уровень знаний нужен для устройства джава джуном? Есть ли некий набор навыков, универсальных для всех возможных сфер, ну или почти для всех?
>>2149767 Джава кор (синтаксис и семантика + стандартная библиотека - инпут аутпут, коллекции, стрим апи), гит, мавен/градл, спринг-бут. Несколько проектов самодельных на всех этих технологиях.
>>2149851 Сикулю еще забыл написать в кейвордах. И спринг мвц. А если серьезно, видел только мнение, что без сикурити можно подаваться на собесы. А вот сикуля/хибер/спрингдата нужны обязательно. Тестовые на джуна, что гуглил это обычно 2-3 таблички на спрингдата жпа на грейдле и вывести это рест-эндпоинтами. Чаще без авторизации.
>>2150034 Юзер открывает приложение, получает статусы всех френдов через рест, подключается по сокету к серверу, шлёшь свой статус, сервер шлет по всем сокетам евент когда кто-то вышел/вошел, сокет закрывается по пингу или нормально. Сокет любой, хоть инпут стрим, хоть вебсокеты, но лучше поискать какую нибудь либу где на соединение не выделяется целый поток. В rsocket вроде такое есть, но честно не ебу, т.к велосипедю обычно сам, чем в чьем то говне разбираться
>>2150266 >Вот это мне больше нравится, чем Поймал системного архитектора, который предлагал каждый раз при перетаскивании строчки на UI дропать таблицу.
>>2150280 Покажу на пальцах специально для отсталых вроде тебя. Скажи, где в этой строчке таблица чтобы ее дропнуть list_id=[user3, user1, user2] Ты знаешь что такое nosql хранилища, key-value там?
>>2150282 Ну не всем же миллиардам твоих пользователей нужно это оповещение. Вбыдлянде в среднем 100 челов в друзьях, а в онлайне, кого нужно оповестить, ещё меньше
Как между собой обменивается данными фронт и бэк? Вот я написал контроллер хуё-моё, я должен бросить свои объекты json-ом на сторону фронта? А если это просто контроллер, не Рест? Фронтэндер же не будет шаблонизатором данные вытягивать, или будет?
>>2150330 С шаблонизаторами сервер на каждый запрос подставляет данные в хтмл, отправлет браузеру, а тот его рендерит, там может даже не быть ни строчки JS, всю работу делает сервер, больше никакого "обмена данными" нет. Иногда это смешивают с рестом, часть данных подставляется на сервере, а часть догружается потом на клиенте через рест, так, к примеру, работает двач.
>>2150340 Я уточню немного. Я бэкэндер, написал контроллер, написал model.addAtribute("user", user); не рест РеспонзБоди тоже нет. Как фронтовик будет делать страницу из этого? Он должен владеть таймлифом? И смотреть код сервера, чтобы знать какие поля дергать из объекта? Я просто представляю, что у него есть джейсон, он видит этот массив хуев, и из него что-то лепит, не? как на самом деле, именно в канве разработки совместной?
>>2150353 > не рест РеспонзБоди тоже нет А надо, чтобы был рест. Вот тогда и есть смысл в отдельном фронтовике (в современном смысле слова), который будет лепить из джейсонов
> model.addAtribute("user", user); Вот здесь ты и кладешь данные для страницы. Если на фронте что-то понадобится, он отправит запрос на сервак, чтобы получить обычный жсон.
Также можно сделать spa. Все, что ты делаешь - отдашь жсон. А хтмл уже на фронте лепится
>>2150353 > Как фронтовик будет делать страницу из этого? Ты исходишь из предположения, что существуют проекты, где фронт целиком на шаблонизаторах, и при этом там отдельно бэкендеры и фронтендеры. В реальности таких проектов почти нет, а те страницы, что генерятся шаблонизаторами, целиком разрабатываются бэкендерами, которые в этом случае скорее фуллстеки. Отдельно фронтендеров и бэкендеров ты встретишь только там, где есть рест (ну либо клиент отдельным экзешником, там хоть SOAP, хоть сокеты).
>>2150365 >он отправит запрос на сервак, чтобы получить обычный жсон $.get - такой запрос? и проблем не будет, не смотря на то, что я в джэйсон ничего не конвертировал, на сервере?
Spring реализует Dependency Injection через Reflection. Общепринято полагать, что Reflection API, по ряду причин, работает медленно и нужно минимизировать его использование в коде, когда это возможно. 1) Означает ли это то, что Spring вынужден терять часть производительности by design? 2) Почему использование Reflection нужно сводить к минимуму, тогда как спринг, построенный на Reflection, стал стандартом индустрии? Объясните нубу.
>>2150434 1. В DI рефлексия работает при инициализации. И спринг запускается реально долго. Потом норм. 2. Рефлекслия ломает к чертям сокрытие данных. И для крудошлепа, пишущего логику на спринге сокрытие нужно, а фреймворкопицам - нет.
>>2150443 Сокрытие в виде гет/сет не нужно никому, кроме тех кто дрочет на некие принципы ооп, потому что так сказал дед 50 лет назад. У крудошлепа необходимость в этом как раз на 10 месте из 10.
Сап, накидайте адекватных идей для диплома на жабе и не кидайтесь ссаными тряпками за такую просьбу (у меня так-то есть 2 идеи, но они достаточно сомнительные чтобы за низ браться)
>>2150389 Нет. Рест запрос. Например, ты заходишь на 2цх/б. Тебе отдается страничка с тредами. Дальше я развернул тред. Фронт отправляет запрос на /апи/треды/1337 , чтобы получить весь тред. Как только ему вернётся ответ, он распарит жсон и запихнет его в страницу. А вообще, как сказал анон выше, если у тебя есть шаблонизаторы, то скорее всего там не будет разделения на фронт/бек
>>2150735 Генератор документации для реста. Вешаешь над своими контроллерами аннотации сваггера, и тебе генерируется веб-страница с документацией (а-ля джавадоки), Ещё на этой странице для каждого эндпоинта встроен rest-клиент, чтобы ты мог заполнить простенькую сгенерированную форму, нажать на кнопку, и эндпоинт вызвался сам. Ну и ещё там формализованное json-описание апишки, его можно выгрузить и по нему специальными тулзами сгенерировать рест-клиент (как с WSDL в SOAP).
>>2150865 Проектов на голой джаве и со сборкой в идее у меня наверное уже десятки. Лучше с нуля еще что-то пильнуть, или накатывать на старый? Есть ощущение, что если прям вообще ничего не понимаешь с нуля сделать проще >>2150866 Прогнозы времени обнадеживают. Спросил про порядок спринга, просто потому что обычно люблю что-то изучать снизу вверх (то есть с низкоуровневых вещей)
>>2151502 А контекст где блять? как ты можешь просто у координаты это вызвать? Тут уж либо у контекста запрашивать по координате, либо наоборот. >>2151518 Хуй знает, там где я учился джаве изначально (на каком-то обоссанском ютуб-канале) говорили что это тру стайл >>2151521 бля, как ты догадался? действительно иногда немного машу веслами на шарпе джава сосет кстати совсем сосет
>>2151684 Это хуёвая логика. Объект coordinate у тебя представляет, очевидно, координату, а координата - это класс "более общего назначения", можно сказать, нежели абстракция "зоны доставки" в виде еще какого-то класса. Мало того, что ты пихаешь в координату, которая может использоваться еще в сотне проектов, помимо этого доставочного говна, доставочно-специфичный метод "isInDeliveryZone()", так еще и то что он не принимает никакого объекта доставочной зоны (список аргументов пустой) показывает, что где-то внутри класса координаты хранится вся эта зона. Это полный пиздец, за такую архитектуру надо клавиатурой Митсуми на железной подложке по ебалу пиздить.
Можете подсказать, почему в первом случае код не компилируется, а во втором все ок?
Ошибка компилятора: java: method compare in class org.sandbox.App cannot be applied to given types; required: T,T found: org.sandbox.Derived,org.sandbox.Derived reason: inference variable T has incompatible bounds equality constraints: org.sandbox.Super lower bounds: java.lang.Comparable<T>
Очевидно, что желательно в обоих случаях указывать T extends Comparable <? super T> вместо T extends Comparable <T>
То есть для кода с первого пикрила все ясно - T extends Comparable <T> требует, чтобы класс имплементил компарабл самого себя. Вопрос в том, почему компилируется второй код? Ведь там Derived так же не имплементит Comparable<Derived>, а имплементит Comparable<Super>.
>>2151959 >И в метод compare он передается как Super Да, это так, я проверял.
>>2151959 >Derived наследуется от Comparable<Super> А вот с этим можно подробнее. То есть если класс-родитель имплементит интерфейс, то все его потомки этот интерфейс наследуют? Довольно тонкая грань, как мне кажется, и местами не совсем очевидная. Я долго думал, что классы могут только наследоваться от классов, а интерфейсы они имплементят.
>>2151961 А почему он берет Т за Super? Какая в этом логика компилятора? Он берет Т за Super, потому что во втором случае судя по ответу >>2151959 Т наследуется от Comparable<Super>?
В чем разница между наследованием класса от класса и класса от интерфейса? Наследование класса от интерфейса вообще возможно?
>>2151963 Честно - хз. Попробуй вместо Comparable сделать класс с женериком. Попробуй сделать больше классов в цепочке.
Мне кажется, что компилятор сначала берет Derived и смотрит: подходит ли он, если нет, идёт вверх и т.д. Либо же он смотрит на интерфейсы Derived, видит, что там Comparable<Super>, а значит, надо брать Super. Но это так, с аналитика с дивана
Привет, аноны. Скажите, пожалуйста, как в аннотациях использовать значения из application.properties? Нужно в RestController значение @GetMapping иметь возможность настроить из переменной в properties. Я уже всё перепробовал - ничего не работает.
@GetMapping(path = "${serviceResponseRoute}") - не работает. Environment.getproperty - не рабоатет. Вставить через @Value("${serviceResponseRoute}") в константу - тоже не работает. Короче, ничего не работает. Как вообще вставить что-то в аннотацию из application.properties??
Насколько java сейчас вообще перспективна? Пишу на питоне, но хочу перекатиться во что-то более нагруженное, так как питон в крупных компаниях на больших проектах юзают, как язык для всякой автоматизации или прототипирования, а я бы хотел писать сложную бизнес логику и продуктовые фичи. Я так понял тут есть три стула, дотнет, джава и голанг. Собственно голанг как-то не особо радует примитивным синтаксисом отсутствием обобщённого программирования, а дотнет слишком майрософтовский и плюс из джавы есть воходы на скалу и котлин + всякая big data, что тоже интересно
>>2152035 А где почитать про эту разницу между "класс имплементит интерфейс" и "класс наследует интерфейс". В JLS или туториалах оракла про это написано?
>>2152102 >>2151962 Нигде нельзя это инсайдерская инфа оракла Потому что это полная хуйня. Имплементирование и наследование это одно и то же, а ограничение на единственность наследования проистекает всего из одного - что в надклассах есть реализация, а в интерфейсах - нет, поэтому никакие конфликты реализаций невозможны. implements и extends даже рассматривали объединить в одно ключевое слово, потому что отличий семантики в них нет. Джава вообще любит для каждого ключевого слова иметь контекстно-зависимую семантику, за каким-то хуем. Поэтому многие от нее охуевают после своих шарпов и паскалей.
>>2152406 Ну в 2004 году (или когда там вышла 5 джава) это было оправдано. Но почему за 16 лет так ситуацию и не исправили? Даже котлин, и тот вынужден делать type erasure из-за этого кривого механизма в JVM.
Короче захотел докеризировать свой хеловорд. И никак не могу сделать инициализацию постгреса. У меня все на голом jdbc и загружаю я скрипты из resources самописным классом InitDB. Выдает ошибку. В туторе откуда смотрю, как докерезировать это делается через liquibase. Но там все через yaml, а не через sql скрипты. Я хотел бы через sql скрипты. Можно ли эти скрипты загружать изнутри джавы? Пробовал перенести скрипты в папку с докерфайлом для посгреса и загрузить через COPY schema.sql /docker-entrypoint-initdb.d/. Не получается. Еще вроде можно flyway в отдельном контейнере поднять и там загружать скрипты. Помогите пожалуйста, второй день сижу.
>>2152442 Да, я это понимаю. Но не знаю, куда переместить? Они лежат в джарнике в самом корне папки с моими классами. В transfer-jdbc-0.0.1-SNAPSHOT.jar\BOOT-INF\ Пойду удалю src/main/resources и перепакую.
>>2152477 >>2152482 Почитаю сегодня. Там в доке страниц на 15, мне этого на целый день. Я смогу решить эту проблему, если прочитаю, как правильно конфигурировать ресурсы?
>>2152485 >Since the file is part of jar file (a zip archive in fact), there is no valid filesystem path that would point to it.The standard way is to use getClassLoader().getResourceAsStream("test.txt");. You'll either have to modify your application so that it can read from classpath resources or URLs, or use getResourceAsStream() to copy the resource to a temporary file on filesystem and then point to it. Как-то много всего надо сделать. И что-то я не уверен что копирование во временный файл будет работать в контейнере. Будет?
Почему может вылетать 500 ошибка присохранении сущности в репозиторий? repo.save(entity); Сущность в деббагере перед сохранением создана, такая как должна быть, id=null. Айдишник в самой сущности делаю так @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
>>2151947 А что тебя удивляет? В первом случае Derived implements Comparable<Super> (пиздец, ты сам додумался назвать класс зарезервированным словом??) не удовлетворяет паттерну T implements<Comparable<T>> (Super, который у тебя висит в классе как тип компэрабла, не может быть прикастован к Derived). Во втором случае класс Super implements Comparable<Super> удовлетворяет дженерику, а значит в качестве типа параметра Т может быть передано что угодно, что является супером или его подклассом, коим деривед и является. Реализуй независимо компарабл в Супере, и все взлетит в первом случае тоже. Или допусти в ограничении типа что компарабл может быть не только T, но и любого его суперкласса: ? super T То что вы там наговорили про отличие implements и extends действительно полная хуйня, как сказано здесь >>2152235 - это одно и то же, что, кстати, видно по самому синтаксису дженериков - для ограниченных типов всегда используется вариант extends, даже если указывается интерфейс.
>>2152556 >>2152477 >>2152482 Спасибо анончики. Две статьи на баелдунге, 2 странички на стековерфлоу, 3 часа тупления, 3 переписанные строчки и один конфиг на 4 строчки и я научился загружать статику изнутри джарки. Но вопрос открыт остается. Как загружать sql скрипты более правильно и высокоуровнево в докере? flyway внутри толстой джарки или отдельный контейнер?
А в каких случаях нужно проверять ссылку на нулл? В некоторых гайдах видел, что мол вообще каждый объект перед каждым использованием проверить равен ли он нуллу. Это действительно так?
>>2153377 Если уже проверял выше, то не надо проверять. Если логически нулл невозможен, не обязательно. Если не обращаешься к его полям/методам, а только передаёшь в другой метод, тоже можешь не проверять, но это если в принимающем методе есть нужные проверки. А так надо стараться юзать Optional.
>>2153377 Все верно, всегда надо. В джаве так и пишут: EntityFactoryBean entityFactoryBean = EntityFactoryBeanManager.getEntityFactoryBeanInstance(); if (entityFactoryBean == null) { return Pair.of(null, new NullPointerException("entityFactoryBean")) }
>>2153377 Лучше используй Optional. Проводи поиск объектов, а затем если результат пустой то создавай пустой Optional. И где будешь получать Optional, то там уже делаешь проверку в зависимости от содержания Optional. И проблема с null беспокоить не будет.
>>2153377 В тех, когда возможно, что приедет нулл, и ты его используешь как-то так что будет NPE. Если совершенно очевидно что такое невозможно (например объект инициализирован еще при создании конструктором) то это нахуй не надо.
>>2154114 Кста забыл дописать что за бесплатно себе/друзьям/родным >>2154116 И как оно? Какой функционал, корзина, поиск, кэш, похожие товары и тд? Сколько времени убил? Какие проблемы были? Какой стек?
>>2154154 Я начинал один, переданный из свитера летскодовского на шаблонизаторе фримаркер. Но хотелось бы рест. И не хотелось тратить время на более глубокое понимание шаблонизатора. И я не знаю как в ресте насчёт загрузки выгрузки картинок. Пока вот игрушечный банк пишу с кружками и одной транзакцией . Сейчас вообще две таблички. Аккаунты и переводы. С аккаунтов скоро юзеров выделю в третью. И к ней авторизацию прикручу. Нужно придумать ещё две сущности для приличия.
>>2154159 > Но хотелось бы рест Придётся тыкать JS или писать десктопный клиент на каком-нибудь свинге. > банк > Нужно придумать ещё две сущности для приличия. Выбирай любую, хих. План банковских счетов ЦБ РФ, таблицы со связками банковских операций и бухгалтерских проводок, внутрибанковские расчёты между балансами филиалов, счета в валюте, счета для драгметаллов, таблица с платёжными и кассовыми документами (ссылающаяся на "переводы"), таблица операционных дней, печать документов в соответствии с ОКУД, подписание документов ЭЦП, обязательные отчёты для ЦБ РФ, кредиты, депозиты, тарифы, инкассация.
>>2154161 Я немного изучил голый жс. Смотрел до серединыплейлист летскода по вью. Сейчас оно на голом жс работает с фетчами там всякими. Может потом перепишу на вью/реакт, если станет на голом слишком неудобно. Как раз думал про кредиты и депозиты с начислениями раз в 1 или 5 минут. Остальное что ты перечислил слишком сложное. Разве что счета в валюте присобачить и сделать автоперевод по курсу, забирая курс с какого-нибудь публичного апи.
>>2154163 > Я немного изучил голый жс. Смотрел до серединыплейлист летскода по вью. Сейчас оно на голом жс работает с фетчами там всякими. Может потом перепишу на вью/реакт, если станет на голом слишком неудобно. Норм. На голом жс можно хоть spa лепить, даже туториалы есть. > Как раз думал про кредиты и депозиты с начислениями раз в 1 или 5 минут. Там может и не быть начисления в реальном времени. Скорее процент рассчитается один раз на весь срок погашения, и, например, будет другой размер процента при досрочном погашении, но тоже фиксированный, рассчитываемый один раз. В общем, вариантов много.
Решил разобраться с I/O, написав простенькое десктопное приложение для распидорашивания картинок. Просто охуел от количества бойлерплейта, необходимого для создания блять одной сраной кнопки и прикручивания к ней возможности выбора файла. Просто пиздец бля.
>>2154167 Это и есть спа, которое чистит всю страничку при нажимании на кнопки. Без роутинга естественно, он мне не нужен, хотя я читал, как сделать роутинг. Обиднее, что компонеты не уневерсальные совсем в отличии от фреймворков. Табличка аккаунтов и табличка переводов два разных компонета. Про кредиты не очень понял. Вообще у меня глупая идея написать 5 реализаций репозиториев, чтобы потрогать их снизу-вверх. С крудом 2 табличек и одной транзакцией. А потом уже расширять таблички. Пока написал только на голом jdbc, jdbcTemplate и дописываю spring-data-jdbc. Потом голый хибер и spring-data-jpa c которой и буду расширять таблички. Или на чем лучше делать? Еще попробовал докеризировать(думал так фронт показывать знакомому фронту, я потратил 4 дня, а он меня закономерно кинул). С фронтом раздающимся с nginx. Но там надо проксирование джавовского порта настроить. На мануалах nginx я пока сломался. Пришлось включить игнор cors в спринге. И вообще с докером у меня сломались тесты к моим репозиториям и я даже пока не смотрел, как их чинить и снес временно. Стоит вообще под докером писать или забить на него? Там мне приходится каждое изменение делать по новой package толстого джарника и пересоздавать докер образ.
>>2154188 С БД достаточно потыкать jdbcTemplate и spring-data-jpa, в основном только их и юзают. С докером сильно возиться не надо, разберись, как делать основные вещи, а всем остальным занимаются девопсы. С тестами не очень понятно. Они не должны зависеть от окружения, там должно подниматься какая-нибудь hsqldb или h2 с эмуляцией синтаксиса настоящей БД.
>>2154191 а spring-data-jdbc не нужон? Туториалов на нем больше чем jdbcTemplate. А как тесты с должны работать при деплое? Типа они прогоняются во время упаковки в джарник только? Или при каждом старте приложухи?
>>2154175 Ты просто долбоеб гречневый. Пиздуй в какой-нибудь RAD к дельфипидорам, у которых все готовенькое. Какие проблемы в редакторе форм кинуть кнопку, создать файл-чузер, поставить листенер и запихать одно в другое?
>>2154192 > а spring-data-jdbc не нужон? Это какая-то странная полу-ORM, непонятно, зачем, если есть хибернейт, а если нужны нативные запросы, jdbcTemplate хватает практически для всего. > А как тесты с должны работать при деплое? Типа они прогоняются во время упаковки в джарник только? Или при каждом старте приложухи? Тесты запускаются только один раз при сборке жарника, их классы даже в жарник не попадают по дефолту. Их и нет смысла гонять каждый раз, они не зависят от окружения, и если не упали, то без изменения кода уже и не упадут.
>>2154323 Держи в курсе Если класс-предок реализует какой-то метод, то оверрайдить его в интерфейсе в состоянии "по-умолчанию" бессмысленно, потому что любой класс считается победителем в этой нестыковке. Помимо того, базовые методы вроде хэша и ту стринга завязаны на состоянии объекта, о котором интерфейс понятия не имеет, и значит он принципиально не способен реализовать вменяемую реализацию хэшсуммы или чего-то такого. Клон имеет протектед-досту в классе, то есть для использования он д б заоверрайжен энивей, но очевидно ты не смоожешь склонить стейт объекта из под интерфейса, так что то что ты написал просто хуйня без задач, разве что создать интерфейс Unclonable и кидать оттуда эксепшен "Fuck youself bitch hohoho"
>>2154658 >Можно посмотреть на то, как мы поступили с релизами Spring Framework 3.2.x и 4.3.x, чтобы понять, как это будет реализовано. Так ниче не меняется. На 6ку перейдут не раньше чем через 2 года.
Привет, Анон. Подскажите плиз такой момент. Вопрос наверное к фуллстекам. Допустим я знаю Спринг + thymeleaf.
Достаточно ли этого для создания более-менее современного сайта, чтобы не выглядело совсем зашкварно, или же javascript так или иначе будет необходим? С жс просто совсем нет опыта...
>>2116244 (OP) Сап анон, нужна твоя помощь. Пытаюсь решить задачу для Яши. Так их шесть и я кое как решил одну почти, есть ошибка компиляции в блоке таймера и одна ошибка рантайма(скорее всего из за инпута данных но это не точно). Мне кажется это из за версии или какой-то такой ерунды. У них там компилятор Java 8 + network + json-simple. В старом добром Нетбинс у меня все работает. Не знаю в чем причина. Возможно они там просрали все полимеры. Короче говоря помогите разобраться в чем ошибки. https://pastebin.com/hBTxc4Hf
Почему у меня хибер сохраняет каскадно коллекцию Set, но вытянуть ее через fetch.Eager не может? Ничего не возвращает, хотя в бд данные сохраняются. Там в сущности 3 коллекции вытягиваться должны таким образом, если это важно.
Ребят така вот штука хочу написать програму на Java (только учусь),для девушке . хочу написать программу в которой будет много различных мотивационных картинок (мемим) и ей нужно будет просто нажимать на кнопку (например "картинки"), а сама программа будет ей показывать рандомно картинки с различными котиками. Двач как это сделать можешь бросить видео урок?
>>2157357 Потому что голанг с введением дженериков превратится в кал хуже java 1.5, но зато с горутинами. Современной жабой вполне можно пользоваться, а вот если еще обратную совместимость с версиями <= 1.4 сломать и ввести reification, вместо нынешнего type erasure, то вообще заебись платформа будет, на которую можно будет и виртуальные треды запихивать и вообще кучу всего. Но СУКА, почему бля в 2004 году гении из sun microsystems не смогли додуматься до того, что их дженерики будут полнейшей хуетой? Почему нельзя было просто взять и сломать обратную совместимость, учитывая, что ее и так потом частично ломали в дальшейших версиях жабы, и ломают сейчас, когда делают Strongly Encapsulate JDK Internals.
>>2157360 Потому что в джаве все делают на половину готовым. HttpClient без сжатия, модули без версионирования, паттерн матчинг без паттерн матчинга. Только мультилайн строки нормальные получились.
Есть один wsdl, и плагин cxf-codegen. Превращать wsdl в конфиг (то есть, класть в ./config) не хотелось бы, но оставить его в Resources равносильно хардкоду урла эндпоинта сервера. Есть ли возможность невозбранно пользоваться wsdl и xsd для генерации кода, но при этом урл эндпоинта выложить в yaml и где-то перезаписать в коде?
>>2157434 Ты все равно код генерируешь на этапе сборки, зачем тебе в рантайме менять wsdl? Даже если ты перекомпилишь код в рантайме, то твое приложение все равно не сможет использовать новые поля, а без старых просто упадет.
>>2157439 Да все в сто раз тривиальнее, речи о подмене wsdl в рантайме, конечно, не идет. Речь о том, что есть одинаковые wsdl для теста и прода, отличающиеся только урлом, soap address location. И хочется, чтобы wsdl не был источником урла потребляемого сервиса.
>>2157360 >Почему нельзя было просто взять и сломать обратную совместимость Тогда они еще дрочили на обратную совместимость. Плюс у тебя ломаются все коллекции, т.е. по факту перестанет работать все библиотеки, пока их не перекомпилят.
Вон майкам даже пришлось даже продублировать все коллекции System.Collections и System.Collections.Generic. Они решили, что они дохера умные и обойдутся compile time решением.
>>2157446 Так вообще по-хорошему нужно выпилить все древние коллекции вроде Vector, Hashtable, Stack (что там еще есть deprecated?). Выпилить всю графику AWT/Swing в отдельный проект, как это было с JavaFX. Все равно свинг по факту мертв, и умеет работать нормально только виндой, да и там с багами. А под Wayland только в режиме совместимости с X11. И не факт, что бекенд свинга перепишут чтобы он на вяленом мог нативно работать. Нужно наконец обновить дженерики, вместе с вальхалой сделать реификацию типов, чтобы наконец можно было вызвать T t = new T(); Наконец завезти Loom и Tsan. Я считаю это план минимум на следующие лет 5-7 для жабы.
>>2157510 >Так вообще по-хорошему нужно выпилить все древние коллекции вроде Vector, Hashtable, Stack (что там еще есть deprecated?). План огонь! Тогда весь энтрепрайз с 8-ки вообще не слезет.
>Выпилить всю графику AWT/Swing в отдельный проект Есть сильное подозрение, что без интринзиков Swing будет слишком сильно тормозить. inb4: SWT не тормозит, потому что там основная логика по отрисовке в нативном коде
>чтобы наконец можно было вызвать T t = new T(); Охуеть! А кто будет гарантировать, что у T есть дефолтный конструктор?
Анон, а расскажи какие бывают типы проектов по джаве в энтерпрайзе. Мб как-то класссифицировать можно
например: - Консольный приложения - REST-сервисы (монолиты, микросервисы) . . . - что -то еще
Я прост толком больше и не знаю. А чтобы вкатываться куда-то, хорошо бы представлять и оценивать: интересно/не интересно это будет.. как сложно и все такое
>>2157546 >весь энтрепрайз с 8-ки вообще не слезет Ну раз в энтерпрайзе до сих пор используются древние коллекции (которые депрекейтнули лет 20 назад?), то такому энтерпрайзу можно посочувствовать. А вообще у меня есть подозрения, что те, кто до сих пор на восьмерке сидят (а их большинство), на ней и останутся в течение следующих 10 лет, так как что 11 версия, что 17 - нихуя нового не принесли, а Loom и вальхалла будут ближе к 29 версии, я думаю за это время значительная часть джава разрабов начнет уходить на пенсию, или вовсе на тот свет.
>>2157546 >без интринзиков Swing будет слишком сильно тормозить А что мешает использовать интризинки после выпила свинга в отдельный пакет? К тому же поддержка свинга через 4 года уже заканчиается, я не уверен, что потом ее кто-то будет продлевать, ибо свинг сдох. Даже в jetbrains начали пилить новый движок для иде, где, вероятно, джава-гуи уже не будет от слова совсем.
>>2157546 >А кто будет гарантировать, что у T есть дефолтный конструктор? Компилятор, как в C#/С++ например, а кто же еще?
Кстати забавно, что в оракле решили выпускать джаву каждые полгода, типа чтобы не было застоя, как раньше, но в итоге, начиная с 8 джавы 2014 года выпуска, за 7 лет никаких масштабных фич так и не добавили.
>>2157619 >расскажите как он развивался последние лет 10 Под громкие кукареки индусов был выпущен псевдо кросплатформенный net core, потом его дропнули в пользу .net5+ на пиар компанию которого влили кучу денег, но как видно шарп так и сдох на пути в светлое будущее, а у майкрософт новая игрушка в виде better javascript. мимо был шарп в вузе
>>2157619 Ну я не шарпист, но по ощущениям там реально больше прогресса было. Тот же выкат в опенсорс, .net core -> .NET, ASP.NET MVC -> ASP.NET Core, Blazor (который уже полноценно в вебассембли крутится), AOT компиляция, memory native, новый UI фреймворк для десктопов + хуй пойми сколько синтаксического сахара, которого даже в котлине не найдешь.
В жабе с момента выхода 8 жабы только чутка сахарочка насыпали, а в самой 8 жабе из очень значительного только стримы и completableFuture.
>>2157628 >как видно шарп так и сдох на пути в светлое будущее Чому сдох? В РФ может и не шибко популярен, но спустя какое-то время может вполне взлететь.
Плюс жабы в том, что у нее есть огромный спринг + всякие поделия для микросервисов и распределенных систем вроде зоокипера, хадупа, эластика, которые писались лет 10-15 назад, когда кроме жабы не было ничего адекватного.
>>2157552 > - Консольный приложения > - REST-сервисы (монолиты, микросервисы) Нет подобной классификации. Консольные утилиты могут юзаться разрабами или сопровождением, но у пользователей исключительно гуй, обычно веб или мобильное, иногда бывает и десктоп. Само серверное приложение может использовать REST, SOAP, различные очереди сообщений, вебсокеты, причём всё одновременно.
>А что мешает использовать интризинки после выпила свинга в отдельный пакет? То что интринзик это часть JIT. Одно дело у тебя байткод и интринзик для него гарантировано одной версии, а другое когда у тебя сторонняя библиотека которая может быть любой версии. Чисто теоретически после JEP 412 это уже не должно быть проблемой. Выйдет посмотрим что там с перфомансом JetBrains Composer, сможет он утереть нос Свингу или нет.
>Компилятор, как в C#/С++ например, а кто же еще? Там такой уйобищный синтаксис для этого, что нахуй надо.
>>2157611 >>хотя все так на восьмерке и будут сидеть Через полтора года же выходит спринг6/бут3 с минимальными требованиями - джава 17. Хотя они и 5/2 будут поддерживать еще лет 10.
Анон, помоги/подскажи. Устроился в компанию на стажу (аплодисментов не надо, я долбаеб, обосрусь от шума). Выдали тучу литературы, сказали "читай, вникай", пообещали тестирование в конце месяца по результатам которого я либо пойду нахуй, либо останусь дальше. Книжки типа Эккеля, Шилдта, Блоха. Кто-нибудь сталкивался с подобной хуйней? К чему готовиться/в какую сторону воевать? Помогите, не бросайте, я боюсь ебли
>>2157905 Думаю через месяц тебе просто проведут стандартное собеседование на джуна, поспрашивают по коллекциям, зачем волатайл нужен, в каком порядке кетч-файнали работают, иерархию эксепшенов и тп. Если решат что ты необучаемый и ничего не знаешь - найдут более упругого.
Поясните пожалуйста. Как мапится сущность из фронта в бэке? Вот есть диалоговое окно, в котором я делаю сущность аналогичную той энтити, которая ява-энтити. Но из фронта идет джсон, а ява-сущность она не джсон, там разные поля, разные классы, разные связи между ними. Как мою фронт-сущность прокинуть в хибернетовскую?
>>2158362 Обычно делают 2 сущности, одна DTO для сериализации в API, другая Entity для сохранения в базу. DTO и Entity не должны быть один к одному, чаще всего часть данных из Entity не попадает в DTO.
>>2158378 А где в этом случае создаются объекты, вот есть джсон из фронта, я должен сделать дто, и класс конвертр, и в этом классе-конверторе создать объекты?
>>2158408 DTO создается автоматом из реквеста - просто десериализуется JSON, все современные REST движки умеют такое. А дальше варианты: если сущность создается то создаешь Entity, заполняешь поля из DTO, дефолтные значение и т.п. и сохраняешь в базу. Если изменить - грузишь по ID из базы, меняешь те поля которые пришли в запросе, какие-то дефолты можно поменять например кто и когда обновлял и сохраняешь в базу.
Все это разумеется сопровождается проверками входных данных, разрешений и прочее.
>>2158735 Еще скажем, что иногда в проде встретить шаблонизаторы все же можно - там, где нужно генерировать email'ы или какие-то тексты уведомлений/рассылок.
>In fact, two-thirds of the uses of the close method in the Java libraries were wrong in 2007.
Почему освобождение ресурсов всегда сопровождается болью и невыносимыми мучениями? Все эти try-catch-finally, try-with-resources, так или иначе там куча подводных камней.
>>2159189 java-core Коллекции Springboot,data,web sql git знать немного о паттернах иметь представление об алгоритмической сложности юнит-тесты docker системы сборки уметь бахнуть RESTful Api (CRUD)
Пытаюсь сделать конвертр из/в ДТО мапстрактом. Все стандартно. Есть лист сущностей. Но все разваливается вот трейсстек This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Sep 16 17:10:58 MSK 2021 There was an unexpected error (type=Internal Server Error, status=500). Cannot invoke "com.amr.project.converter.UserMapper.toListDto(java.util.List)" because "this.userConverter" is null java.lang.NullPointerException: Cannot invoke "com.amr.project.converter.UserMapper.toListDto(java.util.List)" because "this.userConverter" is null
Маппер весь стандартный, пробовал поля ему прписать вот так @Mapping(source = "id", target = "id"), может он не понимает, но они все совпадают. Лист вот так прописан: public interface EmployeeMapper { List<EmployeeDTO> map(List<Employee> employees); } Что еще надо?
>>2159302 А если у сущности и у ДТО есть Set<Role> как он будет мапиться по умолчанию? На фронте в инпут поле просто USER, например. Мне наверное этот мэпстракт ничем не поможет, надо руками писать конвертер и там создавать объект, и в ДТО все поля должны быть Стринг наверное, и тогда вот этот Стринг пихать в созданный Сет ролей. Я запутался чет совсем..
Что делать если я не могу пользоваться структурами сложнее листа, я интуитивно не могу юзать map, не могу нахуярить стрим какой-нибудь, это сложно для меня. Хотя я честно прочитал про штук 50 его методов, но не запомнил нихуя.
Есть поток сообщений. У каждого сообщения есть id и список потомков. Как из этого потока построить иерархическую структуру, чтобы иерархия была правильной?
>>2159467 ты так сразу и не сможешь это освоить, нужно время и практика применения, попробуй почитать для начала что-то нибудь про алгоритмы и структиры данных для новичков, посмотри на жабовские исходники и как в них это структуры реализованы. А потом попытайся накидать какой-то pet-project где это все применишь. Мозгу в любом случае нужно время что бы перестроиться под другой тип мышления (я так понял ты самоучка, так как подобные приколы в универах еще на 1 курсе проходят)
Когда приходит сообщение, проверяешь: есть ли в мапе ид. Если нет, то это рут. Потом идёшь по его потомкам. Если потомок уже есть, прикрепляешь его к вершине. Также все ид добавляешь в мапу
>>2159531 > У каждого сообщения независимо от уровня вложенности должна быть ссылка на рут своей иерархии. Тут скорее всего придется за глубину дерева рут узнавать, ибо рут может поменяться.
Если же у тебя рут 100% не меняется, либо если ты строишь деревья сверху вниз, то ты можешь у каждого сообщения хранить рут, и при добавлении потомка просто копировать ссылку на рут
>>2159545 Тогда делай динамически. Типа сейчас рут - Х. После пришло сообщение Y, где Х - потомок, значит теперь рут Y. Но у потомков X рутом все ещё считается X. При поиске настоящего рута мы берём рут мессаджа, потом рут рута и и т.д. Возможно, руты стоит пересчитывать иногда, чтобы не было длинных цепочек рутов
>>2159558 Э, не, я не об этом. У меня поток сообщений, руты могут в любой момент поменяться. Если пересчитывать слишком редко, то временное хранилище, которое хранит список айдишников, для которых рут не пересчитывался, будет переполнятся и падать с ООМ. Если пересчитывать слишком часто, на ходу, то иерархии будут получаться неправильные, потому что к моменту подсчета рута пришли еще не все сообщения.
>>2159467 Задачки решаешь. Не можешь решить за 10 минут сам - ищешь ответ в комментах или в гугле. https://stepik.org/course/2403/syllabus https://stepik.org/lesson/12776/step/1?unit=3124 https://stepik.org/lesson/12781/step/1?unit=3128 И не надо просто читать книгу/доку. Читай код побольше. Во всех норм учебниках он есть. Открываешь в иде, запускаешь, читаешь код, запускаешь. Крутишь, меняешь, особенно там, где не совсем ясно, как работает, запускаешь. И потом делаешь свои примеры. Например берешь последние 2 главы из книжки/тутора. Одну из последних задачек. Придумываешь им общий кейс, копипастишь из 3-5 прочитанных до этого мест код, собираешь их в одну программу и меняешь под требования кейса.
>>2159565 Надо знать для каких сообщений необходим пересчёт рута. Если это делать периодически для всех сообщений в базе, то работать будет очень долго.
>>2159411 Ну смотря куда ты устраиваешься, анон >уметь бахнуть RESTful Api (CRUD) В моем случае этого хватило
Джуну не обязательно прям ахуенно глубок все знать и уметь. Надо уметь в основы и знать дохуя технологий хотя бы поверхностно. Хотя бы чтоб слышал о них. Потому что на собесе могут спросить любую хуиту. Мне на одном интервью по простыне вопросов блиц устраивали. Так что мой тебе совет: видишь какое-то новое для себя название технологии - пиздуй гуглить, чтобы хотя бы в двух словах мог об этом потом пиздануть. Ну и оч важно для джуна (и не только) - писать кода больше, не зарываясь в теорию. Я сам от этого страдаю и лечусь