>>1668911 Так-то и топовые плюсовики дохуя гребут. Эти языки далеко не для всех. Если средний вкатывальщик будет учить скалу с целью получать топ зп, он вероятнее не сможет найти работу, чем реально будет получать такую зп.
>>1668982 Мне нужон целостный курс, где мне объяснять что, как и куда прикручивать после того как я освою основы. Типа серии книг Орейли Пожалуй здесь останволюсь >>1668979
>>1669112 Легко. Еклипс намного удобней и понятней ИДЕИ, но у него 2 минуса: 1. На винде тёмная тема будет немного криво отображаться. 2. Убогий маркетплейс. Пока он загрузится можно повесится.
>>1669186 как будто джява это не ебаный примитив, нихуя нет кроме оопе с дженериками (обычный синтасический сахар, которого даже нет в рантайме), и то мамкены не осиливают и вынуждены половину времени программировать на иксемеле до недавнего времени в этом парашном недо-языке даже нельзя было найти элемент в массиве джява это язык уровня 1С, такое же коболоподное говно, вечно отстающее на десятки лет
Эх, что-то уже месяца 2 не могу позаниматься нормально. Сил вообще нет, как сел на книгу по xml и json, так и не прочитал толком. Перегорать начинаю, так и не загоревшись? Как фиксить?
Аноны, привет. Есть вопрос, на который мне вряд ли ответят в ноут треде, но вы думаю точно сможете подсказать. Извиняюсь заранее. Ищу ноут для работы в Idea, буду накатывать ubuntu какую-нибудь. 1. На какие характеристики смотреть? 2. Какой размер экрана лучше взять? Работал ли кто-нибудь на 14' ультрабуке (без моника) - какие были затыки? 3. Мб кто-то работает на 13' macbook pro стоит ли покупать в минимальной комплектации (~110к, очень не хочется)
>>1669441 >Хотел написать один проект, но сколько ни пытался - жаба не дала мне этого сделать, больше ни на какие ебанины вдохновения нет. Зачем тогда мучаешься? Го в питончик
>>1669445 >>1669447 По всем темам просто ищу книги, ну и еще куча оракловских гайдов набрал про запас. Дайте тогда, где можно все это основательно выучить, если не трудно.
>>1668733 (OP) Подскажите, люди добрые, а можно ли как-то заменить подстроку в строке ПОСЛЕ определенной подстроки? Ну т.е. вызвать replaceFirst(), но чтобы поиск таргета шел после нужного мне места?
>>1669453 > По всем темам просто ищу книги Отвыкай, так ты до пенсии изучать основы будешь. Книги читать нужно по большим вещам типа спринга или баз данных, и то спорно, но уж точно не по сугубо прикладной херне. Для почти всех задач тебе хватит пары статей первыми ссылками из гугла, например "что такое X", "как работает X", "X quick start".
>>1669143 Еще он не может в плагины, с каждой новой версией проебываются зависимости. Например в последнюю версию у меня не получилось поставить JFX от глюона и PDE, и не у меня одного!
Аноны, доброго времени суток. Прошу пояснить за GeekBrains. Я гуманитарий до мозга костей, но начальные знания по программированию, благодаря приличному преподаванию информатики в универе, присутствуют. У меня есть достаточно времени и баблишка, чтобы пройти полный курс по Джаве. Да-да, хочу ВКАТИТЬСЯ В АЙТИ, господа гусары. Стать разработчиком, открыть для себя новую сферу развития, как хотите называйте. И нет, Дудя я не смотрел. Мне просто это пиздец как интересно. Однако, меня много чего смущает. Есть ли тут товарищи, которые на этом "факультете" учились, чтобы на мои вопросы ответить?
1. На GB много задвигается про трудоустройство. Послушайте, реально после успешного прохождения годичного курса трудоустроиться хотя бы джуном? Они хоть какие-то вакансии предлагают, или это просто КАРЬЕРНАЯ КОНСУЛЬТАЦИЯ?
2. Насколько котируется сертификация GB у работодателей? Я много слышал о том, что в разработке в принципе важен опыт и реализованные проекты, а не сертификаты и дипломы - тем не менее, я считаю, что необходимо показать какой-то бэкграунд.
3. Что, по вашему мнению, лучше? Курсы в GB или полноценный очный курс в вузике? Есть возможность проплатить и пойти в Бауманку поучиться. Цена одна и та же примерно, но я работаю и хочу таки дистанционку.
>>1669427 Анонче, для работы с любой IDE важен проц и объём оперативы. У меня старенький MSI GE602PL Apache, 15,6" - если честно, маловато пространства, подзаёбываюсь листать. Я бы тебе не советовал брать ещё меньше.
Литературу буду выбирать по местным гайдам, но есть вопрос: Где можно найти нормальный задачник? Как вообще прикладная часть в обучении кодингу реализована?
JavaRush не понравился, какая-то дичь. Слишком непрозрачно, и юмор хуёвый.
>>1669427 Если ты вообще рассматриваешь вариант с Макбуком за 110к, то значит ноут за тыс. 60 - 70 можешь позволить себе. За такую цену бери Делл какой нибудь и всё. Там любая IDE будет летать. На счёт размера экрана - лично мне 13.3 дюйма хватает.
>>1669588 Про Джава Раш это была шутка. Говно полное, к тому же она ещё на употребляют тяжёлые наркотики, место то что бы изучать урок по ЯП, ты будешь читать про каких то работов и библию программиста на пол туториала.
Зачем нужен какой то уровень владения англ. если для чтения он не нужен? Я учил английский только в школе, с тех пор не мало словарного запаса накопил и могу спокойно прочитать любой текст, для этого грамматика не нужна, только перевод слов. Но говорить не могу конечно
>>1669671 >Откуда у вас силы и время? Работать и еще и учиться. У меня на работе есть парочка неофитов, которые реализуют всю текучку. Моя задача, с недавних пор, заключается в исправлении их косяков. Поэтому могу заниматься тем, что нравится, даже в рабочее время.
>>1669427 1. Ты не поверищь - проц/память/диск. 2. Меньше 15-шки - глаза ломать. 15-ка тоже, но хоть что-то. 3. У мака божественные тачпад и динамики. Если тебе это не нужно, то не стоит. Обрати внимание на корпоративные ноутбуки: lenovo thinkpad, dell latitude, hp probook/elitebook. Латики одни из самых доступных будут у нас. На форуме ixbt в разделе ноутбуки пояснят по хардкору.
>>1669722 ЕЕ - набор спецификаций, спринг - конкретная технология, на спецификации похожа лишь отчасти. EE развивается медленно и теряет популярность, спринг жив и здравствует. ЕЕ требует специальных серверов приложений с реализациями спецификаций, спринг изначально готов к использованию, и от сервера приложений ему нужны только сервлеты, более того, спринговое приложение можно запаковать в один жарник, и для работы ему нужна только JRE. На ЕЕ тяжело писать микросервисы, на спринге норм. В ЕЕ всё плохо с интеграционным тестированием, в спринге делается на раз-два. А так код на современном ЕЕ и спринге аналогичен по содержанию, те же подходы и паттерны, та же организация кода, только аннотации немного другие.
>>1669749 >>Потому что мурзилка это имя нарицаельное Первый раз в джава треде такой термин встречаю >>В ссылке что ты принес есть всё для того, чтоб она могла называться мурзилкой. Это ты так сайты про хэлоуворлды называешь? Если придумываешь термин, то дай ему определение, а то действительно как какой то шизик. >>1669754 >>не модный Ты тредом не ошибся? Джава и джаваскрипт - разные языки
>>1668911 Получают они эти супервысокие зарплаты только потому, что программистов на Scala и Clojure исчезающе мало и среди них 95% всех разработчиков это программисты с многолетним опытом в Java. Т.е. в выборке можно сказать отсутствуют джуниоры и начинающие мидлы.
>>1669377 Спецификация языка Java больше по объему чем в той же Scala, например. Только поддержка в IDE для Java на первоклассном уровне, а Scala работает через жопу.
Ебаный Primefaces ну чтоза пиздец, второй день ебусь с багом который гдето в жаваскрипте срабатывает после апгрейда с 6 версии на 8, мне чтоли теперь учить все эти библиотеки и дебажить в браузере код библиотек
>>1669718 Я же написал, что параллельно работаю по курсу и буду литературу осваивать. Самоучитель от Vertex Academy довольно крутой, темы по нему дублирую.
>>1670299 > Я предположил, что под > > веб проект на спринге > подразумевается фронт в связке со спрингом. Ну вот если не понимаешь, о чем пиздишь, то не пизди
>>1670271 > Primefaces А стек на стороне сервера какой? Если спринговый, то можно что-то полегче прайма взять. Какой-нибудь шаблонизатор берешь (тот же mustache), и он должен покрыть все твои потребности.
>>1670450 Сам-то понимаешь? В коммунити у тебя руки отвалятся на спринге писать, или что? Или может ты просто никогда ею не пользовался? От ультимейта толк только один - фронт.
Как попрактиковаться в контейнеризации на джаве? Где взять хорошие задачи с решениями/объяснениями где надо будет задействовать докер, кубернетес, хироку, опеншифт?
>>1670648 У меня в универе на след.год будет ведро. Однако сейчас я выбираю для себя чем мне в целом заниматься, спрингом (который я дома на карантине начал тыкать сегодня) или же ведром (и на учебе облегчение будет, и смогу окончательно выбрать себе направление). С ведром только одна проблема - я не пользовался им сто лет + в ведро треде про работу плакать начинают, когда такую тему поднимаешь.
>>1670658 Со спрингом на недостаток работы не жалуются, вопрос лишь в том, готов ли этим заниматься. Раз жалуются в андроид-треде, это всё-таки лишний повод подумать, стоит ли оно того. А для универа я бы не стал сильно запариваться, мне тут вообще предлагают писать магистерский диплом на фортране я серьёзно. Разве что потыкать в нужных рамках.
>>1670675 Я наоборот не из-за универа запариваюсь. + если есть возможность что-то сделать для универа сейчас, чтобы потом можно было в нем пинать хуй больше работать, то почему бы и не сделать. Учитывая, что это не лаба уровня "написать крестики-нолики на сях", а что-то более реальное (думаю за курс андроида после года ежедневной джавы мы будем писать что-то интересное). Короче вся война у меня в голове сейчас сосредоточена на выборе направления. О других направлениях не думаю, ибо нет времени и сил сейчас учить что-то новое (и так в универе хватает нагрузки) + джаву учим мы больше всего + с джавой я много времени провожу и вообще полюбил ее каким-то образом (а в школке, лет 5 назад, мечтал никогда не писать на ней).
>>1670681 В дополнение: Потому и не хочу сейчас обосраться с выбором андроида, чтобы не получилось так, что через 2 года я буду искать работу хоть кем-то, а все будут сидеть в вебе и гугл хром будет единственной приложухой на мобилках (а фронтендщики будут писать драйвера на жс)
>>1670675 >на фортране Я тоже был удивлен. У нас кластер в ВЦ при универе работает на фортране, мы на нем даже кодили интегралы в многопоточном режиме. Видимо это стандарт распределенных вычислений в российских НИИ.
>>1670686 Я как раз поэтому и отказался от андроида, когда был перед подобным выбором. Хуй знает, как реально будет, но что-то мне подсказывает, что почти всё уйдёт в веб, а нативными останутся только уже раскрученные приложения типа мессенджеров и социалочек.
Есть книги на русском по 9 и по 8 версии. Какую выбрать для начала? До этого читал, что 9 устарела, а 8 нет и на ней работает большинство. Но 9 таки свежее. Посоветуйте.
>>1670861 Обе устарели, возьми хотя бы 11. Версии джавы обратно совместимы, так что, выучив новую версию, ты будешь знать и старую. Если придётся, пересаживаться с новой на старую не так сложно, они не сильно отличаются.
>>1670871 Так у меня как раз шилд и хорстман оба 8 и 9 скачаны. >>1670874 Не видел что-то на русском по 11. Просто уже читаю 9ую, думал, может забить и на 8 перекатиться - типа 9 не нужна, а читать немного меньше.
>>1669427 Был и Dell vostro 5568 15.6", и макбук прошка 15". Сейчас сижу на Thinkpad T480 сответсвенно 14". Задавай вопросы если хочешь вот этот анон >>1669700 кстати дело говорит, еще бы добавил что в маках охуенные экраны
>>1670947 Вкорячил нетбинс, ратает заметно шустрее. Держу в курсе. >>1670992 Ничего не советую - сам только начал. Мне нравится, например. Все фичи хуй догонишь, ничего принципиально нового с 8 версии не добавили, как я понл. Книжка то по основам
>>1671000 Потому что никто никогда не будет работать в нетбинсе или эклипсе, нервы дороже. Если компания не может приобрести разрабам лиценз идеи не верю, что так бываетхотя нет, верю, в одной шарашкиной конторе мне говорили что работают в нетбинсе, лол, ну да это было пять лет назад в мухосрани то можно смело разворачиваться и уходить.
>>1671029 Результаты опроса декабря 2017. Эклипс используют по большей части из за поддержки легаси или жадности компании. Или же по инерции, потому что так привыкли, как этот анон>>1670736 А нетбинс потому что он известный(?) и функциональный(??). Хотя таких шизиков мало. >>Мы полагаем, что обе стороны сравнивают свою любимую IDE с Eclipse или просто работают над совсем разными задачами.
>>1671070 Ну чего ты доебался со своим нетбинсом? Пробуй, потом расскажешь. В этом итт треде им почти никто и не пользовался никогда. Даже если он в последних версиях стал лучше, никто об этом не знает. Все или сразу идею ставят или эклипс
>>1671074 Так это не я тебе говорил что нетбинс говно, но если им почти не пользуются возможно это неспроста. Хочешь конкретики - пользуйся сам, потом расскажешь.
>>1668733 (OP) Гайд полная чушь. Успешно учил по жавурашу, по лекциям, курсере, читая книги на русском да да, Экель прекрасный, вкатился в хорошие бабки.
>>1668733 (OP) Гайд полная чушь. Успешно учил по яварашу, по лекциям, курсере, читая книги на русском да да, Экель прекрасный, вкатился в хорошие бабки. Из плюсов явараша, можно мониторить свою прогрессию, добавляет мотивацию, там много обсуждений, в которых можно подчерпнуть интересные способы решений. Что у вас за список книг, все читают Шилдта, Экеля, Бхаргава по спрингу там на выбор.
Это нормально что в одну дто, допустим UserDTO, я кидаю всю инфу по юзеру? Имя, пароль, список адресов(лист обьектов), новый пароль, токены и тп.? Или все же лучше создавать отдельные дто для разных операций? Для регистрации/восстановления пароля/смены емейла? Где гайды поискать по архиткектуре для нубов?
>>1671153 Не очень, есть риск случайно передать эту DTO другому пользователю, добавляя, например, функционал списка друзей или поиска по пользователям, и совершенно левый чел узнает кучу данных, которые знать не должен.
>>1670929 >Thinkpad T480 Охуеть! Всего-то за 133k в ситилинке... четыре моих зарплаты, Карл!
>сответсвенно 14" Формат, наверное, удобный для таскания по коворкингам, и начинка серьезная, но зойчем там FullHD на такой размер? Чтобы код сразу становился МИКРОкодом?
Подросту - пойму? Сам пока учусь писать хеллоуворлды на пеке с моником 22'
>>1671153 Смотря какое приложение. Если писать по-серьезному, то лучше вообще дробить по-максимуму, но не до фанатизма. По поводу гайдов хз, у меня просто внутреннее чувство прекрасного развито
>>1671280 Но какой в ентом смысл? Если у тебя з/п 150-200 и ты хотет ноутбук (для работы ли???) за 200, как бы понятно. Но хотеть гаджет за 2-3 зарплаты, честно говоря, не понимаю прикола. Это же не автомобиль, не домашний кинотеатр и даже не гироскутер, лол. Это же, блядь, всего лишь дорогущая игрушка, устаревающая за полтора-два года. Да, топовая начинка, топовый экранчик, но он как кольцо с бриллиантом: борщ не варит, минеты не делает, в поход на нем не уедешь, он даже код сам не пишет. Зойчем?..
надеюсь, вкачусь, этой осенью и буду завидовать коллегам с макбуками
>>1671231 >>лучше вообще дробить по-максимуму У меня пока по сути только авторизация реализована, да и то не до конца, боюсь как бы количество классов не выросло до неприличия. Вот думаю дто если разобью, их станет не 2, а штук 5-7. И то только потому что одиночные стринги вроде юзерИд и токена напрямую отправляю. А если их в дто закинуть уже до десятка дойдет. Вон реквест и респонс моделей, которые по сути такие же дто, только для пользователя, уже с десяток Или для джавы ЭТО НОРМАЛЬНО?
>>1671208 Да, столкнулся с таким, стал библиотеку ModelMapper использовать вместо стандартного BeanUtilc.copyProperties чтоб вложенные дто тоже пребразовывать. Пока помогает, как там дальше будет пока хз.
>>1671153 Абсолютно нормально, когда у тебя есть DTO для твоего REST-сервиса. Затем ты конвертируешь это DTO в объект класса сервиса, а когда нужно отдать данные объект твоей доменной модели обратно клиенту, то снова его преобразуешь в DTO.
>>1671314 Охуеть, оказывается, нужно теперь смешивать сервисы и сущности в один большой God Object! Чума! Что следующим шагом будет, добавлять бизнес-логику в контроллеры? Запросы к базе в геттеры?
>>1671358 Я бы понял шизика, если б он сам так писал и показывал своим примером что так можно и нужно. Но сам он конечно же в своих проектах так не пишет, а то китайцы не поймут и выкинут на мороз. А так ну не чистое ООП в интерпрайзе, дальше то что?
Сап, анон. Посоветуй репозитории чисто для чтения и разбора кода, дабы подчерпнуть для себя какие-либо приемы и архитектуру, да и понять как люди умные пишут. Только не слишком огромные и узконаправленные
>>1670929 Как оно - за таким целый день сидеть - глаза не устают? В Idea удобно сидеть? В графической оболочке какой-нибудь СУБД - тоже норм? Я помню работал в принципе на i5 системнике c ссд было норм для моих задач.
>>1671606 ну квадратный и че, у меня вот дома тоже квадратный уже как 12 лет стоит.. работает, не загибается.. правда сейчас в качестве второго выступает, но до этого был он один
>>1669700 Сейчас еще есть от разных фирм самые новые игровые ноуты, но при этом весь меньше 2 кг, могут поработать без розетки. При этом полноценный проц, дискретка уровня 2060 или выше, м.2 ссд. Тачпады тоже продуманней. Стоят дорого.
>>1671686 Нормально на 14 дюймами работается, но всё-таки это извращение, только если на даче где-нибудь работать или на выезде, неделю максимум. Иначе надо внешний монитор, копейки ведь стоят.
>>1671799 Да хуй знает, оверинжиниринг какой-то. Какую-то сложную логику можно с помощью JsonView нахуевертить, зачем плодить однообразные классы и конвертеры на каждый чих не понимаю.
>>1671319 > Но какой в ентом смысл? На маке работать приятнее, чем дрочить. У меня старый макбук есть, очевидно, поэтому я знаю, какое это удовольствие. > устаревающая за полтора-два года Я до прошлого года сидел на прошке 2012 (!) года с 16 гигами памяти. Техника оче долгоиграющая и неубиваемая нахуй.
>>1671223 Согласен, знатно охуел когда смотрел не б/у, но брал не новый а с рук на лохито крутил вертел во все стороны у продавца, не мог понять где наебка, чисто новый синк даже гарантия до 22 года, 2 цикла аккума за 50к, так что считай мне нихуево повезло макбук тоже на авито брал, кста Формат удобный, большой экран оказался ненужнон из-за того что можно дробить рабочие столы. Просто настраиваешь что у тебя где, на любителя конечно, на работе подрубаюсь к экрану один хер
Начинка хороша, а fullhd у меня нету, у меня версия чутка старая на TN-матрице 1366х768, можно легко заменить за 6к на fullhd или за 8 на quadhd, благо техподдержка леново предоставляет всю инфу по дисплеям. Плашка оперативки за 2к итого получается комп за вдвое меньшую цену чем на ситилинке.
>учусь писать хеллоуворды на 22' везет ебать, у меня был квадратный три на четыре моник, а на 22" можно хоть в три вкладки открывать при желании >>1671686 Глаза вытекали немножко после царского ретина дисплея, но привык и внешний монитор спасает, плюс мб возьму fullhd дисплей Idea, DataGrip все норм >>1671791 двачую, внешний монитор тема Пользуясь случаем хочу сообщить что продаю в ДС после карантина ясен хуй macbook pro 15" mid 2015 г.р. без дискретки, 16 гб, 256 ssd, Intel Core i7-4980HQ 2.8-4 ГГЦ(мб не такой, нет возможности проверить)
Короче, с мистером Шилдтом обучение летит - рассматривает каждую, даже малозначительную на ервый взгляд писечку в максимально короткой и доступной форме, не летит по верхам, и не заводит академических шарманок по всякому говну на 3 страницы. Рекомендую.
Ребят, а кто-то делал лицензию для своего приложения? Типа вот прям как в играх, чтобы 16-значный ключ вводишь и можешь пользоваться игрой. Плюсом, чтобы еще ключ можно было вводить в офлайне и все равно все работало?
Ребят,как работает readObject? Он читает параметры из файла через пробел?( john doe 22 ?) И как вообще реализовать такой метод: в файле строки с параметрами обьектов,записать все эти обьекты в arrayList
А что делает джавист на работе? Ну фронт допустим понятно что делает и в чем копается. А в чем копается средний джавист? В первой версии легаси кода сбербанка? Вопрос без шуток. Интересно какие обычно таски
>>1672124 > Он читает параметры из файла через пробел Нет у него там свой формат, пишется/читаеться еще куча мета информации. Если хочешь именно через readObject делать то нужно переопределять функцию.
>>1672114 Это не плюсом будет, а минусом. Единственный надежный способ это логин и пароль при каждом входе. И то если сильно захотят, то обойдут. У моего знакомого так вошли в программу на виртуалке, потом запаковали этот образ с запущенной программой и перепродавали его за меньшую цену. Но она у него с интернетом работает и сильно от обновлений зависит + он вычислил владельца этой лицензии по многочисленным запросам с разных айпишников. В итоге они соснули.
Так что можешь не париться и без всяких ключей распространять.
>>1672156 >>Работаем с классом «Студент». Добавьте в главный класс программы два статических метода. Первый метод читает данные о списке студентов из файла и возвращает ArrayList со списком студентов.Второй получает на вход ArrayList со списком студентов и записывает в файл список школьников и их достижений, отсортированный по именам. Входной и выходной файл задаются программно.
>>Возможный формат входного файла (первую строчку с именами столбцов можно не добавлять в файл, русский язык использовать по желанию) :Name Gender Age Calculus Algebra lOlympiad Ivan, m, 15, 5, 5, 3
>> Возможный формат выходного файла (первую строчку с именами столбцов лучше добавить в файл, русский язык использовать по желанию):
Name Average mark Olympiads Ivan 4.75 3 – school, 27 - city
>>1672158 Ну так а в чем вопрос? 16-значный ключ это тот же логин/пароль. Если нужны офлайновые то там делают какую-то контрольную сумму. Например первые 8 генерируются случайно, к нему присоеденяют "секрет", от полученого считают sha256 - часть полученого хеша используют как последние 8 значений ключа. Для проверки повторяют на совпадение. Естественно "секрет" нужно хранить в приложении (потому что оффлайн) - тоесть для того чтобы ломануть нужно просто желание.
>>1672140 > В первой версии легаси кода сбербанка? Ну, скажем, не в первой, но попадается и код, написанный лет 6-8 назад людьми, которые давно уволились. Но править его нужно бывает редко, обычно если никто его с тех пор не правил, значит, он работает хорошо и не ломается. Копаться в основном приходится в чём-нибудь свежем, ибо есть более критичные классы, куда при появлении новых требований лезут в первую очередь. Задачи сильно завязаны на предметную область, и глубоко обычно в неё вникать не требуется, аналитики пишут спеку - ты реализуешь. Ну и баги фиксить нужно, бывают очень хуёво воспроизводимые.
>>1672161 >readObject Это ты слишком глубоко копнул, судя по твоему уровню это еще не для тебя. От тебя ожидают банальной работы со строками. Со стримами и подавно работать не умеешь? Поэтому Files.lines() не предлагаю. Для тебя подойдет Files.readAllLines(), далее String.split() на каждой строке - возвращает массив подстрок, и формирование объектов из этих массивов. Это десериализация (считывание из файла). Что касается сериализации (записи в файл), то тут обычный String.format() каждого объекта (или вообще toString() переопределить), и потом Files.write(). Все. Дольше объяснял чем код писать, реально.
>>1671606 >квадратный аааа... понел. Сам страдал на основной работе, когда по наследству достался CeleronD и 15" жыдкокристаллический дисплей филипс из каких-то первых моделей. 1024х768 с углами обзора 45 градусов, как у банкоматов. Я на нём ворды строчил и ексели осваивал (вот это была жопа). Алсо, щас взял два косаря IBM Тхинкпад 15,4" без тачпэда, но с нативным LPT-портом, лол. Intel centrino 1.5GHz, 512Mb Ram, Win XP. Поставил RedAlert 2, Carmageddon 2, BattleZone 2, SeriousSam 2, NFS HotPursuit 2... и он меня теперь успешно сука отвлекает от обучения и бесконечно отодвигает вкатывание(((
>>1672171 Так вкатывальщики фронтендеры за полгода учат все, а потом клепают всякое говно красивое и не очень по кайфу. А я получается два года в универе учусь уже чтобы через 2 года сидеть баги править в языке, который за всю жизнь не выучишь?
>>1672225 Зачем тогда джаву учишь? Учи JS. Джава - простой язык и учится он быстро. Это не кресты и даже не шарп. У фронтендеров баги тоже бывают. Хз, правда, сложно ли их править, если проект большой. И не только баги, в основном новый функционал пилить будешь.
>>1672264 Это не компилятор, это штука для сборки и управления зависимостями. Ant сейчас никто не использует, он считается legacy. Сейчас самые популярные это Maven и Gradle. Лично мне больше нравится Maven, он как-то попроще в использовании. Gradle сложнее, но при этом и мощнее, потому что там для сборки пишется прям скрипт на Groovy или Kotlin, а значит можно как угодно кастомизировать процесс сборки (но я не сталкивался с ситуациями, когда мне это было необходимо).
Уважаемые сеньоры-помидоры, ответьте на вопрос вкатывальщика, пожалуйста: Сейчас есть вариант пойти на обучение в жаба-школу одного банка в кризис особенно актуально иметь потенциальное трудоустройство Собственно, скажите пожалуйста, сильно ли бэк завязан на математике? Просто смотрю, что во многих серьезных конторах, типа яндексов, на алгоритмическую и математическую подготовку обращают внимание, и часто прописывают её в требованиях при найме стажеров и джунов. Да и выпускников мехматов там любят. Я не полный идиот хотелось бы верить в математике, те же алгоритмы и структуры смогу понимать, я думаю. Какие базовые вещи в теории множеств и Булевой алгебре кое-как выучил в универе. Но все-равно математика как-то не доставляет мне удовольствия поэтому в какой-нибудь ML я бы ни ногой Вот сложная тех часть в принципе нравится, байтоёбство всякое тоже одобряю. Скажите, опытные аноны, стоит ли мне идти в жаба энтерпрайз бэк с такими предпочтениями? Все-таки главный критерий для меня - интерес к работе. Или лучше идти в мобилки экраны верстать у меня вроде всё довольно неплохо с визуальным восприятием? P.S. Во фронт не хочу точно, там уж как-то вообще далеко от тех части. Плюс в JS-е отладка кода для меня какая-то совсем неприятная.
>>1672354 > сильно ли бэк завязан на математике Вообще нет, обычно только арифметика, максимум - примитивная статистика.
> во многих серьезных конторах, типа яндексов, на алгоритмическую и математическую подготовку обращают внимание, и часто прописывают её в требованиях при найме стажеров и джунов Это потому что у них буквально очередь за забором из желающих, и оно могут позволить себе выбирать самых лучших среди прочих равных.
> в какой-нибудь ML я бы ни ногой Ну и не парься, больше нигде она не понадобится.
>>1672354 Математики там нет, зато много всякого легаси дерьма типа Java 6 и SOAP, поэтому в банк лучше не идти, ну если только прям совсем нет других опций.
Что надо сделать, чтобы понять зачем нужен спринг? Я уже даже думаю забить на него на время и начать на Java EE писать, чтобы понять что именно я теряю не используя спринг. А пока это выглядит как посмотрел->скопировал->запомнил, но не понял нахуя.
Спринг начал тыкать сразу же после ООП и коллекций. Из практики только всякие задачки на массивы, матрицы и т.д
>>1672448 А откуда скрин? Есть что посоветовать? Дней 5 назад мотивация в жопу ударила, так я наоборот ищу где сейчас попрактиковаться хорошенько + почитать что-то мозгодробящее, чтобы из чтива в видосы перемещаться для полного усвоения и чтобы лит-ра была главным источником.
>>1672452 Ну хз. Если бы я в спринг начал вкатываться без видосов - я бы наверное расстроился бы сильно. Но за наводку спасибо. Сейчас буду покупать качать Шилдта и читать.
>>1672448 Как вы на русском вообще можете воспринимать информацию? Ладно бы вы в 1С кодили, но нормальные языки? Простейший пример из русской книги: "для переопределения пишем @Override"; из английской: "for overriding type @Override". Чувствуете разницу? В английском вы всего один термин запоминаете, причем он четко связан с предметом если знаешь перевод, а в русском - два термина, один из которых - непонятное волшебное слово, если встретится в отрыве от контекста хер пойми что обозначает. Часто переведено неправильно/некорректно/неточно, вроде даже выше писали что какую-то современную книжку не рекомендуют на русском читать изза перевода. Перевод усложняет вам жизнь, это блядь как в детстве игра в поломанный телефон - кто-то сказал правильно, дальше пошло кто как понял. Зачем читать не оригинал, какой профит? Оригинальный автор совсем не то хотел сказать что вы там читаете в вольном переводе ребят которые кормятся переводами.
>>1672458 >вроде даже выше писали что какую-то современную книжку не рекомендуют на русском читать изза перевода. Хортсманн последнее издание - перевели ужасно, предыдущие издания в таком пиздеце замечены небыли. Английский, например, я учил в играх и сериальчиках. Оче сложно вникать в оригинал - не читаешь, а борешься с английским языком, и да >для переопределения пишем @Override никокого диссонанса у мен не вызывает, например.
>>1672457 ходил туда где-то в том году, спросили чем отличается красно-черное дерево от дерева Фенвика ну и потом основные вопросы по джаве на мультитредовость и спрингу, не перезвонили
>>1672458 Мне пока что намного легче воспринимать книги на русском. И думаю так будет всю жизнь. Какие-то статьи в инетах, особенно если они написаны хорошим шрифтом - изи на английском. Видосы с субтитрами - еще проще. А вот сухую техническую лит-ру только на русском и все. Вот такой вот я аутист.
>>1672461 >>1672465 Я не стебусь над вами не подумайте, просто программирование и английский они вместе идут, неразрывно. Выше был пост с линком на бугаенко, даже он на английском пишет. Хотя зачем бы? А гуглить инфу как? Про @Override например опять же. Ну забыл допустим эту аннотацию. Или нет, возьмем @RequestMapping. Забыли. Что делать? Гуглим: spring how to map a request? Ответ сразу в гугле, без переходов. А в русском? Я даже стесняюсь составить запрос, никогда так не делал. "Spring Как спроецировать запрос?" А стаковерфлоу? Кроме самого кода там часто и красивые, шикарнейшие детальные объяснения как это все работает. Ну и т.д.
>>1672489 >>1672500 Да и вообще, 4 строчки английского текста эт тебе не талмудина на 100 страниц. В большинстве случаев достаточно посмореть на код что ты нашел по интересующему тебя запросу
>>1672468 Наоборот, для общения (хотя бы на дваче), приходится знать оба термина. Но ты выборочно выдернул что тебе понравилось, проигнорировав посыл поста в целом. И есть термины, которые вообще не похожи, навскидку это ебаные конечные автоматы, не отражающие суть нихуя, как я долго их боялся в свое время, против лаконичного "state machine" - машина состояний. Я понимаю что это какие-то там пятидесятые года, железный занавес и наши русские математики такой термин ввели, что это не перевод васяна из книжки, но тут опять работает принцип "английский - проще". И у меня таких много примеров было в жизни, я не записываю их и сейчас не вспомню просто.
>>1672489 >>Ответ сразу в гугле, без переходов. А в русском? пикрелейтед >>спроецировать Я вроде русский знаю, но как это относится к программированию слабо представляю, если честно >>А стаковерфлоу? Там не надо ничего писать, там уже есть все ответы. Я обычно туда попадаю когда делаю копипаст ошибки из консоли.
>>А гуглить инфу как? А вообще у тебя просто подход какой то не такой. Зачем мне гуглить про реквест мапинг? Я загуглю как написать рест сервис на спринге, он мне и выдаст все что надо.
>>1672511 Нет, чел, ты просто используешь неправильную структуру данных для организации памяти. Есть термин, есть слово его обзнащающее в разных языках.
>>1672518 А еще пример хочешь? Опять-таки детали не вспомню. На кан (хан) академи в свое время проходил математику, с самых низов, с first grade, чтоб и англ подучить, и мож какие банальные правила школьные вспомнить. И я помню был ошарашен просто, то ли как он делал вычитание в столбик, то ли еще что-то, но я четко в тот момент осознал, что если бы черт возьми мне так в школе объяснили, я бы на золотую медаль может вышел. Там был совершенно уникальный для россии метод, но абсолютно типичный для американцев, им так в школе преподают, но он настолько проще в восприятии показался. И таких моментов было несколько, до 4го класса дальше я бросил в связи с долгосрочной командировкой и больше пока не вернулся, несколько лет прошло.
>>1672543 Ответ где-то здесь, но я правда не помню деталей. Плюс таких "откровений" было несколько. Кстати, они надобавляли уроков за несколько лет, у меня было 99% (один из видосов не засчитывался). >Как это связано с языком? С джавой или в общем? Смысл моих высеров в том, что англик помогает (ну уж точно не мешает) понять суть вещей - ты читаешь шилдта, кнута в оригинале, проникаешься их мыслями через специфичные обороты и местами юмор, начинаешь думать как они хотели заставить тебя чтобы ты думал. Это непередаваемый экспириенс. Кто на англ. фильмы/сериалы когда-нибудь пересаживался в оригинале после русских дубляжей/войсоверов, тот поймет о чем речь - там даже игра актеров голосом есть, ты наслаждаешься просто тем как они говорят, акцентом там, интонациями, а не что они говорят и что в этот момент показывают на экране. Все, я кончил, удаляюсь.
>>1672565 >начинаешь думать как они хотели заставить тебя чтобы ты думал Вот с этим согласен. Но это по большей части к книгам относится, а не к ответам на СО.
>>1672530 Да не, такая же хуита что и у нас https://www.youtube.com/watch?v=Y6M89-6106I Ты просто на ресурс нормальный нарвался, где умеют хорошо материал доносить, а не как обычно в школе. >>если бы черт возьми мне так в школе объяснили, я бы на золотую медаль может вышел. В 16 лет тебе нахуй не нужны были эти ваши математики, там гормоны, межличностные отношения и ранг в стае куда важнее. Даже если б и хотел, тебе мешали, а учитель по третьему разу объясняет одно и то же потому что Ерохин еще не понял.
>>1672588 Меня эта хуйня в выдаче насколько заебала, что я установил плагин для скрытия ссылок на qaru и ещё нескольких подобных. Причём даже при поиске на английском иногда вылезала.
>>1672565 >>что англик помогает (ну уж точно не мешает) понять суть вещей Для этого нужно язык знать хорошо и понимать что он имел ввиду. А то полфразы вроде понял, остальное не особо. Смысл потерялся. Не лезть же теперь в словарь в 2к20 то за переводом каждого слова. В гайдах такой проблемы нет там весь текст - напишите это, запустите то, помолитесь Говинде, запускайте.
Наш джаватред должен создать сайт - Русский аналог баелдунг, где аноны из нашего треда будут писать статьи и гайды по джава экосистеме, кроме самого языка, потому что и так инфы много.
>>1672586 >>1672543 >>1672565 Перебирал ролики рандомно и что-то на задворках памяти начало всплывать. Возможно, это было не вычитание в столбик, а деление в столбик. Посмотрите хотя бы как они оформляют по сравнению с нами. Первый вариант знаком всем, а второй? Но! Оформление это не то о чем я говорил, там было именно что-то глубокое, какое-то поражающее своей простотой объяснение, которое мне по крайней мере никогда не объясняли в школе или после.
>>1672653 Да ну хуй знает, вроде все то же самое. Наша форма записи даж более логична делимое слева, делитель справа, результат снизу, а у них все перевернуто.
>>1672668 А вот в том то и дело что у них тоже есть логическое объяснение такой записи, они говорят: divide 3 into 1735... Я даже не знаю как это адекватно перевести на русский, чтото типа такого: "сколько раз 3 входит в 1735". Ну то есть для нас это непривычно, задом наперед всё, но там было объяснение, и возможно это меня и поразило, хотя это не точно.
>>1672653 Ты думаешь в школе кому то объясняли как определить что число делится на 3/6/9? сложить все цифры в числе - если полученное число делиться на 3/6/9 то и исходное число делится соответственно на 3/6/9 Максимум на 5 и 10. Или как без мозгоебства умножать на 99, 49 и тому подобные? Программу по минимуму вкинули - ебись как хочешь.
>>1672682 Возможно в том что "разделить на" для ума школьника имеет чуть меньше смысла чем "сколько раз входит в". Не знаю. Не слушайте меня, возможно я чушь несу.
Аноны, есть ли ресурсы подобные ulearn от СКБ Контрура по шарпу или freecodecamp по жсу, но для java-вкатышей. Чтобы не слишком подробно разжевывались азы и было достаточно практических заданий? Джавараш я так понимаю сильно не то?
>>1672161 Нахуй такие задачи давать? Кто вот так данные хранит? Сделали бы сразу CSV или жсон. >>1672439 >зачем нужен спринг Чтоб руками не писать всякую хуйню, вроде чтения объектов из потоков данных, крудов, прочего бойлерплейта. Связывать 9000 классов один в другом парой аннотаций или вовсе без них.
>>1672697 Это тестики чтоли? Ну гиперскил от жидбрейнса можешь порешать. Можно прям в идее. Там по виду так же . Страница с теорией, потом задачи и вопросы Решишь несколько задачек получишь ключ на пару месяцев
>>1672691 Там вроде разные же техники есть, как для деления в столбик, так и для решения квадратных уравнений, например. Через дискриминант это вроде у нас проходят, но я когда школьником был видел, что сама учительница их как-то по другому решала. В вузике тоже препод хуярил их по другому, там почти как в уме. Для быстрого счёта есть специальные техники. Тут не в языке дело, а в желании учителя донести до тебя свой предмет. Вот этот >>1672686 всё правильно сказал. >Программу по минимуму вкинули - ебись как хочешь. У меня это ещё с таблицы умножения пошло в школе, например. Я слишком ленивый был, столько хуйни запоминать, целая страница несвязанных символом. В рот я ебал, лето, я бегать по улицам хочу, а не это говно зубрить. Поэтому я каждый раз в уме считал, запоминая ключевые места. Как индексы из SQL ёпта. Ну типо 6х6 легко запомнить, а значит 6х7 будет 36+6. По этому же принципу мог и дальше считать, там где таблица умножения уже кончалась (11х11, 110+11) мозг только начинается.
>>1672722 Есть задачки по разным темам, есть проекты. Например берешь проект написать кофе машину и тебе подкидывают задачки по темам, которые хорошо бы знать для решения проекта, хотя их можно скипнуть и сразу проектную задачу сделать. Разница в том что по теме это немного текста про стринги например, потом напишите субстринг для стринги чтоб получилось "123". А проект это уровень лаба2, в которой понадобятся субстринги. Хотя конечно можно и наговнокодитью, лишь бы ответ сошелся. Можно вроде как на ревью этот проект заслать, но не уверен. Вобщем напоминает джава раш здорового человека. Но мне тесты не нравятся, я их перерос. Да и вообще азам я учился на курсере duke university
>>1672725 О, кстати, опять про Хана: он упоминал (и показывал вид такой таблицы) что они в школе таблицу учат до 12x12 включительно; возможно связано с тем что у них "дюжины", а не метрическая система, хоть какой-то плюс, лол.
Джаваны, я ещё один очередной вкатывальщик. Посоветуйте онлайн-школу. Какую выбрать? GeekBrains, Яндекс.Практикум, курсы Бауманки? У кого есть опыт обучения в них? Реально, как они говорят, получить профессиональную переподготовку и устроиться после их курсов джуном?
>>1673044 Ну охуеть теперь, то-то джунов в контору моего товарища набирают пачками в надежде хоть кого-то из них научить нормально кодить, а они потом забивают на всё хуй и либо пинают хуи, либо укатываются во фронтенд.
>Hi >I am Java Web Developer and I love it. >Please consider this. >Remove the XML based or Annotations based configuration. >It makes things complicated. >Please allow simple resources inclusion methodology. >It is very complex. >I know you are trying to follow Laravel techniques. >Then follow it completely >It's easy > >Thanks
Есть одна tdlib от Пашки Дурова, написанная на плюсах. С JNI можно вызывать нужные методы, но бля, как? Идея не поймет java.library.path, что в pom.xml - хуй знает. Гугол не помог, надеюсь на вас
>>1674234 Короче, собрал tdlib внутри Java проекта, теперь идея видит нужные пакеты с классами. Только вопрос - насколько это адекватно вообще? Типа мне всегда с собой придется таскать этот tdlib что ле?
>>1674245 Что именно тебе из tdlib надо? Помимо протокола там локальное шифрование, хранение, может чего то еще. Я не стал идти этим путем, а просто реализовал TL Language самостоятельно и все. Велосипед, ага, зато могу дергать их процедуры без всяких либ. На сайте у них там все расписано, и примеров в нете куча.
>>1674518 Если речь не про (де)сериализацию произвольных объектов без схемы, то не приходится, всевозможные JAXB-ы и Castor-ы в проекте давно запилили до меня. Юзаются для интеграции через ESB, для хранения шаблонов документов и прочей хуйни, которую сложно описывать кодом.
>>1674390 Я про это нихуя не знаю, можешь описать подробно как это делать? В интернах этих ваших нашел только два репозитория, активность на обоих 6+ лет назад
>>1668733 (OP) через пару месяцев планирую перекатываться в масквабад на мидол позицию. В своем милионнике год проработал джуном с джавой, но без спринга контора известная так шо на собес думаю попаду. собсна вопрос большой ли акцент на собесе уделяется фреймворкам или больше гоняют по азам и джаве? Подтянуть вообще не проблема когда впервые устраивался дрочил все это
>>1674781 > год опыта, да еще и без спринга > что на собесах спрашивают не знает > считает себя мидлом Откуда же вы такие самоуверенные и ахуевшие без негатива. Знанием устройства ебучей хэшмапы ты на мидловую позицию не прыгнешь. А без знания DI и на джуна завернут.
>>1674808 да не, все по чести сорт оф бигдата git, maven, docker kafka,redis java8/11, concurrencyжестко с этим ебался sql базы и mpp тож юзал паттерны использую на джуна я уже год назад со спрингом прошел в другое место
>>1674808 >>1674817 я просто к тому что повторить спринг и хибер вообще не проблема я ещё давно по ним книги читал и тестовые делал тут дело в другом я собираюсь немножк спиздеть и сказать что немножк с ним работал и как бы тут в просак не попасть
>>1674817 >git, maven, docker >java8/11, concurrency >sql базы >паттерны использую Ещё ворд, эксель добавь. Напиши, что знаешь хоткеи в идее. Можешь открыть командную строку и знаком с линуксом. С руками оторвут. Ведь в мАААскве такие же требования как и в твоём селе, просто платят больше. Никто тебя не будет спрашивать про спринги, noSQL, кишочки хибернейта, асимптотическую сложность обхода красно-чёрного дерева (ты же сможешь без гугла назвать пример, где вообще в джаве оно используется?) в ширину...
>>1674966 Шутки шутками, а джирой то далеко не все пользоваться умеют. Проебанные описания, оценки, релизы, спринты, закрытые тикеты без единого комента - мммм, классика!
>>1674772 Подробно разумеется не могу, треда не хватит. Основная ссылка вот: https://core.telegram.org/mtproto Читаешь, вникаешь про "матрешку дурова": (транспорт(шифрование(сообщение))). Сообщение это RPC-пакеты TL Language. Далее пробуешь создавать авторизационный ключ, там детально есть какие байты как получаются. Далее проходишь авторизацию: https://core.telegram.org/api/auth Ну и собственно это всё - можно слать сообщения API, например messages.getChats: https://core.telegram.org/method/messages.getChats
>>1674971 Да я хуй знает, зачем они там в своём оракле список на дерево променяли в хешмапе. Наколятся своей анашой и ябут друг друга в жопы. Вопрос про хешмапу - это вопрос на ждуна. Притом классический, как про самолёты зеро, ага. У нас тут кандидат в мидлы. Если ты не знаешь особенности базовых коллекций - то собес хуй пройдёшь. Даже на ждуна. Если тебе интересно - гугл всегда под рукой, он тебе быстро подскажет как связаны эти термины.
>>1674864 >ты же сможешь без гугла назвать пример, где вообще в джаве оно используется TreeMap >асимптотическую сложность обхода красно-чёрного дерева Линейная
>>1675117 Хз даже, что они там на синьёров спрашивают, меня подобное на ждуна спрашивали, а я вообще за еду работать шёл. И да, 99% уже работающих это или всякие особенности @Transactional не знает и как-то получает зарплату. >>1675139 >Линейная Ну вот, ты пизданул хуйню, уёбок по ту сторону стола начнёт улыбаться и спрашивать тебя, каким образом происходит обход элементов в дереве, возможно попросит на листочке написать имплементацию BFS, попутно спросит в чём отличие от DFS. Спрашивать особенности самого дерева, наверное, не будут, хотя если к этому моменту ты не начал потеть и краснеть, могут и это спросить. В итоге то, конечно, тебе подскажут, как связаны бинарные деревья поиска и логарифмы. Ты же знаешь, что такое логарифм, правда?)
>>1675238 Это что, на каждом собесе спрашивают как что там сортируется, если по итогу все чем я буду заниматься - вебовые запросы с БД связывать? Так я лучше тогда в жс уйду, кнопки красить за ту же зарплату и divы двигать
>>1675324 Ты в какой-то пещере сидел последние лет 5-10? Это уже давно так. И я не думаю, что со сменой языка что-то изменится. Структуры данных и алгоритмы +- одинаковые везде.
>>1675238 >Обход дерева >Логарифм Малыш, ты сперва хоть узнай что такое обход и чем отличается от поиска, прежде чем выёбываться. > BFS, DFS На первом курсе проходят.
>>1675360 >что такое обход и чем отличается от поиска Мне это нахуй не надо, раз это на собеседованиях не спрашивали. BFS, DFS, всё нахуй, я ж не в яндекс иду, а в маленькую контору за еду сохранять сущности в репозитории. Но всё равно запомню, что это разное. >На первом курсе проходят И через неделю после сессии забывают.
>>1675408 Ну, если просто обойти итеративно все элементы или сделать это с пониманием того, как они отсортированы, то имбирь найдётся в любом случае. Разница в скорости. >понятно из названия Да много что из названия понятно, бинарный поиск, пузырьковая сортировка, инверсия зависимостей, ещё много терминов, которые в своём названии уже содержат подсказку. Тем не менее, раз вопросы про связный список всё ещё задают, значит кто-то на них не отвечает?
>>1675438 Алгоритмы на Java и Алгоритмы. Справочник с примерами на C, C++, Java и Python. По моему брал в Телеге на канале Библиотека программиста. Там по поиску найдешь.
Здарова аноны! делаю клиент-серверную штуку. По задумке пользователи сами будут ее хостить в локальной сети.
сделал гуй для сревера: поля для порта и других настроек + кнопки старт/стоп
Сейчас понял, что сервер фреймворка, который я решил использовать, хуй заставишь стартовать не сразу, а в рантайме по нажатию кнопки.
Пока вижу выход: делать два jar файла - для гуя и для собственно сервера, гуй будет запускать jar-ку сервера. Как это провернуть мавеном? Нужно сделать два независимых модуля, или один в другом? сори если ебланский впорос
Господа, допустим, у меня есть библиотечный класс без исходников, как я могу по нормальному посмотреть список всех его методов без использования документации? Пока знаю единственный способ, это в среде перейти к определению этого класса и там смотреть метадату, где перечислены все методы с заглушками. В C++, например, я смотрел в заголовочный файл и видел полную информацию об интерфейсе класса, могу я как-то тоже самое посмотреть в джаве?
>>1675716 Вот, допустим, в Android Studio я решил создать наследника от библиотечного класса android.view.SurfaceView, попытался скомпилить, пишет, что не определен такой-то абстрактный метод. Определил его, попытался скомпилить, пишет теперь про другой абстрактный метод. Пошел посмотреть на SurfaceView, чтобы скопировать оттуда абстрактные методы и определить все сразу. Посмотрел, таких методов там нет, но этот класс наследуется от какого-то com.android.layoutlib.bridge.MockView, возможно, они там есть. Попробовал перейти, но среда не знает ни про какой MockView и перейти не может, и вот теперь хз что делать
>>1675408 >>BFS, DFS понятно из названия. >>BFS >>На первом курсе проходят. Поиск в ширину (англ. breadth-first search, BFS) Прям так и проходят? Алгоритм бредх фист сирч? >>DFS Distributed File System — компонент Microsoft Windows, использующийся для упрощения доступа и управления файлами, физически распределёнными по сети.
>>1675742 >задрачивать все методы класса Object На каждом третьем спрашивали. >разницу между интерфейсами и абстрактными классами Один раз был такой вопрос. Вся эта хуйня просто наизусть учится за полчаса, как и контракты метода эквалс/хешкод, модификаторы доступа полей, SOLID, O-большое коллекций, иерархия исключений и прочие шаблоны.
>>1675784 ну вот кст да. смотрел какой-то сайт из фака по вопросам для собеса,так там про переопределения equals and hashcode сразу несколько вопросов как это ручками писать. только зачем это все, если в идее двумя кликами их можно сгенерировать?
Сап, впервые пишу в програмаче, уже неделю ломаю себе голову с такой проблемой - я php-программист, работаю, но появилась идея создать свой сервис, в кратце - мессенджер. С серверной частью никаких вопросов нет и уже часть функционала я реализовал, но теперь подступает вопрос на счет клиента. Под андроид и на джаве до этого ничего ни разу не писал. Начал изучать всю эту тему и понял, что нужно писать в Android Studio и на джаве. И теперь стоит острый вопрос что именно использовать под это все дело. Чем глубже я гуглил, тем больше уходил в дебри. Естественно, опыта у меня никакого и некоторых вещей я не понимаю, но хотелось бы все написать не совсем уж хуево, а чтобы более менее прилично. Сейчас картина такая - собираюсь использовать шаблон MVP, Rxjava, Retrofix. Сейчас немного разобрался в rxjava, но по retrofix'у, а тем более, их совместному использованию, вообще не могу найти никаких статей с примерами. Подскажите как быть, может я делаю что-то не так и для моей задачи можно использовать что-то иное, либо же, подскажите ссылки на годные статьи с примерами, желательно на русском, ну и дайте советов.
>>1676585 Да, это конечно надо, но я недавно зашел в тред к айос господам и охуел от всего там происходящего. Всякое желание пропадает это все делать, боюсь, ебнусь это все один делать, а если и сделаю, то к тому времени это уже нахуй никому не надо будет. Единственная надежда сейчас на то, чтобы выстрелить на андроиде и нанять программиста под ios.
>>1675864 Ебать, ну он и мудак. По сути он предлагает: 1) Сделать все объекты сериализуемыми; 2) Сравнивать их по сериализованному значению. Из-за п.2 какая-нибудь сортировка вообще охуеет. Пиздец, как этого долбоеба вообще можно всерьез воспринимать после этого?
Эй, джависты, что сейчас самое нормальное для concurrency? CompletableFuture - говно некомпозируемое. ReactiveStreams - говно тормозное. Есть ли что-то получше?
>JS: Kotlin is also compatible with JavaScript, which enables you to develop client-side web applications and run them in a browser. че? >Native: you can compile Kotlin to native binaries, and can be run under Windows, Linux, iOS, and MacOS. А почему джаву так нельзя?
>>1677608 >Скормил две задачи, как мне объединить их результаты? Зависит от "объединить результаты" конечно, но задача сильно смахивает на задачу для parallel streams - в коллекторе объединяешь что там нужно.
>>1677730 > есть несколько убогих компиляторов Тащемта есть GraalVM, его правда заебёшься конфигурить чтобы вся reflection-based хрень таки скомпилировалась.
Какой же всё-таки спринг стал раздутый. Я очень сильно запутался в этих аннотациях. Их просто миллион и есть много способов сделать одно и то же разными способами. Тесты - это вообще отдельный мир. Запарился! сеньор
>>1678107 Я спринг смотрел последний раз много лет назад, ещё когда бута не было. Работал с легковесными di-либами. Сейчас голова кругом от бута. Вроде многое искаропки, но пока вникнешь, откуда что берётся, конфиг аннотации, тесты - голова кругом.
ХЛЕБУШЕК ТРЕБУЕТ ПОЯСНЕНИЙ
Аноним05/05/20 Втр 20:59:19№1678140470
Почему я могу запиливать класс вне класса test который показан на картинке? Посмните раз и на всегда,твердо и четко что за магия происходит в этой хуйне >public static void main (String[] args)
>>1678140 Можешь не значит должен. Ты же можешь какать в автобусе не снимая штаны и свитер. И публичный класс все равно только один на файл, а у этих без модификатора доступа вообще какая видимость трудно сказать, с одной стороны package default, а с другой это так давно делалось что все уже забыли как и для чего. В общем это старинная фича и так никто сейчас не делает, и ты не должен, если нужен класс в классе, делаешь его private static внутри родительского класса. Про main: этот метод вызывается джавой когда ты ей говоришь "запусти такой то скомпилированный класс"; в args она передает аргументы командной строки.
джавахуисты, кто хочет вкатиться в биг дату? ноэскуэл, хадуп, спарк, хайв, кафка и прочая хуйня нужны синьеры-помидоры или крепкие мидлы с опытом Java от 3 лет или на Scala от 2 лет с зарплатой не обижают (даже из-за рубежа переманивают)
>>1678238 у нас некоторые и не скрывают что заходят на двач или хотя бы друг рассказывал что это такое
>>1678241 у нас с 1 марта все на удаленке. по крайней мере пока. но и до карантина не было проблем поработать из дома если покажешь свою саморганизованность и ответственность, нет проблем договориться так работать напостоянке после карантина
кстати, забыл сказать, что годовая премия 15% годового заработка при зарплатке 250к - бонусом получишь 450к (но может и больше)
>>1678249 > у нас некоторые и не скрывают что заходят на двач Ага, а потом будет тред в программаче СМОТРИТЕ КАКОЙ БИГ ДАТА ВКАТЫВАЛЬЩИК РЕЗЮМЕ ПРИСЛАЛ))
Привет, анон. Как думаешь, не поздно ли начать изучать Spring для бекенда? Насколько я знаю, C# так же пользуется популярностью в бекенде. Что скажешь по этому поводу?
>>1679170 В энтерпрайзе засилье жабы и спринга, шарпик и другие языки тут вообще не конкуренты. Может, в "бекенде, который не энтерпрайз" получше, но не в сфере спринга.
>>1678991 > А ведь рано или поздно появится убийца спринга. Это уже будет новое поколение. Это ж джава. Пройдет лет 10 между его появлением и моментом, когда его юзать начнут. Спрингу тоже лет овер дохуя, но маст хевом он не так давно стал.
Поясните, как ведут себя строки, если я использую их в каком-то методе. Например в таком String addPrefix(String s) { return "main_" + s; } Строка "main_" будет создаваться заново при каждом вызове метода?
Слушайте, а такой вопрос, стоит ли писать мессенджер на чистой джаве, или на каком-нибудь фреймворке? Вы тут спринг обсуждаете, может на нем проще будет?
>>1679429 Ты про андроид или бек? Если андроид, то спринг для него не годится, это серверный фреймворк, а не клиентский. Если бек, и у тебя там сырые сокеты, спринг не поможет, он на HTTP работает (разве что вебсокеты, но они тоже HTTP юзают).
>>1679504 >спринг не поможет, он на HTTP работает Нашему убийце Дурова спринг может и не нужен, но не надо думать, что это исключительно такой веб-фреймворк
>>1679522 А какой это фреймворк? Cloud? Веб. Data? Но куда-то надо ее показывать. Actuator? Эндпоинты веб. Security? OAuth. Аспекты? Не знаю, не использовал. Да, наверное там еще много интересных неизвестных штук, я непрочь ознакомиться, но лично у меня все проекты так или иначе связаны были с веб или мессенджингом (по веб).
>>1679530 Да хоть AMQP, хоть SMTP. Сомневаюсь, что там у анона что-то сложнее сокетов, раз у него такой вопрос. Если бы он юзал HTTP, то вряд ли стал бы спрашивать про спринг.
>>1679531 >Речь не про то, что в спринге якобы только HTTP. А раз так, спринг может пригодится на сервере, даже если сообщения этот сервер принимает не по http.
>>1679641 >>ИсключениеНезаконногоАргумента >>сломать() Гугл транслейтом переменные называл? Интересно как бы ты перевел методы спринга. изначальныйРегистрационныйМетодБобовойФабрикиПослеВычислитель
>>1679968 Это расово-верный Русский язык программирования, а точнее демонстрация возможностей котлиновского синтаксического сахара. С таким "языком" можно ехать на выставку в Сколково, чтобы распилить пару грантов.
>>1679997 Проскальзывала шальная идея запилить плагин на идею, который прогоняет весь проект через гуглтранслейт, заменяет все импорты из внешних либ на алиасы, а их методы обёртывает в extension. А конструкции языка кроме можно сделать либой, кроме fun, val/var, return и т.д.
Аноны вопрос к вам. Хочу вкатиться в джаву, есть друг, мидл-дотнетчик. Имеет смысл поучить синтаксис шарп, под его менторством, а потом пересаживаться на джава стек, параллельно адаптируясь к языку? Или лучше сразу джаву учить?
У кого-нибудь спрашивали про JSP / Servlets на джуна, стоит в это вкладывать силы и время? Какие аналоги у JSP? подозреваю, что HTML/CSS/Bootstrap и прочее со стороны Frontend, которое как-то связали с бэком
>>1680097 Не спрашивали. Можно поверхностно пройтись за вечерок, чтобы иметь представление и мочь написать хеллоуворлд. Больше не нужно. JSP был заменён шаблонизаторами типа thymeleaf и freemarker, а они в свою очередь заменены SPA в виде всякие реактов и вуе.
>>1680100 Ну и проблемы у тебя. Можно добавить префикс, к примеру org._9999. Да, это формально будет другой домен, но это не играет особой роли, такое соглашение придумали лишь для снижения вероятности совпадения имён пакетов. Разве что другой джавист зарегает этот домен, но это ещё менее вероятно, чем то, что тебе придётся отказаться от этого домена и переименовать пакеты.
>>1679154 >>Что за ноунейм? https://www.youtube.com/watch?v=AshxbePAbCM Справа от Жеки и Баруха. Один из персонажей джава комьюнити. Пока Жека потрошит спринг, Бугаенко рассказывает что ваш ООП неправильный слыш купи книгу
>>1680494 Баруха кстати терпеть не могу тоже. Клоун какой-то. Борисову за потрошителя спасибо. Ему бы ненужной артистичности убавить тоже, и было бы идеально
hueta = String.valueOf(jopa.getZalupa()); govno.setHuinya(hueta); ? Проще говоря, стоит ли плодить лишние сущности и улучшит ли это читабельность кода?
>>1680607 Линию видишь справа беленькую? Вот код должен до нее быть. Если govno.setHuinya(String.valueOf(jopa.getZalupa())); вмещается до нее, то и отлично. Ну и плодить переменную только для того, чтобы один раз ее использовать на следующей строчке, - это моветон.
>>1680623 Это так не работает. Можно написать в один оператор хоть в 500 символов, но не в одну строчку, а с переносами, чтобы не заходить за линию. Всевозможные лямбды, стрим апи и билдеры так и пишутся.
>>1680607 Главное правило - чтоб это читать было удобно. Сборщик мусора потом лишнее всё равно уберёт, не парься. А вот глаза ломать над хуетой, написанной на 50 строк, не нужно.
>Следовательно, нужно стремиться к тому, чтобы классы были как можно более компактными, но в разумных пределах! Ведь классы, реализующие лишние функциональные возможности, делают код сложным для понимания и плохо структурированным, но классы со слишком ограниченными функциональными возможностями приводят к тому, что программа становится неоправданно фрагментированной. Как же найти золотую середину? В поисках ее наука программирования превращается в искусство программирования. Многие программисты считают, что соответствующие навыки приходят с опытом.
>>1681289 Что за разговоры? Мне регулярно попадаются классы-сервисы на 2-3К строчек и методами по 200. Рефакторить всем лень, оставлять как есть удобнее, и получается, что лучше компромисса, чем лапша из пррцедурного программирования, ещё не придумали.
>>1681381 В этом никакого смысла нет. И переменную до цикла объявлять в этом случае смысла нет. И вообще это уже лет 5 можно сделать через .forEach(System.out::println). Возможно, это просто начало книги и он основы так объясняет, не знаю, не читал.
>>1681157 >>return Это просто выход из метода >>заместо break Это выход из одного цикла, но не из метода. Такой код идея подчеркнет, а компилятор просто выкинет.
>>1681820 Если энтерпрайз и хайлоад - то джава. Если десктоп и игори - решетка. Может шарпеи и добрались до бэкэнда, но вытеснить джаву в ближайшие лет 10-20 не выйдет. Как они там в бэке по сравнению с нодой/питоном хз.
>>1683750 Уже миллион раз поясняли, даже в этом треде было. Integer содержит кеш объектов, по умолчанию -128..127, но меняется параметром в командной строке. Эту инфу несложно найти самому, заглянув в соответствующий класс.
>>1683731 Ты хабру или еще какое говно почитал и умничать пришел? дефолтное значение для пула интежеров 128, его можно изменить, но нахуя? А если и станешь, то с лонгами все равно обосрешься - там константы Объхты сравнивают через equals, тебе же идея это подчеркивает и заменить предлагает, че ты такой тупой?
>>1683772 Очевидно, что чем числа ближе к нулю, тем чаще используются. Поэтому оптимально создать заранее примерно в таком диапазоне, чем потом не было ебических тормозов при создании жохуищи копий чисел типа 100. Но и не больше, чтобы жаба не жрала ещё больше оперативки, они и так жрёт дохуя.
>>1684836 В каждой второй строчке map/reduce/flatmap, в каждой третьей функциональные интерфейсы, на собесах спрашивают про монады, лямбды уже даже из СУБД на меня смотрят и ехидно подмигивают стрелочками. Но раз ты сказал, что не надо, то я с тобой спорить не буду.
>>1679131 Он конечно часто специально набрасывает, но все таки у него аргументированная позиция. Не обязательно же с ним соглашаться на 100%.
Например https://www.youtube.com/watch?v=99mU1gSLbkU название специально провакационное, но по сути то все верно. Автоматизируйте все - тестирование, релизы, деплоймент и не идите на компромисы - упал тест - нахуй релиз, починишь придешь.
>>1685238 >Это ещё не ФП. Ты слово "основы" пропустил? >функциональные интерфейсы Stream API, надо было так написать. А уж ты сам разбирайся, где там фп, где конкуренси, где ещё что-то. В моём мозгу ассоциации проходили примерно так "Опшионал ->Где я это видел?->Да это ж мейби из хаскеля!->А, да это ж фп" >А единороги на собесах тоже бывают? Не видел. Вопрос про монады (в математическом и более прикладном смысле) был у меня на собесе в одном банке.
Сохранять массив чисел как массив из SQL запроса и сразу его маппить? Нет! Сохраним его как стринг, а потом руками будем убирать [] и сплитить по запятым! Ахуеть, я думал такое только в анекдотах бывает, пока на работу не устроился.
>>1685364 Нормализация порой обходится слишком дорого, и приходится идти на уступки в виде денормализации. У меня было такое, что при сохранении 100500 записей (масштаб реально такой был) транзакция тупо не укладывалась во время и откатывалась. Пришлось писать через запятую.
>>1685570 У нас OpenAPI 2.0 там такие выкрутасы невозможны. Максимум | schema: | type: array | items: | type: object но на практике мы таким не пользуемся, просто используем объект с именованными полями.
>>1685407 Я хуёво выразился, наверное. Из бд приходит массив чисел. Он сохраняется как строка в сущности. И потом обрабатывается обратно в массив. String result = Select Array From table грубо говоря. Я хз как там типы приводятся, неважно. А потом result обрабатывается, из него удаляется в начале и конце [], а потом сплитится через запятые и вот на выходе массив чисел, который куда-то там идёт дальше. Это как отдельный метод идёт, сделан на страницу кстати. Преобразование строки "[1,2,3]" в 1,2,3. Пиздец! Я сначала понять не мог же, почему там в одной строке идёт стринг, в другой уже числа, чзх вообще происходит, а потом когда осознал то заорал в голосину.
>>1685798 Spring in action Потом посмотри Spring-потрошитель от Женьки Борисова. Если всё понятно - ты чего-то знаешь про Spring и на интерна, а может и джуна, пройдешь
Помогите с HtmlUnit. Хочу просто загрузить страничку с js-скриптом: https://pastebin.com/RJAacgUk Но js движок в HtmlUnit ругается на то, что в js скрипте "unterminated string literal", видимо, потому что там используются multiline шиблонные строки https://stackoverflow.com/a/805113 И из-за этого я не могу вызвать ни одну функцию из этого js скрипта, просто выбрасывает ошибку, что функция не определена. В обычном браузере никаких ошибок с unterminated string literal нет. Пробовал разные браузеры ставить, но всё равно не работает.
Как это можно пофиксить? Версия HtmlUnit самая последняя 2.40.0, если что.
>>1686012 Угомонись, парень скрапит голых тётушек на рабочий стол, благородное дело.
>>1685965 С HtmlUnit не помогу, у меня собственный велосипед для скрапинга. Ты уверен что тебе нужен js движок вообще? В данном случае я бы подергал за апи напрямую, вроде все вменяемо.
Сап, двач. СПб, вjobываю в хорошей компании, получаю 150к на руки. Если судить по зп, то МИДДЛ ИЛИ ЕЩЁ НЕТ? Стремаюсь спрашивать начальство, типа если миддл и спрашивает об этом, то тупой миддл, а если джун - то охуевший джун.
Возможно ли в коде задать какие-то дополнительные ограничения для компилятора? Какой-нибудь строгий режим или что-то такое. Например, если в свиче по енаму обработаны не все значения, чтобы компиляция не проходила.
>>1687244 Вопрос нахуя? Если критически важно избежать создания инстансов - сделай класс абстрактным. Тогда его даже через Unsafe не инстанциировать. Если просто как часть API - то простого приватного конструктора хватит.
>>1688436 > Наконец-то эти два шизика отметились, теперь можно и перекатывать. >>1688444 > >>можно и перекатывать > Перекат на 1к делается Более или менее в java треде жизнь начинается после бамплимита. Создашь тред, так понабегут дурачки с воплями, что жаба - ненужная помойка
>>1678217 >джавахуисты, кто хочет вкатиться в биг дату? >ноэскуэл, хадуп, спарк, хайв, кафка и прочая хуйня >нужны синьеры-помидоры или крепкие мидлы >с опытом Java от 3 лет или на Scala от 2 лет >с зарплатой не обижают (даже из-за рубежа переманивают) нужно еще
>>>1678229 >присылай резюме @jvmguru >ктсати, если кто имеет опыт от года со Spring - тоже присылайте
>>1678238 >Щас бы палиться что ты двачер некоторые уже кидали. моя цель - закрыть дыры в штатке, а не палить вас
>>1689463 Да ваще охуеть можно с этой ебически сложной стековой JVM, вся эта изичная хуйня типа UB, CISC x86, FPU, прерываний BIOS и системного API просто нервно курит в сторонке и учится на раз-два.
У меня есть приложение на спринг бут + хибернейт, нужно добавить возможность менять роли юзера. Как изменить здесь роли, если они хранятся в виде ссылки? Или как это гуглить вообще
Может кто пилил хеш-менеджер на спринге? Интересует Caffeine. Щас увидел на проекте эту ебалу, я хуй пойми вообще чё там, как. А делать надо. Гайдец бы какой с примерами было бы вообще шикарно.
>>1689693 Не хранятся они в виде ссылки. Хранятся они в базе, где есть какая-нибудь табличка из колонок юзер_ид и роль_ид. Ссылка же указывает на роут, роуту соответствует контрллер, контроллер (не напрямую) дёргает базу. Если при GET-запросе к твоей ссылке сервер возвращает список ролей, то можно сделать обработку аналогичного POST-запроса по этой же ссылке (ну или другой) и написать контроллер, принимающий JSON-ку со списком, и этот контроллер будет уже обновлять данные в базе.
В общем, гугли понятия REST и MVC и то, как они организованы в спринге.
Надо сделать простенький сайт на яве: окно, пара кнопок, пара ползунков. Как это сделать? Какие фреймворки, технологии гуглить? Может слова ключевые какие дадите? Вообще нет ни единой мысли. Никогда не сталкивался с этим.
>>1690043 >>Надо сделать простенький сайт >>простенький Wordpress, JS, PHP, Python. Хотя может тебе и просто html хватит. >>сайт на яве Spring MVC + Thymeleaf/FreeMarker + Boostrap.
как распарсить это в список атомов Jackso`ом? делаю у атома два поля с аннотациями @JacksonXmlProperty(isAttribute = true) и @JacksonXmlText
И создаю поле List<Atom> в классе. но это не работает
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid definition for property `` (of type `...package.Atom`): Could not find creator property with name '' (known Creator properties: [type, value]) at [Source: (File); line: 1, column: 39]
Зачем нужен какой-то JWT, если можно просто токен передать в body или в хедере? Объясните, пожалуйста. Не понимаю. И есть ли какое-то название для второго варианта?
>>1691042 Уже сам разобрался. Под вторым вариантом я имею в виду, что токен хранится в БД, и когда клиент отправляет токен, то мы лезем в БД и ищем юзера по токену. А в случае с JWT бэкенд не лезет в БД вообще видимо
Ищешь что то по джаве для веба, предлагают свинг, да еще и на эклипсе/нетбинсе. Как вообще можно этим пользоваться, если ты жава программист? Вроде и идея совсем недорого стоит, тем более с зп программиста. Проект на джаве? Ну вот джерси, джакарта. JSP и JSF это то что тебе надо в 2к20 году! Ищешь спринг. Ага вот тут проект проект целиком. Ага дто, слои, джейсоны для фронта. Вроде понял, но мало. Смотришь следующий. Тут МВС с шаблонизатором фримаркерспасибо что не jsp, дао нет, кладем все в модель. Так, а что в третьем проекте? Микросервисы с месенджером. Ну охуеть теперь. Репозиторий примерно такой же как в прошлом проекте, но анотации на полях совсем другие. База данных не постгрес, а мускл? Ну это ж наверное похуй, ведь JPA! А че спринг не запустился? Мускл не смог таймзоны выставить нормально и хибернейт упал. Спасибо стак оверфлоу за ответы на любой стектрейс! Эксепшен хэндлинг вообще хуй знает как делать. Свои эксепшены/спринговые/опшионал/валидация. Чекед/анчекед вперемешку. Как все это собрать воедино то и написать что то больше hello,{username}! Из всех проектов пока только 1 нашел более-менее внятный на спринге, но и там только юзерсервис и обвязка. Сайт на который можно залогиниться(и имеил по коду подтвердить, как без этого!) Зато hateoas, валидация, дто с мапингом и все крутится на томкате в докере на амазоне.
>>1691141 В чём вопрос? Не зацикливайся на чтении чужих проектов, а пили свой. Попутно доучивай необходимое по туториалам и докам. В нулевом проекте нет ничего, кроме минимальной конфигурации, чтоб всё необходимое работало, и больше ничего. Дальше пишется логика и впиливаются по необходимости всевозможные валидации, маппинги, очереди, секурити, вебы. Но впиливаются они при возникновении реальной нужды в них, а не заранее.
>>1691153 Так книги - точно такие же хэлоуворлды, только текстом. 100500 способов настроить конфиг. Какой то конкретный момент нагуглить я могу, а вот общей картины не хватает. Как строить архитектуру? Нужны дто между сервисом и контролером или в модель все фигачить? Один дто на сущность или на каждый запрос отдельно? Бест практис какие-нибудь. Я для этого и смотрю всякие видосы от васянов с юдеми "как сделать хуйня-нейм от и до".
>>1691170 Всё-таки лучше Васянов не смотреть. Правда, такого говна понахватаешься. А ты работаешь? Вообще, такое с опытом приходит обычно. А по книгам - не знаю, мы наверно разные книги читаем. Я как раз в книгах черпаю общую картину, а за деталями лезу в доку.
>Нужны дто между сервисом и контролером Иногда нужны, иногда нет. Может у тебя сервис не только http-контроллер вызывает, а какие-нибудь другие модули дёргают или какие-ниудь события и прочее. Тогда я бы отдельную дто для контроллера, и отдельную для сервиса делал. Для http-дто может быть своя специфика. Аналогично Entity для JPA ну или какую-ты там либку для слоя данных юзаешь.
>Один дто на сущность или на каждый запрос отдельно Тоже по ситуации. Если архитектура рест, то скорее всего это будет одна сущность. А может где-то на каждый запрос лучше создать отдельно.
>>1691121 Вот это вообще забей нахуй. Год назад научил бабку пользоваться ютьюбом, так она по изотерике угорела с утроенной силой, пзидец, сисяна из всех щелей сука лезет смотреть начала. Сука, что не сектант уровня кашпировскоо или йобамаг в йобашлеме который пророчествует будущее по вспышкам - то пан ебаный хохол, тысячи их, астрологов и херомантов. Просто заполонили нахуй, и просмотров у них тыщ под 600
>>1691172 > Project Loom Загуглил, что это. Думаешь, на котлин бегут исключительно ради компайл-тайм корутин, а не потому что всех заебал синтаксис жабы?
>>1691182 Я вот реально не понимаю жалоб на синтаксис. Я писал на котлине примерно полгода. Не понравился. Такое чувство, что синтаксических изменений "лишь бы не как в джаве". Null Safety ещё более менее плюс, но я как-то привык уже аннотациями всё размечивать и Optional юзать.
>>1691178 >>А ты работаешь? Вообще, такое с опытом приходит обычно. Не, только собираюсь вкатываться. Пару недель улажу дела и пойду по собесам. Я догадываюсь что многие вопросы отпадут когда я увижу как это на практике делается, но пока не особо понятно как и почему. Про книги - вот есть например Pro Spring 1к страниц. Читаю, и вроде по делу, но про DI я и так знаю, как там контекст с бинами работает понятнее было у спринг потрошителя. Углубляться в какие то детали особого смысла нет - забуду без практики. Да и в гайдах на каком-нибудь баелдунге или на спринг.ио примерно тоже можно найти. Думаю уже на уровне мидла буду вникать в нюансы. >>Иногда нужны, иногда нет Ну вот допустим на том же юзере. Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг, но это с перспективой на микросервисы всякие их тоже надо поверхностно изучить, они вроде как в тренде, да и не хочу давать сущности из базы контролеру, там хэши паролей и просто ненужная ему инфа. Так вот эта дто, что идет в сервис из контролера может быть большой со всеми полями сущности(имя/пароль/емеил/список любимых тредов двача), тогда просто замапятся все поля из реквеста, оставив часть пустыми. А можно делать отдельные дто для каждого обращения к сервису - регистрация/смена пароля/обновление профиля - тогда пустых полей не будет, но будет больше классов. Вообще я склоняюсь к последнему, чтоб ничего лишнего не передать контроллеру да и проверять наличие пустых полей проще.
Что мне читать чтоб получить ответы на подобные вопросы? Другие книги по спрингу поискать или гайды какие то? Или таки осилить книгу, хоть она и весьма занудная
>>1691202 >моделмапер или дозер Знакомые вещи. Поиспользовал их и понял, что мне проще вручную конвертер написать, чем трахаться с этими либами. Гораздо нагляднее. Но это субъективно. >Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг Да, правильно. Так обычно и делается. >регистрация/смена пароля/обновление профиля В смене пароля скорее всего можно и без дто обойтись, просто перечислить параметры. Обновление - стандартная дто (её и для создания), в базе апдейтишь все поля, которые пришлёт фронт. Если фронт апдейтит одно поле - то все старые поля он всё равно присылает. Регистрация - хз, надо смотреть. Если ты для смены пароля создаёшь общее дто и заполняешь только пару полей - это точно плохо (если конечно я правильно всё понял).
>Что мне читать чтоб получить ответы на подобные вопросы Да просто придёт с опытом. Само придёт, когда ощутишь боль от неправильных чужих или своих решений. Тебе сейчас самое главное - это идти работать. Получай опыт. Можешь договориться с тимлидом (или кто тебя будет сопровождать первое время), например, что будешь составлять вопросы и в конце дня их спрашивать (чтобы не отвлекать во время работы). Я прямо ручкой в блокноте писал и ответы тоже записывал, чтобы не забыть. Скорее всего тебе попадётся адекватный коллега и будет отвечать на нубские вопросы.
>>1691202 > Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг,
За ~10 лет видел сто разных способов сделать это, кто-то делает так как ты, кто-то пишет свои конвертеры, кто-то вообще энтити сразу хуярит в рест. Я сам остановился на самодельных конвертерах как этот анон >>1691211 так как это нагляднее, и например если добавили новый филд в энтити то нужно явно пойти и прописать его в конвертер если хочешь его заэкспозить в апи. Тоже хотел как-то найти какой "правильный" способ это делать, но так и не нашел ничего стандартного, все делают по-разному.
>>1691202 Тебе уже выше анон ответил, но я тоже добавлю. Спринг про по диагонали читай, там дохуя ненужной хрени. Секцию с конфигурацией черех xml я вообще пропускал, щас всё на аннотациях. Кучу всякой подкапотной хрени вообще не найти, пока не столкнёшься с ней сам ты и знать о ней будешь. По поводу дтошек и прочего - это действительно только на опыте приходит, когда будет неебический проект на 9000к строк кода и начнёшь в нём копаться. По архитектуре - я вот Мартина читал, мне норм зашло. И, да, тебе пора по собесам бегать. Свои круды с сохранением сущностей в постгресс ты ещё напишешь на тестовых, не заморачивайся.
>>1691910 Так действительно правильнее, но это режет слух и глаз, поэтому приняли сокращать до фактори если фабрика. А bean добавлять только если требуется специально указать что это бин, а не какая-нибудь скажем удаленная RPC фабрика (но тут тоже будет FactoryDataAccessBean, лол).
Привет, джаватред. Пишу тебе снова спустя полмесяца or something. Вижу, постинг упал, но мы же раньше были такими дружными, помогали блаженному, у нас даже 10-летние опытные синьоры отписывались. Что с вами стало?
>>1692399 Бодишоп — основная форма существования АйТи почти на всей постсоветской территории. Морфологически является слиянием двух англ. слов и дословно переводится «магазин тушек» или «магазин тел» и в буквальном понимании описывает основную бизнес-модель разработки ПО. Некоторые Ыксперты утверждают, что более правильным понятием будет «brainshop», хотя, как доказывает рынок, правильным семантически значением будет именно первый вариант.[1]
>>1692399 Это как контора-прокладка. Вася пишет код за 100 рублей в час, Джону нужно написать сайт за 300 долларов. Но сам морочиться с организационной частью он не хочет. Тут появляется хитрый уроженец Одессы, который собирает Васянов под своё крыло и продаёт их Джонам втридорога, забирая половину себе. Потогонка, постоянно меняющиеся однообразные задачи, наебалово во все поля, говнокод (ведь джуниоров продают как опытных), кручение на хуе трудового кодекса. >>1692408 > почти на всей постсоветской территории Опять хохлы судят по себе. Я хз где в ДС найти бодишоп, если спецом не задаться такой целью. Тут банк, там банк, здесь блядь пыньдекс, там мейлсру, тут вообще стартап.
Может кто объяснить, как правильно юзать хибернейт? Переписываю приложение с чистого JDBC на хибернейт, и не могу понять, как мне блять сделать норм транзакции. Есть дао юзера, есть дао платежей, нужно в ОДНОЙ транзакции обновить баланс юзера через юзерДАО и создать платеж через платежДАО. По гайдам в каждом методе ДАО нужно открывать сессию и стартовать транзакцию, но это хуйня какая-то. Может кто помочь (только без спринга плиз)?
>>1692690 > нужно в ОДНОЙ транзакции обновить баланс юзера через юзерДАО и создать платеж через платежДАО. По гайдам в каждом методе ДАО нужно открывать сессию и стартовать транзакцию Ну да, очевидно, в твоем случае такой вариант "по гайдам" не подходит. Открывай не в каждом дао, а там, где тебе нужно. В чем именно сложность?
>>1692690 >нужно в ОДНОЙ транзакции Я хотел написать сначала @Transactional(propagation = Propagation.MANDATORY), но увидел потом >только без спринга плиз Так что хз. >>1692717 >Писать в десять раз больше кода с кучей возможных ошибок, вместо миллион раз проверенных автогенерируемых методов. Ты и массив обходишь по-старинке, с итератором?
>>1692726 Стримами обохожу. Новое - не значит лучше, показательный тому пример - Gradle. Да и ORM как явление, у них нет никаких преимуществ, т. к. они ничего не упрощают, только усложняют.
>>1692728 Я вот вообще чистым хибернейтом не пользовался, сразу вкатывался в спринг. Объясни мне, как использование автогенерируемых методов вроде findFieldById вместо написания их руками может быть сложным? В редких случаях, когда действительно нужно написать что-то на SQL, просто хуяришь над методом native и пишешь на SQL.
>>1692737 Да. Либо, чтобы не таскать как аргумент, изобретать что-то в духе того, как работают менеджеры транзакций в том же спринге - укладывать в ThreadLocal.
>>1692690 Транзакции должны стартовать на сервисе, если это не просто хеллоуворлд. >>1692748 Не обязательно. Можно Дао создавать прямо на сервисе каждый раз и в конструктор передавать сессию. Покрасивее будет, чем в каждый метод пихать.
>>1692750 Этот прав, я нахуй ORM. Это прикольно, когда у тебя тупой круд. Но что-то посложнее проще на sql писать. И отлаживать запрос легче в разы, и оптимизировать. С ORM больше времени потратишь.
>>1692750 А у тебя всегда будут запросы уровня хеллоуворлда, вот для них эта хуйня и нужна. Для чего-то сложного юзай натив. Смешивать же можно. >Хуита с @OneToMany, @ManyToOne А чё там? Если правильно всё делать, то хибернейт за тебя объединяет всё, создаёт промежуточные таблицы и реализует нужные связи. Тебе остаётся только классы писать, а не искать где ты в SQL запросе запятую пропустил. >ниасилил Там пару статей прочитать, например https://dou.ua/lenta/articles/how-to-use-hibernate/ и всё, круды сами себя писать будут в большинстве случаев.
>>1692761 Ок, просто у меня дао создаются в фабрике 1 раз, т.е. на все инстансы сервисов у меня 1 инстанс каждого дао. Я так понимаю, это делать неправильно?
>>1692739 >хибернейтом сложно пользоваться без спринга Я такого не писал. Да и сам по сути ньюфаг, использовал сразу спринг после ликбеза по JDBC. Вообще не знаю, как оно там всё по отдельности, для меня это всё едино, даже не отличаю где какие аннотации от спринга, где JPA, где ещё что. С самой джавой такая же история, не представляю как решать задачи без Optional, потоков, лямб и прочих try catch with resurses.
>>1692772 В твоём случае, если один инстанс дао, то придётся передавать сессию как аргумент в каждом методе. Или создавать дао каждый раз, чтобы передать сессию в конструкторе. Сам решай, что красивее. Если хочешь, то здесь можно применять абстрактную фабрику (чтобы создать дао), но не обязательно
В реале конечно это будет один инстанс дао, а всю магию с транзакциями сделает спринг.
>>1692787 С вот этим "за тебя создает таблицы" тот анон перегнул, конечно, но общий посыл поддержу - хибернейт не для НЕтривиальных джойнов, (их никто не запрещает писать нативно) а для большого количества тривиальных. От которых никуда не деться все равно, и которые иначе заебешься писать и поддерживать руками. Главное понимать, что это не волшебная херня, которая позволит вообще не уметь sql, а скорее что-то вроде такого генератора типовых запросов.
>>1692787 Да. На проекте почти всё на нём написано, что можно написать, хотя я бы в половине случаев использовал спринг репозиторий просто, но кто я такой чтоб выёбываться, что дают то и делаю с заваленным ебалом. JDBC там, где проще написать на нём. Ну это когда запрос на страницу и половина его на диалекте. И у меня нет никаких проблем со всем этим, когда делаю свои таски.
>>1692771 > всегда будут запросы уровня хеллоуворлда, вот для них эта хуйня и нужна В принципе, у нас иногда для нового простого функционала иногда юзают, при усложнении почти всегда перепиливают на JdbcTemplate.
< А чё там? В этом-то и дело, что что-то. С нативными запросами нюансов нет, а тут они иногда возникают, и каждый раз приходится гуглить.
> пару статей прочитать Добавил в закладки, может, когда-нибудь изменю своё мнение об ORM.
>>1692828 >у нас иногда для нового простого функционала иногда юзают Я тебе про это и толкую. Для хуйни, буквальных CRUD-операций, его и надо юзать. Это код уровня геттеров-сеттеров, пускай машина им занимается. Там читать то нечего, это уровень ломбока, на мой взгляд. Вот когда всякая ебала, вроде встроенных сущностей, транзакций, тут уже фломастеры. Мне удобно пару аннотаций использовать, тебе может ещё как, вкусовщина же. Ну и от команды зависит, наверное. Я вот точно, 100% в ближайшие годы выёбываться на эту тему не стану и буду делать так как скажут.
А можно ли в мавене поставить х32 бит? Я сотворил javafx программу (жарник) юзая х64 ждк на своем компьютере, но она не запускается на компе с х32 операционкой. ELF: ELFCLASS64 (Possible cause: architecture word width mismatch)
>>1693181 На идиотах. Как можно платить за возможность писать бесполезные сообщения в чат или спрашивать хуиту с донатом? Лучше бы в ломбок донатили, они реально дело делают.
На вход методу подается коллекция итераторов. На выход он должен вернуть один итератор. Например, подается коллекция из трех итераторов: 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3
Метод должен вернуть один итератор следующего вида: 1 2 3 1 2 3 1 2 3 1 2 1 2 1 2 1 1 1 1 1
То есть, берем next(), далее идем к следующему элементу коллекции, вызываем у него next() и т.д. Как можно решить быстрее чем за O(n^2)?
public Iterator<Integer> method(Collection<Iterator<Integer>> iterators) { // method }
>>1693838 В джаве принято экономить память людей, на память машины всем уже давно похуй. Можно сервак помощнее докупить, если что. Нанимать сеньора, чтоб он разобраллся че там индусы написали чтоб 2 байта сэкономить дороже.
А что там в идее 2020 сделали? Раньше в мавене у dependency в <version> можно было ctrl + пробел нажать и он показывал какие версии есть из самых новых скорее всего из mvnrepository. А сейчас так сделал, показывает только те, что я ранее писал. Но в старой идее это был точно не кэш и не история моей писанины.
Прочитал Шилда, Блоха, сделал все задачки уровня lab1 на codingbat. Теперь планирую читать Spring in Action. Правильно делаю? Заранее спасибо за советы, эсли кто-то ответит..
Парни,доброе всем. У меня есть проблема со след задачей
В ArrayList с обьектами одного типа и двумя полями - день и число,найти день с общей наибольшей суммой,дни могут повторятся,расположен в возрастающем порядке
Я уже вроде бы реализовал алгоритм , но он нихуя не работает,можете пару строк кода написать, пожалуйста?
Я ваще не понимаю, почему код не работает и чувствую себя идиотом,помогите, пожалуйста
>>1693427 Что именно вызывает сложности? Берешь и без задней мысли делаешь свой итератор, на вход принимая что угодно. Для тебя важно понять что итератор это еще НЕ выходные данные, это инструмент выдачи данных, он - lazy, т.е. в момент создания и выдачи итератора из метода у тебя еще нет никаких данных вида "1 2 3 1 2 3 1 2 3 1 2 1 2 1 2 1 1 1 1 1", они появятся только тогда когда с выданным тобой итератором начнут работать (в пограничном случае - никогда).
>>1694514 >>1694654 В догонку. >расположен в возрастающем порядке Что это значит, где детали, по какому полю в возрастающем? В зависимости от деталей max это может быть банально последний элемент в списке, список же уже отсортирован. В общем я ебал так задачи объяснять, хоть бы кусок кода бы кинул чтоли.
>>1694514 Если нет отрицательных чисел, то просто бери последний день. Пару минут в гугле: LocalDate maxdate = dates.stream() .max( Comparator.comparing( LocalDate::toEpochDay ) ) .get(); Тебе надо будет компаратор чутка изменить, взять object.getDate сначала.
>>1694514 Если возрастающей порядок - это по дате, то у тебя все показания за определенный день лежат рядом. Все что нужно - это идти по списку и суммировать значение за текущий день. Когда начинается новый - сравнивать сумму текущего с суммой лучшего предыдущего (на первый день лучшего предыдущего нет, конечно же). Если сумма текущего больше, то он становится лучшим предыдущим. Всё. Сложность алгоритма линейная.
Прохожу курс и застопорился на вроде несложном задании по моделированию игровых автоматов. Есть у кого-нибудь минутка мне разжевать? Желательно в телеге, заранее спасибо
>>1695522 Мало кто хочет целенаправленно изучать то, что умирает, нужно всё меньше и не пригодится вообще уже лет через 5. Если и учить, то ровно настолько, чтобы решить какую-то проблему здесь и сейчас и забыть.
Написать программу Java, которая моделирует свойства, поведение и взаимодействие объектов в этой галерее игровых автоматов. Вам также потребуется тестовый класс, который содержит главный метод. Используйте главный метод для моделирования определяющих действий программы, таких как создание экземпляров объектов и считывание карт. Все поля должны иметь значение private. Предоставьте метод получения и все необходимые методы установки.
Карты
Магнитная полоса на игровых картах имеет ограниченное место для хранения и не имеет вычислительных ресурсов. В картах сохраняется информация о текущем кредитном балансе, балансе билетов и номере карты. Ни один баланс не может быть отрицательным. Отдельные карты не способны ни выполнять вычисления, включая простое сложение, ни анализировать возможность того, что их балансы могут стать отрицательными.Каждая карта создается с уникальным целочисленным идентификационным номером. Хотя каждая отдельная карта не способна выполнить простое сложение, тем не менее, можно выполнять вычисления со свойствами, относящимися ко всем картам.
Игры
Для игры на автоматах требуется определенное количество кредитов. Каждый игровой автомат оснащен считывателем магнитных карт и ЖК-дисплеем. При считывании карты уменьшается ее баланс, но слу чайным образом выдается неотрицательное количество билетов. Выведите номер карты, число выигранных билетов, а также новую итоговую сумму. Если на карте недостаточно кредитов для игры на автомате, должно выводиться соответствующее сообщение.
Категории призов
С каждой категорией призов связаны название, количество билетов, требуемое для завоевания приза, и число элементов этой категории, оставшихся в терминале. Призы никак не связаны с терминалом, к которому они относятся.
Терминалы
Каждый терминал содержит считыватель магнитных карт. Терминал принимает деньги, которые преобразуются в кредиты на карте. Деньги принимаются в виде целых чисел. Кредиты выдаются в соотношении 2 кредита на каждый рубль. Игроки могут использовать терминал для проверки балансов своих карт. В выводе также должен указываться номер карты. Между картами можно переносить кредиты или билеты, полностью или частично. При доступе к кредитам или билетам всегда должны выводиться балансы карты. Наконец, в терминалах билеты можно обменивать на призы. Если на карте недостаточно билетов или если в терминале нет приза конкретного типа, должно выводиться сообщение об ошибке. Должно выводиться сообщение о присуждении приза и о количестве призов нужного типа, оставшемся в терминале. Терминал предлагает 3категории призов.
Главный метод
Создайте экземпляры 2 карт и любых других объектов, необходимых для тестирования вашей программы. •Загрузите кредиты в каждую карту. •Сыграйте в различные игры, используя обе карты. •Перенесите баланс кредитов и билетов с карты1 на карту2. •Запросите призы, используя карту 2. •Попытайтесь сыграть в игру и запросить приз, используя карту1. •Выполните любые другие действия, необходимые для тестирования вашей программы
>>1695895 Да. Так-то и без них можно хеллоуворлды писать. Но для понимания лучше их знать. Spring MVC использует DispatcherServlet, а Security - сервлетовские FIlter.
>>1692988 Байткод не меняется в зависимости от разрядности CPU, архитектуры и ОС. Хочешь 32 бита - запускай на 32 битной JVM. Если нет нативных компонентов (типа SWT), то все будет работать.
>>1696352 Первые версии FX были полностью на базе Swing и ничего не требовали, но как я понял сейчас это не так. И тебе нужна сборка FX под твою ОС и разрядность.
>>1696578 >>1696129 Да ладно вам, не старайтесь. х32 уже уходят в прошлое. У многих 32-бит система стоит либо из-за лицензии винды (х32 дешевле), либо они не могут зайти на сайт со своим процессором и посмотреть разрядность.
>>1697213 Как уже сказали, в легаси, но я добавлю, что это не обязательно совсем древнее легаси уровня ЕЕ. Просто если приложение уже было написано без бута, то смысла его добавлять довольно мало. Сам спринг при этом может быть и вполне новым.
Тупой вкатывальщик пришел с вопросом. Нужно смоделировать игровые автоматы с магнитными лентами,терминалом и игрульками.
Короче,в классе с лентами лежат только поля и все,а в классе с терминалом можно пополнять баланс,получать призы и прочее говно. Так вот,как это реализовать?Как сделать чтобы пополнять баланс можно было только через терминал и более никак. Учитывая что во всей программе поля с балансом и номером карты лежат в отдельном классе.
>>1698247 Можно все эти классы вынести в отдельный пакет, сделать все поля с балансом и прочим приватными, сеттеры для них - package-private, и только у терминала поля будут public. Package-private разрешает доступ только в пределах данного пакета, у терминала будет к ним доступ, а извне доступа не будет. Это при условии, что разраб не будет добавлять новые классы в пакет, но для адекватных требований этого достаточно.
>>1698294 Звучит неплохо,но вот в чем загвоздка.Это задание к курсу,а конкретно к теме с модификаторами доступа,там говорилось,что использовать можно только private,static и public,но при этом все поля приватные
>>1698303 Создаёшь класс терминал, в нём поле с типом лента. В конструкторе это всё объявляешь. Потом обращаешься Терминал.полеСЛентой. Почитай про агрегацию.
>>1698303 > поля ведь лежат в одном классе,а методы в другом Не должно так быть, они должны быть в одном классе, причём поля должны быть private, а геттеры/сеттеры - не обязательно. Лично я с этим не согласен, но соглашение таково.
>>1698324 Таково условие,я просто его скопировал и никак не изменял.Подразумевается,что магнитные ленты не могут выполнять вычисления,а могут только хранить инфу о номере и балансе.Но мы с этими картами насаемся то к терминалу,чтобы пополнить баланс,то к играм чтобы баланс потратить и поиграть.И терминал и игры тут отдельные классы. Такие уж задания на курсе оракла для начинающих
>>1698322 Да. class Lenta { int a; getter/setter/cosntructor} class Terminal { Lenta lenta; public Terminal (Lenta lenta) {this.lenta = lenta}; public lentaPlusB (int b) { lenta.a +b; } getters/setters/methods }
>>1698332 А для чего в параметры Терминала писать ленту,у нас же операции типо пополнения баланса будут представлены отдельными методами и в них мы уже напишем,разве нет?
>>1698417 public void perenos (Lenta lenta1, Lenta lenta2, int chast) { if (lenta1.a>=chast) { ...//изменяешь значение ленты1 через метод терминала ..//изменяешь значение ленты 2 через метод терминала } else throw Exception ("Недостаточно средств")}
Кто-нибудь перекатывался из C++ на Java? 1. Сколько учили язык? В свободное время / во время работы? 2. С какой и на какую позицию перекатились? Сильно ли просели по зарплате? 3. Интересные ли задачи по сравнению с плюсами? Много ли своих заморочек?
Работаю НЕ в НИИ, пишу на современном C++17 с пакетным менеджером, CI и всеми возможными плюшками, но чё-то пердолинга всё равно многовато.
>>1698774 1. Язык как таковой - гораздо проще чем С++, по началу скорее будет бугурт от невозможности сложить два указателя. Сложность скорее всего в "обвязке" всего этого: спринги, кафки и прочий кубернетис в клауде. 3. Тут сильно зависит от того что тебе нравится и куда попадешь. 95% это унылый веб CRUD или sort of ETL. Но бываают и интересные проекты, но за ними надо побегать. С другой стороны унылый веб CRUD как правило тихая гавань, где можно годами неспешно пилить одно и то же, не напрягаясь и не перерабатывая.
>>1699799 1. Я и не складываю указатели (может кто микроконтроллеры пердолит занимается подобным. У меня МашОб и нейроночки. 3. Я правильно понимаю что можно освоить этот стэк и дальше можно до пенсии сидеть в хуй не дуть в каком-нибудь банке?
>>1699799 1. Я указатели не складываю (это скорее кто микроконтроллеры пердолит). У меня МашОб и нейронки. 3. Я правильно понимаю что можно выучить это стэк и дальше до пенсии сидеть в хуй не дуть в каком-нибудь банке?
Можно подробнее по зарплате? Если я джуном вкачусь но с опытом пару лет на C++?
Двач, здравствуй, такая проблемка. Есть один проект, который идет по лицензии. Дату истечения лицензии определяю я. Итак. Есть machine-id у клиента - /var/lib/dbus/machine-id. Он передает его мне, я вставляю его в гуишку, там же выбираю дату конца лицензии. Ключ генерится по private key, machine-id и expirationDate, который я указал. Выходит что-то типа:
Я передаю этот ключ клиенту, он вводит его и тут хуяк: javax.crypto.IllegalBlockSizeException: Data must not be longer than 64 bytes
Роюсь в дебаггере, метод doFinal в com.sun.crypto.provider.RSACipher: if (this.bufOfs > this.buffer.length) { throw new IllegalBlockSizeException("Data must not be longer than " + this.buffer.length + " bytes"); }
this.buffer.length = 64 this.bufOfs = 65
Внимание, вопрос. В каком месте я поел говна? С меня тонны нефти за помощь в любом виде.
>>1700950 Ремарка - с шифрованием работаю впервые, поэтому знаю во всем этом примерно нихуя, просьба не бить сильно тапками, если где-то сильно проебался
>>1700950 > Ключ генерится по private key, machine-id и expirationDate Можно вычислить хеш-функцию от private key, machine-id и expirationDate, а ключ генерить уже от него. Взять хеш-функцию такую, чтобы влезала в 64 байта. На клиенте тоже вычислять эту хеш-функцию и сравнивать.
>>1701015 Чет погуглил поверхностно, ничего не нашел, завтра еще поищу. Если тебе совсем делать нехуй - можешь кинуть ссылку или, боже упаси, написать примерный код для всего этого?
>>1701039 Я не писал подобного на джаве, но это, наверное, должно быть похоже на проверку цифровой подписи. Передаёшь на сервер machineid Вычисляешь data = encrypt(priv_key, sha256(machineid + expirationDate)) Передаёшь data и expirationDate на клиент На клиенте сравниваешь sha256(machineid + expirationDate) и decrypt(pub_key, data)
библиотека А зависит от библиотеки Б, Б зависит от А. Они обе сейчас на 11 джаве. Есть необходимость сменить их таргет версию джавы на 8, т.к. выяснилось, что в одном из проектов анал жепы с 11 джавой, а в этих либах фишки 11 джавы не используются даже, ибо котлен. Как это сделать? меняю в одной - билд фейлится, т.к. в зависимостях либа с 11 таргетом.
>>1669569 Аможно пояснить за яхидный спойлер? Хочу заплатить в джава раш, но не хочу, стоит ли? Бесплатный курс воспринял легко стоит ли продолжить? Или дрочить уроки на ютабе и искать бесплатные курсы в интернете?
>>1701647 как функционал исключения тут поможет? не совсем понял. Я могу исключить в проекте А либы проекта А из зависимости Б. Но Б то останется со своей таргет версией 11. и сломает мне билд
>>1700652 В целом да, но надо осторожнее чтобы не получилось так, что банк закрылся а ты "Senior COBOL Developer". Все таки за тенденциями надо хоть немного следить. Но тихие гавани есть и много.
Зарплаты сейчас - фиг знает, я 2 года не в России живу. Когда я уезжал конец 2018 в ДС джуны получали 100-120, сеньоры от 200 мне лично предлагали 350.
>>1702583 Оно тебя сожрет, а работу ты не найдешь.
Я пару лет назад хотел вкатиться в эту отрасль, притом что в вузе у меня были и сапры (inventor, nx), и компьютерная графика. А особенно нас дрочили по вычислительной геометрии и численным методам с упором на то, как решать определенные инженерные задачи с использованием метода конечных элементов и прочих прикольных математических штук.
Я потыкался в разные вакансии, но джуны не были нигде нужны и я забил, а потом перекатился в джаву к началу 4 курса. К слову сказать, разработка САПР в России выглядит немного удручающей. Геометрическое ядро (как раз та часть, которая отвечает за йоба-геометрию) делает только одна контора - АСКОН, которая собственно и разрабатывает известный всем компас-3D. Располагаются они в Коломне и по зарплатам сеньоров там все грустно - те самые 110к за знание С++ и вычислительной математики, чуть выше чем джава джун в ДС. У T-FLEX аналогичная ситуация. Правда вот видел недавно, что Align разрабатывает сапр для зубных лекарей - моделирование челюсти, и т.д, платят там неплохо, но нужно хорошо уметь в линал и алгоритмы.
>>1702687 >А я ещё мечтал перекатиться из жабы в кресты Если интересна компьютерная графика или байтоебство, то перекатывайся. В других случаях не стоит, хотя например бекенд на плюсах тоже в некоторых местах пишут.
Как вы относитесь к методам которые что то возвращают, но при этом переданные филды меняют каким-либо образом? Мне кажется это крайне плохая практика хотя понятное дело так делать не запрещено
>>1702932 Что про них читать то, можно просто в функциональном стиле кодить и никогда не встретится с такой ситуацией, просто я сегодня весь день переписывал такой код, все работало, тесты были, но я не мог нормально расширить функциональность, и понять логику, хотел услышать мнение когда бы анон это использовал и зачем?
>>1702946 Когда бы я использовал не чистые функции? Никогда. Только если и цель этого метода изменить поле. Как это говно потом тестировать? Как в нём разбираться? Когда помимо возвращаемого значения там ещё внутри какая-то хуйня меняется. Но у меня опыта, мало, пишу с дивана.
Что полезное за лето выучить, чтобы осенью попросить зп повыше(хочу х2, вкатывался на джуна с не самой высокой по рынку зп) либо уебать в другую компанию? Стек стандартный, джаваспринг, правда майбатис вместо хибернейта, но его и так уже включил в список. Хочу каждый день тратить по часу в день после работы на чтение статей и книг, по выходным пилить пет-проект на новых выученных штуках
Write a program that takes an integer N and an array of N integers as input. Your program should output the longest strictly increasing digit sum sequence of the inputed array. Note: The integer N will be given in the first line and the array of N integers will be given in the second line (Each integer separated by a single space). Note 2: The sequence of an array is a sub-array of contiguous elements from the original array. Note 3: A sequence is strictly increasing digit sum if the sum of the digits of each element of the sequence is greater than the sum of the digits of the element before except for the first element.
Не могу до конца понять что надо именно сделать ? Вывести последовательность возрастающую что ли ?
Привет, аноны. Имею где-то пол года коммерческой разработки, подскажите как развиваться, когда уже нашел работу. На работе параллельно читаю клин код, решаю задачки на литКоде, пишу пет проект с коллегой после работы, но есть еще целые выходные, когда коллега не хочет столько прогать, а задачки решать впадлу. Посоветуйте плс список мб книг или технологий областей, что должен знать хороший программист, что может помочь с переездом из Раши в будущем (это не главная цель, хотя мотивирует)
>>1703684 >переездом из Раши Как вообще заводится трактор? Типа, работодатель подходит и говорит: "Сычев, ты хорошо трудился, вот тебе виза на забугры"? Что для этого нужно?
>>1703417 > Что полезное за лето выучить, чтобы осенью попросить зп повыше(хочу х2, вкатывался на джуна с не самой высокой по рынку зп) либо уебать в другую компанию? Ну спроси блять у своего тимлида/ПМа, что тебе нужно. Мы то откуда знаем, что вы там делаете у себя. А по другой компании - смотри требования на hh на должности, которые тебя интересуют
>>1703775 Не. Я вижу это так, я вот ща поучусь, буду тру прогером, по хорошему поработать либо в топ IT компаний России типа Яндекса\Сбер Технологий, чтобы в резюме можно было написать "работал в топ банке России" или "в топ поисковике", чтобы люди видели что в своей стране я хорош и нужен. Далее по хорошему сертификаты сдать по джавке и еще по чему-нибудь, это надо еще гуглить. Ну а далее я прохожу онлайн собесы на линкедИне каком-нибудь много штук, и мне могут прислать приглашение работать у них в стране -> переезжаю. Я это вижу так)
>>1704130 Если ты не логичный, не любишь цифры, тебе не давалась хорошо математика в школе - что-то из этого, то будет очень сложно, я бы не советовал. У нас иногда джунов таких вижу, они очень медленно обучаются, у них нифига не выходит, понимают с 5 раза, у нас таких недавно двоих уволили, честно хз как они будут работу искать дальше, не скажу что много у нас научились. А если ты в ладах с матаном и логикой, то велком. Таблетки вряд ли помогут, ни разу не слышал таких историй. В зависимости от региона, в Москве 40-80к джун. Что подразумеваешь под стажером?
>>1704130 >работал на заводе, 30лвл Если есть техническая вышка, то можешь попытаться вкатиться. Если нет, лучше не стоит лезть в джаву. Во многих вакансиях очень желательно высшее образование, особенно на позициях джунов и стажеров.
>>1704207 >Если нет, лучше не стоит лезть в джаву В моем городе в вакансиях вообще ни слова про вышку, значит ее не требуют? Или во - само собой разумеющееся?
Сап анчоусы! Вкатываюсь в интерпрайз, столкнулся с проблемой кастомной десериализации с помощью StdDeserializer. К сути: У меня есть несколько классов-сервисов для обработки изображений, которые используют каждый свой enum с параметром указывающим способ смешивания цветов. В DTO используется общий интерфейс для enum. Для десериализации строки к определенному enum используется класс наследник StdDeserializer. Проблема в том, что метод deserialize не вызывается. Конструктор срабатывает.
>>1704207 >>1704281 Тоже очень редко видел такие требования, может быть Ошибка выжившего? По мне ссылка на гитхаб со своими проектами сейчас важнее, разве что в каких-то гос организациях слышал такое бывает, повышение упирается в вышку.
>>1704222 Не, такого что ты описал - нигде не встречал. Есть стажировки типа от сбера, от яндекса и т.п., я сам такую в свое время проходил, довольно прикольная штука, кратко, чтобы попасть, надо пройти собес на знаине основ, далее тебя бесплатно учат какое-то время (меня 2 мес. по скайпу несколько раз в неделю) и тебе нужно все в срок выполнять и сдавать, иначе ты вылетишь. Ну в итоге остаются человек 5-7 из 40, и им кидают оферы в разные отделы\компании и нужно еще внутр. собес пройти, но во время стажировки дается хорошая подготовка.
Еще вопрос по иммиграции. Для иммиграции важно во, так? А если, допустим, у меня нет во, но есть опыт работы 3-6 лет, шансы такие же, если бы было во, или?
Уважаемые аноны, помогите советом, как лучше сделать. Есть классы, которые описывают должности на некоей работе, например, Бухгалтер, Секретарь, Уборщица. А еще есть некий Hr, который фильтрует кандидатов на работу по дате рождения. Ну, там, все, кто родился позже 2000 года, отсеиваются. То есть, есть некий метод, который принимает List тех или иных сотрудников, в цикле сравнивает их год рождения с эталоном и возвращает новый List, в котором нет людей 2000 года рождения и младше. Во первых, где должен быть такой метод? Как будто бы у Hr, это его задача. И как сделать этот метод гибким? Если я захочу в офис добавить новые должности, то чтобы мне не писать этот фильтр под каждый тип объектов, который он будет принимать. Я предположил, что нужно сделать некий базовый класс, типа OfficeWorker, который будет родителем всех моих должностей. И написал у Hr метод, который принимает List<OfficeWorker>. Передаю в него лист сгененированных секретарей. И хочу, чтобы он отдал мне лист отфильтрованных секретарей. Пробовал делать приведением типов, не получилось. Может быть я просто метод расположил не там? Буду благодарен за совет.
>>1705014 Ну ты конечно говно написал. Где объявлен параметр T? В объявлении метода его нет, неужели ты весь класс параметризовал? Если так (пик 1), то по смыслу получается что у тебя HR менеджер всегда только к одному типу работников принадлежит. И использовать его можно только сырым, без параметра, т.к. если добавишь параметр (пик 2), то не сможешь пользоваться методом вообще. Заебался объяснять, в общем корректный вариант это пик 3.
>>1704527 Не, ща просто в каждой конференции должна быть тян, афро, азиат и т.п., посмотри любую презинтацию эпл или любые конфы международного уровня. JPoint (наряду с joker) это топ конфа в Раше по джаве и они стараются соответствовать Ну и я не исключаю, что она любит матан))
Скажите, как много женщин работает в джава-энтерпрайзе? Я их панически боюсь. Наверное, готов работать за втрое меньшую зп каким-нибудь байтоебом в НИИ, лишь бы там не было женщин, которые пугают меня до смерти.
>>1706121 Ну если среди кодеров 15%, то еще не страшно. А то один знакомый шарпист рассказывал, что у него в команде прям очень много тян, чуть ли не больше половины. Хотя наверное ко всему можно привыкнуть и научиться с людьми общаться тоже.
Посоветуйте, что почитать про ООП, наследования, полиморфизмы, вот это вот все. Не на базовом уровне, а наоборот, чтобы полную картину и осознание иметь
анон, утро доброе, подскажи: пытаюсь разобратся со СПРИНГОМ и пытаюсь создать XML для обьявления бинов так вот Идея создала мне форму (фото ниже) та которая меньше, а на курсе показывали то что больше так вот в чем разница и что лучше?
>>1706435 >>1706434 Различающаяся часть (не учитывая автоскан) называется xml-namespaces - xmlns. Для спринга абсолютно пофиг что там прописано, скорее всего и на голом <beans> без аттрибутов все заработает, проверь. А нужны неймспейсы для автоматической валидации xml документа, т.е. редактор кода - в данном случае IDEA - при помощи неймспейсов знает какие элементы и с какими аттрибутами могут включаться в другие элементы, может подсвечивать ошибки и предлагать автодополнения и подсказки по ctrl+space. Неймспейсов существует уйма, по количеству модулей как минимум, см. пример.
>>1706441 >>>1706441 >без аттрибутов все заработает, проверь. не прокатило
ну в общем я понял, огромное спасибо. так мне стоит знать что каждая из них значит? и вообще сейчас в разработке на спринге все еще юзают xml? нужно ли углубляться в это?
>>1706447 >не прокатило Ага, проверил, действительно не работает. По тексту ошибки - внутренний XML парсер ругается на невалидный XML. Ну, он слишком придирается, можно и так работать, но на самом деле приятно - спринг, как всегда, качественно выполняет свою работу.
>так мне стоит знать что каждая из них значит? Выходит что стоит. Точнее, тебе нужно знать из какого неймспейса берется тот или иной элемент, и если такого ns нет в описании, то добавлять. В гайдах обычно прилагается нужный xml с аттрибутами всегда.
>сейчас в разработке на спринге все еще юзают xml Комбинируют. В XML ты указываешь бины и их свойства, которые ты хочешь вынести из кода. Такое аннотациями не сделать, либо выновить в свойства (проперти). Но свойства они для значений переменных, а чтоб именно класс бина нужный подгрузился это только XML. Можно велосипедить и с пропертями, кладя в них текст класса, а потом делать Class.forName, но зачем, ведь именно это и делается на моменте конфигурации контекста через XML. В общем - для каждой задачи свой инструмент. В больших приложениях часто все совмещено - и аннотации, и xml, и проперти файлы, и даже java конфиг (кодом).
>>1706454 Не мой ответ. Да, у меня ультимейт 2018.3, я нищук. Не могу сказать чем точно отличается. В Коммьюнити отсутствуют некоторые вещи, предположительно (не проверял) это поддержка EE, всякие подключения к EE серверам/контейнерам, дополнительная поддержка спринга, поддержка фронтенда.
>проперти файлы на русском как в интернуте найти, чтоб почитать
может кто знает есть ли задачки или еще чтото по спрингу, а то теории много а на практике как применить для укрепления не знаю, может летература какая-то
>>1706503 Properties - неспринговый стандартный (и морально устаревший, но еще дышит) джава класс для хранения данных в виде "ключ = значение", типа современного интерфейса Map. Позволяет не только хранить в памяти, но и сохранять/загружать с диска/на диск эти данные. Файлы, предназначенные для использования данным классом, обычно имеют расширение .properties. В спринге такие файлы используются например в аннотациях @PropertySource, @ConfigurationProperties, а в спрингбуте есть дефолтный файл application.properties. Ну вот по выделенным словам и можешь гуглить.
>>1707435 Да, ресурс-бандлы работают на проперти файлах. Но этот класс можно использовать и напрямую: Properties properties = new Properties(); properties.load(inputStream);
Иду по Хорстману, копаюсь в исходниках, приложенных к книжке и забываю что и как делается, что было 100 страниц назад. А часть не очень могу понять без практики. Где задачки подрочить, чтобы с проверкой и с разделением по темам? Ну и чтоб комменты были. На кодварсе как то нет разделения. На степике очень мало заданий. Думаю закинуть 6к на год жабараша, правда говорят там даже лямбд нету.
>>1708225 Если хочешь сидеть в большой конторе и копаться в миллионах строк кода, написанных задолго до твоего прихода в айти, то можешь вкатываться, а иначе лучше что-то похайповей.
анон начал читать книгу "СПРИНГ В ДЕЙСТВИИ" но только сейчас допер что там нет ничего о анотациях и вообще там все вокруг xml пока. стоит продолжать читать или есть более современые аналоги где мне и за анотации пояснят?
>>1709045 А что странного? Скала же jvm язык. Не нужна скала - не идешь до этого уровня. Я смотрел интервью скалиста и он вроде говорил, что для скалы нужно знать основы джавы.
>>1709045 Всё хорошее из скалы рано или поздно добавят в жабу, какая разница на чём учить общие концепты? Обмажешься там мапами флетмапами и потом Stream зайдёт на ура. Также и с типами, акторами, иммутабельностью и прочими футурами.
>>1709884 Особого смысла задрачивать кор нет, это всё используется при реальной необходимости, а не просто так. Но можно, например, написать на сырых сокетах свой недоHTTP-сервер или недоСУБД.
Недавно осознал, что совсем забыл io-стримы (который байтовые и символьные). Ни одного класса не помню точно. Потратил дохрена времени, чтобы вручную считать файл целиком из ресурсов. Запарился. 7 лет опыта
>>1710384 Щас бы сравнивать божественные названия типа Buffered Input Stream, где все написано человеческим языком для людей, с fopen, которое придумывал какой-то скрипт-кидди, который буквы экономил.
Посоны, 10 лет работал обычный Java SE-блядком. Ну всякое там пилил на Swing-e для десктопа. Иногда hiberanate и всякие фреймворки юзал, но в основном всё десктопное.
Вот решил искать новую работку, а везде Java Fullstack Developer. Spring/Angular/Java Script. Я весь этот веб-сегмент знаю поверсносто и вкатываться особого желания нет.
Но как-то выходит так что вся работа на рынке примерно в таком ключе сейчас и есть. Я как-то не так искал? Или сейчас альтернативы особо и нету? Просто немного "не моё это". Ну никогда я не любил особо Апач настраивать и всякие веб-приложения пилить. Неужто все остальное мертво?
Вообщем я думаю: 1) Начать всё это учить чтоб вкатиться как Fullstack Dev 2) Стоять на своём, и искать работу Java SE Destktop кодер
>>1710482 Твои вкусы весьма специфичны... больной ублюдок))). За последнее время я только одну серьезную высокооплачиваемую позицию для десктопов видел: ребята пишут софт - "сорт-оф-автоматизатор/автокликер" - по скриншотам экрана распознает объекты и кликает куда надо и другие штуки выполняет, в реалтайме само собой. Казалось бы зачем, когда есть Сикули. Но может они его авторы, я не интересовался особо. Зато я читал их тестовое задание: нужно по набору скриншотов покерного стола определять какие карты на столе и их области/координаты. В общем, ниша у тебя действительно очень узкая. На Java сейчас пишут именно бекэнд. Не фулстэк, прошу заметить, можно найти позицию именно чистого бекэндщика, без JS и прочих ангуляров. В основном это и есть SE, только без свинга, ну и чучуть добавить EE, в основном это сервлеты и JPA, который ты вроде говоришь уже знаешь. Самое простое для тебя - потратить 2-4 недели на книжку по спрингу и искать позицию на бекэнд, либо продолжай искать десктоп, но их прям очень мало.
>>1710508 1. А... ну тоесть мне не показалось. Таких позиций правда мало? Я думал может я гуглил где-то не там. Я не из рахи, так-то. Ввожу просто java в поиск вакансий, и там 100 объявлений Fullstack.
2. Backend это писать обычную серверную логику. Ну типа там начать транзакцию, что-то куда-то записать , роллбекнуться итп? Ну это я умею и собвенно у нас десктоп с таким примерно работал. Просто бекендом это никто не называл. Но вообще-то всем сейчас вроде нужен Fullstack. Я так понимаю эти пидоры хотят меня заставить верстать.
0. Да не вкусы у меня. Просто я всегда... ну с неким пренебрежением относился к веб-программированию в целом. Ну я с него начинал php+flash но потом быстро перекатился в обычное. Но ради бабок могу и CSS сверстать, хуле я не гордый. Или зазубрить какой-нибудь Spring.
Тоесть я правильн понимаю что java в 2020ом году почти что равнозначна вебразработки на Spring Framework? Никаких других ниш особо и нет чтоли?
>>1710516 >1 Да, не показалось. Я не знаю где ты сейчас работаешь, что вы там делаете на свинге, но в целом по рынку GUI на Java сейчас это сплошь веб-странички.
>2 Да, вытащить из очереди на RabbitMQ, преобразовать как-то, записать в бд - это бекэнд. Вытащить из бд, отдать юзеру - это бекэнд. Только не на форму, а в браузер. Вот я и думаю что ты с таким примерно уже работал, поэтому нужно только современную обвязку изучить.
Кстати Spring Framework это многоцелевой фреймворк, а не веб-фреймворк. Ты и свинговые приложения, и консольные на нем тоже можешь лепить. Попробуй, это удобно. Большинство позиций сейчас да, требуют спринг. А те кто не требуют пишут на чистом EE для какого-нибудь громоздкого аппликейшн сервера. Есть несколько фреймворков поменьше, например, от создателя Hibernate там какой-то есть, но им всем не тягаться со спрингом, и глубоко их учить смысла нет. А спринг это вообще сборище различных проектов: хибернейт, валидатор, джексон, сиджилиб, логбэк... Ты наверняка с какими-то работал, и вкатиться будет легче.
>>1710516 >java в 2020ом году почти что равнозначна вебразработки на Spring Framework Я в дс почти ничего другого не видел. Один раз только встретилась какая-то контора, которая пилила какой-то анализатор кода или типо того, там спринга не было.
>>1710541 >>1710546 Спасибо за разъяснение. Короче не показалось. И особо на другие вакансии расчитывать мне не стоит.
Всё таки как-то странно всё это. Java что, стала серверным языком в итоге, навроде PHO. Лол.
Эх... и как 10 лет прошло... даже не заметил. Вообще я никогда на яве работать особо не хотел, но просто место хорошее предложили. Даже и не знаю, стоит ли дальше с ней связываться. Я хоть с ней работал много, никогда всерьез становится java-программистом не собирался. даже и не знаю. Короче если становится то и правда надо начинать учить все эти angular/spring. Ну или уёбывать по добру по здорову (в юнити-гейдев).
>>1710549 >Java что, стала серверным языком в итоге Именно так. Java апплеты из браузера выпилены давно, а на замену свингу пришел JavaFX, но особо не поменял ничего, вообще вакансий на него не видел ни разу. А вот на серверах Java очень хорошо зашла: надежна, предсказуема, кроссплатформенна. А еще Java есть в Андроиде, но надолго ли, это главный вопрос - после разбирательств за права гугол уже несколько лет там пилит свою отдельную ось-убийцу Андроида. Хочешь продолжать заниматься десктопом - твой путь лежит в си шарп или дельфи (не шутка, там свои преимущества типа собственной библиотеки компонент). Если по ветке си шарпа пойти то преимущества следующие: очень похож на Java и тоже работает в managed-среде; можно говнокодить на юнити как ты хочешь. У серьезного десктопа есть еще третий путь - c++, но это для вката не подойдет, высокий порог.
>>1710559 Ах, точно. Android Dev это единственное что видел кроме backend/fullstack ваканский.
Собвенно откуда столько вакансий на серверный код? Что им всем нужно? По сути это просто люди которые пишут сайт для каких-то компаний? Вроде например заказа полётов, или какой-то веб-магазин или система документооборота. Тупо чтоб сайт работал и пользователи могли логинется и производить какие-то дейтвия вроде пополнения баланса? В итоге за всеми этими вакансиями это стоит?
А на c# какие типичные вакансии? Там не только серверный код писать? Ну я где работал писал на яве некое подобие редактора векторной графики. Обычное десктопное приложение по сути. Ну оно умело PDFки для печати создавать и хранить данные в hibernate. Так как куча клиентов хотела удалённо работать. Ну обычное десктопное приложение-редкатор по сути. Неужто такое особо нигде сейчас не нужно? Может на шарпе это восстребовано?
>>1710482 >Стоять на своём, и искать работу Java SE Destktop кодер Ну это вообще пушка. >Начать всё это учить чтоб вкатиться как Fullstack Dev Основы понимать нужно обязательно. Фронт можно и не трогать особо. REST-хуест API-шку набрасать для для JS-макак, например, а дальше пускай сами веселятся со своим реактом.
>>1710516 >java в 2020ом году почти что равнозначна вебразработки на Spring Framework? Spring - это не только ценный мех вэбразработка. Spring - это в первую очередь DI, который оказался настолько удобным и популярным, что понаписали обвязку ко всему чему только можно. Шлёпнул @Component, вставил @Autowired. Лепота! >Никаких других ниш особо и нет чтоли? Почему же . Например, финансовый сектор (HFT, биржи), Big Data там всякая.
Придумали зачем-то лишнюю сущность DI, когда уже есть static. Какая разница, если сервисы не хранят данных и работают по сути как модули? Плюс со статиком не нарвёшься на проблемы с циклическими зависимостями.
>>1710571 >>сайт для каких-то компаний? Вроде например заказа полётов, или какой-то веб-магазин или система документооборота. Тупо чтоб сайт работал и пользователи могли логинется и производить какие-то дейтвия вроде пополнения баланса? Вроде того - страховые, банки, сервера для онлайн дрочилен. Иногда переписывают внезапно выросший сайт с какого-нибудь питона. >>Ну я где работал писал на яве некое подобие редактора векторной графики >>Неужто такое особо нигде сейчас не нужно? Сейчас все переносится в веб. Такая же прога - в онлайне будет востребована. Ничего не нужно устанавливать, легко обновлять легко монетизировать продавая доступ
>>1710602 Статики тестить сложно. Смена логики может все переебать и повалится 500 тестов, вместо 2-3. Что исправлять не понятно. >>не нарвёшься на проблемы с циклическими зависимостями. IDE тебе скажет о циклической зависимости, хотя спринг и с циклической зависимостью работать может.
>>1710578 >Spring - это в первую очередь DI Я не согласен. Spring - это в первую очередь экосистема на все случаи жизни. Ради DI он нахуй не впёрся. Я лучше возьму какую-нибудь легковесную либку типа джуса, если мне нужен DI.
1. Нахуй вы так вообще на DI дрочите? На случай если вдруг в вашем же приложении ВНЕЗАПНО надо будет декаплануть какой-то объект? Ну так когда понадобиться тогда и отцепите, хуле. Зачем заранее везде DI делать? Какой юз-кейс у всех этих танцев с DI?
2. DI этож просто замена зашитой переменной на ссылку, если простым языком. Лол, ради этого точно надо 10гб джарок в проект добавлять? Не проще тупо функции аргумент добавить, ради такой архи-сложной задачи?
>>1710973 вот никогда не смогу понять, что за цирк с этим в джаве - нельзя напрямую к переменным обращаться, ибо аряяя приватность, но при этом никто никогда не делает логику в гет/сет методах. Нахуй тогда это всё нужно?
Может есть у кого мурзилки по http-запросам, рест, соап и прочим полезным вещам в мире энтерпрайза? Я про всё это немного читал, трогал, но хочется более-менее нормально пройтись, мб есть книга а-ля "основы серверной разработки" хорошая?
>>1711329 тимлид в щелку коммита заглядывает, спрашивает, что я ебанутый, что я там делаю. Посыпает все бины гет/сет методами, говорит "я так делаю, и ты так делай"
>>1711291 Куча библиотек/фреймворков смотрит именно на названия методов, ломать это поведение небезопасно. Но если обрабатывать данные сам, то мог бы и публик сделать, а хуй, не принято.
Зато можно делать методы без реальных полей и вычислять значения на лету.
Не могу установить в нетбинс JavaFX,библиотеку скачал и добавил,но все равно выдает
Failed to automatically set-up a JavaFX Platform. Please go to Platform Manager, create a non-default Java SE platform, then go to the JavaFX tab, enable JavaFX and fill in the paths to valid JavaFX SDK and JavaFX Runtime. Note: JavaFX SDK can be downloaded from JavaFX website.
>>1711333 А аннотация чтоли как "find/replace" тупо по имени инджектит локальную переменную как ты в xml укажешь? Пробрасывать аргументы через 10 фунцкий я тоже не люблю.
Решил вкатиться в джаву, чтобы пилить приложения на ведроид. До этого опыта кодинга не было. Сейчас прохожу онлайн-курс от Хельсинкского университета, выполнил за последние 2 дня 40 задач, рассчитанных на две недели, и меня не покидает ощущение, что я слишком тороплюсь и что стоило их реально на две недели растянуть. Но с другой стороны, сейчас там идут даунские задачи с условиями, циклами и методами. Как правильнее обучаться -- в форсированном темпе или всё разжёвывая по сто раз? Если у тебя есть остроумный ответ, либо переформулируй его в скучную, но конструктивную критику, либо прибереги его для своей мамки.
>>1711530 От бекграунда всё зависит же. Раз две недели на даунские задачи, то наверняка курс для тех, кто в кодинг как таковой вкатился недавно. Если уже кодил на чём-то, то долго сидеть на знакомых темах смысла нет.
Подскажите, что делать говнокодеру. Работал в компании около года по направлению Java/Spring. В момент начала "самоизоляции" и прочих прелестей компания сказала идти нахуй. Пошел собеседоваться, а меня на первом же почти послали, мол хуево отвечал. Вот и призадумался, почти год так или иначе пилил эти ваши spring-сервисы/репозитории/контроллеры, но базового знания самого спринга не чувствую (тот же DI вроде понимаю зачем, но необходимости на проектах в нем жуткой не видел). На собесах постоянно спрашивают что-то по многопоточке, в которой я тока теорию издали знаю, а вопросы там такие, будто я этот год тока многопоточкой и занимался. По итогу хочется узнать, что должен знать jun/mid разраб, как именно тестить себя в навыках и что почитать (философия Java и Spring in Action читал) или пописать. А казалось бы в ДС-2 найти работу прогером не так сложно...
>>1711530 Читать заумные талмуды на 1000+ страниц жутко скучно, я когда вкатывался тоже задачки решал. Пытался решать сам, потом смотрел как надо, попутно гуглил всё, что не понимал. И по разному получалось, мог за день решить много, а потом начать гуглить одну и читать про что-то несколько дней. >разжёвывая по сто раз Я всегда вникаю в смысл до тех пор, пока полностью не пойму что и как делать надо. Не просто запоминаю алгоритм, а чтоб именно понять чё как и почему. Если надо то и 100 раз буду перечитывать. Тебе как удобнее так и делай. Главное, чтоб не получилось, что вот это ты вроде понял, а чуть поменять условия и ты жидко дрищешь под себя.
Сап, программач. Есть проект на Java+Swing, где реализовано двоичное дерево+графическое представление. Надо с использованием этого проекта описать метод, который строит двоичное дерево, в котором N полных уровней и на каждом уровне i располагаются узлы, информационные части которых равны i. Разумеется не бесплатно кого заинтересовало - пишите в telegram @alexanderstud
>>1711869 > джава 1.5 Бля, я по приколу переключался на древние коммиты десятилетней давности, и там без спринга реально большинство классов с бизнес-логикой каждый раз создавались через new. А вместо ApplicationContext был огромный класс с кучей полей static, и они инициализировались при старте сервера вручную. Что там @Autowired - даже @EJB и @Inject не было.
Немного нестандартный вопрос, ибо я очень далек от разработки, и в основном админю сети. Можете на пальцах объяснить, зачем вы в работе (вероятно) используете (или можете использовать) PaaS платформы от Jelastic, AWS, Google Cloud Platform и подобных? Какие вы или ваши девопсы в облаках для себя разворачиваете сервера, инструменты и т.д? Я просто не совсем понимаю, вот есть джава разраб, он пишет код, зачем ему это всё и что он с этим делает?
>>1712058 Ты написал вэб приложение. Его надо сделать доступным пользователю. Твои действия? Как ответишь, подумай что будешь делать, когда нагрузка пиково вырастет в сотни раз, т.к. маркетологи нагоняют трафик как могут.
>>1710799 >Нахуй вы так вообще на DI дрочите? На случай если вдруг в вашем же приложении ВНЕЗАПНО надо будет декаплануть какой-то объект? Ну так когда понадобиться тогда и отцепите, хуле. Зачем заранее везде DI делать? Какой юз-кейс у всех этих танцев с DI? Ну например, чтобы не протаскивать везде зависимости которые конкретному бину не нужны.
Например у тебя есть бин ЗалупаКонтроллер, который использует ЗалупаСервис, который использует ЗалупаДао. Если создавать зависимлсти внутри ЗалупаКонтроллер, то тебе надо будет передавать туда ДатаСорс только для того, чтобы он прокинул его в ЗалупаСервис, а тот в ЗалупаДао, а тот еще что-то там создал. И ЗалупаДао будет создан в нескольких экземплярах.
Можно заморочиться и сделать все кодом в майне, но тогда надо руками отслеживать все зависимости и порядок инициализации. Если бинов больше 10 - то будет не код, а каша. А если ты его захочешь что-то то вызывать на пост-инит, то веселье удваивается.
>>1712183 >Если создавать зависимлсти внутри ЗалупаКонтроллер, то тебе надо будет передавать туда ДатаСорс только для того Мне лет 10 все интернеты прям кричали что это правильно. А нарушать инкапсуляцию сайд-эффектами плоохо. И вон как теперь запели.
Ну спасибо за разьяснение. Может он на практике "проще быстрей лень ебаться". Просто на десктопе никогда не юзал да и среда там не настолько распредленная, хотя один сервис был с ебучими сертификатами.
Возможно DI это ответ на типовую задачу которая всех заебала в бекенде.
>>1712545 а ты шо думал? в сказку попал? мавен - это тест на минимально необходимый интеллект, чтобы работать на божественной жабе, в которой WHEN CODED WELL IT IS VERY FAST. алсо не юзаешь мавен - значит пидор
Ребят, подскажите, есть ли инструменты, которые генерируют вызов конструктора/билдера со значениями из json? Пользуюсь инструментами для генерации POJO классов из Json, но есть ли возможность получить инстанс со значениями из этого json, не прибегая к ObjectMapper, а просто сгенерировать код, который будет создавать этот инстанс через конструкторы?
>>1713783 Ну я немного не то имел ввиду. Вот есть у меня класс @Value class Something { String description }, и есть Json {"description": "..."}, так вот, есть ли такая тулза, которая сгенерирует : var something = new Something("...");, на основании данного json? Естественно предполагаются очень большие json со списками и внутренними объектами.
Аноны, объясните, в чем соль использовать static final вместо просто final. И еще, в чем соль статичных методов, если метод априори один для всех объектов шаблона?
>>1714830 А поля static final лучше, чем просто final, потому что их не нужно инициализировать при каждом новом инстансе, а они получат значение при первом же обращении к этому классу в коде. Да? Обращение к ним не берем, допустим они private.
Привет, джависты. Я уже кучу раз слышал мифы про то, что джава - это медленно, джава - это куча оперативы (всё выделяется на куче, типа), жвм - это супермедленные паузы для сборки мусора (типа, в го они длятся миллисекунды, а в жвм чуть ли не секунды) и тд и тп. Можете пруфами развенчать эти мифы? Хочется разобраться для себя, действительно ли джава тормозная, будет ли тормознее скала или кложурь (потому что жвм же) и так далее. Что годного можно почитать на эту тему?
>>1715711 Джава - это не медленно. Медленный только старт жвм. Памяти конечно нужно больше. Паузы зависят от сборщика мусора. Современные сборщики быстрые. Есть такие, у которых вообще пауз нет. Пруфов не будет, ищи сам.
>>1715638 Пет-проекты были, но на них всем похуй. Делал тестовое, сделал. На собесе решал задачки, решил. Вилку дали без дырки, а я и не против. Ещё и квадрипл, ух бля.
>>1716027 Неиронку начал писать - ахуел от того, как не похуй. Иногда скачиваю новые приложения в плей маркете, элементарно фризят на пустом месте на моем OnePlus6, и просто на них забиваю, так как скляпанное за пол часа макаками говно жрать не особо хочется. Хотя не факт, что его на жабе писали, но такой подход не нравится, лично сам хотел бы писать качественный код, а не курица лапой.
>>1716049 Так юзай правильные инструменты. Или ты берёшь ложку и удивляешься, что хлеб хуёво режется? Жаба это энтерпрайз, банкам похуй на твои нейронки, тут легаси говно и обратная совместимость в приоритете.
Как же я ненавижу яву! Сам язык-то ничего, как сишарп. Но вот все что вокруг него - просто пиздец. Начиная с установки, где тебе надо скачать нужную ЖДК, прописать пути и прочее. И так всю дорогу. Хочу сделать на ДжаваФХ приложение. А вот идите нахуй. С ява 11 мы ее убрали из ждк. Скачайте отдельно. Скачал. Запускаю. Не работает какой-то там модуль пакеты куда-то не экспортирует. Добавьте файл ручками с описанием модулей. Добавил. Снова не работает, теперь уже другая хуйня. В гугле пусто. Идите нахуй, короче.
Ебаный рот этого казино, блядь. Ну почему это так сложно? Почему я не могу Хелловролд запустить? Что это за хуета? Я первый раз вижу эти модули. Почему? Почему?ПОчему? Error occurred during initialization of boot layer java.lang.module.ResolutionException: Modules spring.jcl and commons.logging export package org.apache.commons.logging.impl to module j2objc.annotations
Вы лучше скажите что не работает. Добавил зависимости в мавен, добавил этот файл module-info.java. Почему эта ошибка? java.lang.module.ResolutionException: Modules spring.jcl and commons.logging export package org.apache.commons.logging.impl to module j2objc.annotations
>>1717442 >Хочешь сделать ГУИ. Добавляешь зависимости в мавен. Не работает иди нахуй. Гуглишь. Оказывается что-то там куда-то не может получить доступ. Создай module-info.java и пропиши там эти модули JavaFX Пиздабол.
>>1717431 >Добавил (...) не работает >Без файла (...) работает Я с модулями не работал, пусть другие подсказывают, но тут смело можно предположить, что либо внутри файла что-то некорректно прописано, либо файл не там лежит где нужно. Найди еще примеры таких файлов, сравни со своим. Значение может иметь любая запятая, точка, скобка - внимательно все сравни. Отдельное внимание удели путям на диске или именам пакетов, может там откуда ты файл копируешь написано com.example.TestClass, а ты выебнулся и у себя создал ru.vasya.TestClass.
>>1717559 Это не пердолинг, а первоначальная настройка энвайронмента. Именно для этого был придуман мавен с архитипами. Тут проблема скорее в том что JavaFX это мертворожденное поделие и никому не надо его поддерживать или что-то на нем писать, т.е. коммьюнити чисто JavaFX очень мало тебе крупно повезет, если ты найдешь специалиста здесь; а если он еще и ответит тебе - ваще джекпот.
>>1717565 Что там сложного? Нужные депенденси в репозиториях искать сложно? ctrl c + ctrl v нажимать? Или ты вайтишник и никогда XML и подобные форматы не видел?
>>1717450 Нет ты. Я просто добавил в пом две зависимости для javaFX, наивно полагая, что этого будет достаточно. А вот хуй на воротник:
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x38975aa9) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x38975aa9 at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38) at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056) at GUI.Main.start(Main.java:30) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
Гуглинг показал, что надо добавить файл modul-info.java. Я добавил, но после того стала вылетать ошибка с которой я начал.
>>1668733 (OP) Поясните пожалуйста для чего используются интерфейсы. Я вроде понимаю (для того чтобы в них писать универсальные методы?) а вроде и нет.
>>1717739 Это одна из реализаций полиморфизма. Допустим, ты хочешь, чтобы у тебя какой-то метод принимал разные типы и с ними работал, и с этими типами ты работаешь через их методы. И вместо того, чтобы писать десяток копий одного метода с одинаковым телом, но разными типами параметров, ты указываешь один интерфейс, в котором указано, какие методы должен реализовывать тип. Ну и передаёшь.
>>1717797 Чтобы написать только один метод вместо нескольких одинаковых. К тому же с перегрузкой придётся для каждого нового типа этот метод писать заново.
>>1717811 Так, окей, я немного потыкал модули. Возможно, нужны. Хз правда, как они уживутся с мавеном, у которого свои модули, да и версионирования как в мавене нет.
>>1717840 Можно разбить код большого приложения на несколько взаимозависимых модулей, у каждого наружу будет торчать api, внутри будет impl. Код получается более структурированный и менее связанный. Своего рода инкапсуляция. Будет несколько небольших жарников/варников, которые можно деплоить отдельно, вместо одного большого, Но это всё в теории.
>>1717887 И что? Я скопировал и не работает нихуя. Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x17f6e27d) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x17f6e27d
>>1717980 Блять. Ты заебал. Модешь нормально сказать что к чему? Работало с пусто сценой. Стоило добавить загрузку из fxml и перестало. Перестало, потому что там стал вызываться этот ебаный FXMLloader из-за которого надо стало добавлять этот modul-info.java из-за которого все сломалось.
>>1717983 Ну бляяяяяя... [ERROR] Could not find goal 'compile' in plugin org.openjfx:javafx-maven-plugin:0.0.4 among available goals jlink, run -> [Help 1]
Ну почему все так сложно. Почему все через жопу. Почему ничего не работает?
>>1717984 У менч нету никаких модулей. Я еще раз говорю. Этот модуль FXMLLoader не может получить доступ к Контрол. Это не работает без файла modul-info.java. Я создавал новый проект, все то же.
>>1717987 >:0.0.4 Анахуй ты на 0.0.4 поменял? Я тебе для 0.0.3 показывал! Куда ручонками лезешь своими? в 0.0.4 надо mvn clean //вытереть жопу mvn compile && mvn javafx:run
[ERROR] Failed to execute goal org.openjfx:javafx-maven-plugin:0.0.3:compile (default-cli) on project Diplom: Execution default-cli of goal org.openjfx:javafx-maven-plugin:0.0.3:compile failed: Unable to load the mojo 'compile' in the plugin 'org.openjfx:javafx-maven-plugin:0.0.3' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.Componen tLookupException: org/openjfx/JavaFXCompileMojo 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
>>1717991 Там в конце написано, что версия джавы не та. Ты весь день не мог прочесть, что надо запускать плагином, а не просто тыкать main Не нужен тебе дииплом.
>>1718000 Блять, это не мой диплом. Не спрашивай почему так называется. Но, во-первых,все работало нормально и через запуск через идею. Во-вторых, что значит версия не та? какого хуя?
>>1718018 Теперь вот это дерьмо: Ну за что?! Почему?! Ненавижу, суука!
Caused by: java.lang.NullPointerException: Location is required. at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3230) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3194) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3163) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3136) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3113) at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3106) at GUI.Main.start(Main.java:30) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) ... 1 more
>>1717905 >Можно разбить код большого приложения на несколько взаимозависимых модулей, у каждого наружу будет торчать api, внутри будет impl. Код получается более структурированный и менее связанный. Своего рода инкапсуляция. Будет несколько небольших жарников/варников, которые можно деплоить отдельно, вместо одного большого, Но это всё в теории. Не неси хуйни, тут речь про Jigsaw. Который хуйня. Но ничего сложного там нет.
Подскажите наиболее RESTful вариант маппинга операций с ресурсами в URL. Понятно, что это должно выражаться HTTP методами, но для чего-то сложнее CRUD их не хватает.
Нормально ли обрабатывать данные из бд в запросах или правильнее брать онли роу данные и обрабатывать их в жабьем коде? Ну, например, если в бд лежит массив и мне надо найти минимальный элемент в нем. Правильнее будет написать запрос или обработать в коде?
>>1718084 Нормально, если юзать самые общие оконные/агрегатные функции, встроенные в СУБД. Плохо - когда начинаешь писать хранимые процедуры с бизнес-логикой.
Как уже сказали выше, для остальных операций оспользуй post. Location это хедер в ответе, поставляется всегда когда ты создаешь новый ресурс, даже с обычным "POST /users" должен идти, т.к. ты создаешь нового юзера. И там обычно абсолютный урл принято ставить.
Почему выбрали именно post спросишь ты? И тут тебе нужно познакомиться с термином idempotent. Метод является идемпотентным, если его вызов несколько раз подряд не меняет состояния на сервере после выполнения. Именно на сервере, потому что многие спорят, является ли метод DELETE идемпотентным, ведь он возвращает разные ответы. Да, является. Да, несмотря на то, что первый вызов "DELETE /users/123" вернет 200 OK, а последующие - 404 NOT_FOUND. Состояние на сервере не изменилось - ресурс был удален еще в первый вызов. Так воот, метод post - единственный метод, который не является идемпотентным, т.е. не является "безопасным" для множественного вызова. И его нельзя кешировать, тогда как идемпотентные в принципе можно, но это обычно только для гетов делают и то в зависимости от того сколько ресурс должен быть валиден, секунды там или дни, в общем, в зависимости от бизнес логики уже.
Локейшн не нужен. Сомнительные HTTP-коды тоже не нужны. И так же понятно, что операция выполнена успешно. Response 200 OK {"success": false, "error": "not found"}
>>1718229 >Сомнительные HTTP-коды не нужны Тут действительно стандарта нет, есть две схемы - использовать http коды или обходиться кодами только в пейлоаде. Выполнил по фасту квик сюрвей, результаты: 1) тумблр: 201 Created и другие коды 2) слак: похоже, везде 200 и коды только в пейлоаде 3) твиттер: 201 нет, но какое разнообразие кодов ошибок
>Локейшн не нужен Не нужен. Но так принято. Почти всегда в теле будет нужный ресурс с его id. Но если тело просто не нужно, например, вебстраница тут же сделает редирект, то можно одним локейшеном обойтись. Но в наше время уже не принято экономить на теле ресурса, несолидно.
>>1719051 Ты не можешь переопределить статический метод, у тебя каша в голове. Переопределение - это обязательно новый инстанс метод. Инстанс метод переопределяет другой инстанс метод. Но инстанс метод не переопределяет статик метод (пикрил 1). А то, что ты наверняка имелл ввиду под "переопределением статического метода" - объявление нового статического метода с тем же именем в потомке, не является переопределением, не использует полиморфизм (пикрил 2), и вполне безопасно и допустимо.
>>1719076 Надо вообще убрать к хуям ООП, скобки, code conventions, чтобы было просто полотно кода через ; и всё с маленькой буквы. И в одном файле ещё.
>>1719067 Хотел узнать, зачем это нужно. Переопределенные методы можно вызывать ссылкой на базовый класс. Статические же будут вызываться в таком случае всегда из базового класса. Получается, просто для красоты сделано, а какой-нибуть недо-макакер вроде меня может допустить ошибку на пустом месте. Хотя, java в этом плане все равно лучше c++, не делается 1 действие 10 разными способами.
>>1719191 Статические методы не положено вызывать на объекте класса, это bad, terrible practice. На пикрил 2 в >>1719067 я показал что так можно сделать и будет вызван метод типа ссылки, а не типа реального объекта. Но так делать никогда не нужно. Статические методы всегда нужно вызывать на самом классе, тогда и не будет путаницы: Def.a(), Abc.a(). Сравни строки 1597 и 1598 на пикриле 1. Результат будет один и тот же, но семантически выражение в 97 не имеет смысла: нельзя получить абсолютную дату (данным методом) из относительной текущей. Поэтому статические методы и вызываются на классе и принадлежат классу а не объекту - они делают какие-то общие штуки, не относящиеся к конкретному инстансу класса. А вводить новый статический метод в классе-потомке может быть нужно чтобы переопределить логику старого метода, напр. пикрил 2.
>>1719717 >2003 год >Устанавливаем JVM 1.2 настройками в реестре и перемещениями DLL на диске Понравилось, я беру. Артем, а по спрингу у тебя есть что-то похожее?
Объясните, пожалуйста, за модули. Для чего они? inb4: для модульности
Типичная задача: получить данные (1), обработать (2), записать куда-то (3), потом выдавать по требованию (4). Формат: микросервис.
Наш воркфлоу обычно такой: компоненты 1, 2 и 3 (предполагается что они достаточно большие) выносим в отдельные артефакты; они ничего не знают друг о друге, обеспечивая loose coupling еще на этапе архитектуры. Каждый артефакт разрабатывается отдельно, вплоть до того что разные команды могут писать разные артефакты одной системы (это уже не начинает выглядеть как микросервис, но не придерайтесь, речь не про это). Артефакт содержит свои классы, выставляет апи наружу, имеет возможность конфигурации извне, собственные тесты, иногда метод main, что позволяет его использовать как консольную утилиту. Артефакты устанавливаются в приватный мавен репозиторий. Далее спринг-бут приложение (4), в депенденси три артифакта, создаем контроллер, связываем все быстренько. Компонент (3) проектируется как I/O, позволяя не только записывать, но и доставать данные для выдачи в (4). Поддержка такого приложения: апдейтим компоненты 1/2/3, перекомпиливаем, перепаковываем, устанавливаем в репо, в основном приложении апдейтим версию измененнго артифакта и перепаковываем.
>>1719913 Ты точно выбрал не тот язык, чтобы писать либы, и за полгода вопросов "чёбнаписать" уже можно было это понять. Здесь реально написано вообще всё, сиди да пиши бизнес-логику, Лучше возьми какой-нибудь Rust, где с либами всё действительно плохо.
>>1719942 >Здесь реально написано вообще всё И что? Это не повод не писать ничего нового. То, что уже написано может быть неудобным, неэффективным и т.д. Есть вещи, которые уже не переплюнуть, например AssertJ, но это все же редкость.
>>1719946 > То, что уже написано может быть неудобным, неэффективным и т.д. У тебя есть конкретные примеры? Если да, тогда в чём вопрос? Бери любой и улучшай. От этого пользы намного больше, чем решать несуществующие проблемы и в очередной раз писать рейтрейсеры/крестики-нолики/строковые шаблоны./идентиконы.
>>1719951 >У тебя есть конкретные примеры? Если да, тогда в чём вопрос? Нет, но я и не знаю абсолютно все существующие библиотеки и их проблемы. Для тех задач, которые я обычно решаю, все уже нормально написано.
Вообще, у меня появилась идея. Поищи крупные опенсорсне проекты на джаве и: - почитай их багтрекер, вдруг появятся идеи - поищи классы-утилиты, их обычно пишут как раз из-за недостающих либ. Но вряд ли там можно достаточно наскрести для полноценной либы.
>>1720013 Да. В идеале такое допускать не следует, ибо не типобезопасно, да и код, принимающий предка, ничего не должен знать о свойствах потомков. Но в реальности всем похуй.
>>1720029 Про какой-то сакральный смысл подумал, хотя логично, что будет дырка в памяти, если сделать Child c = (Child) new Parent(); Кароч надо спать идти, как всегда начал ночью учить.
>>1720050 По той же причине, по которой нельзя записать: Б б = new А();
В Б есть поля, которых нет в А. Чем их инициализировать, если есть значения только для полей из А? Можно было бы инициализировать дефолтными null/0/false, но более вероятно, что кодер ошибся, чем реально этого хотел.
Хочу написать метод для коробки class Box который будет выдавать оставшееся место после того я с помощью метода положу туда какую-нибудь форму например цилиндр или шар.
Объемы шара и цилиндра у меня есть. Но есть одна проблема. Метод коробки putInTheBox не хочеть принимать объект. Говорит что это не статический контент. Если текст метода поместить в main то все получается, но когда я запускаю метод происходит ошибка. Я новичок и не совсем понимаю, что я делаю не так. Но я знаю что не хочу в main держать ничего кроме вызова метода.
>>1720518 Твоя проблема скорее всего в следующем. Ты не стал для классов коробки и цилиндра делать отдельные файлы, а зафигачил их "внутренними классами", причем не указал для них модификатор static.
Если я правильно понял, исходный код на java это просто библиотека классов, а компилятору надо указать, с какого класса начинать и он все используемые классы переводит в бинарный вид?
Аноны, поясните за java. Решил попробовать запустить локальный сервер одной ммо дрочильни и столкнулся с рядом проблем, т.к. гайд по запуску сервера старый, я даже не надеюсь на помощь от туда, поэтому ищу проблему императивно от .bat файла до src кода (как я изначально предполагал, но уже не уверен, что это выйдет).
Вот пример лога, высравшего исключения в файлах: >at launch.main.LauncherMain.loadConfig(LauncherMain.java:43) >at launch.main.LauncherMain.run(LauncherMain.java:69) >at launch.main.LauncherMain.launch(LauncherMain.java:108) >at accountserver.AccountServerMain.main(AccountServerMain.java:16)
Покопавшись в в этих .jar файлах с одноименными названиями, я предположил, что LauncherMain, например, есть ни что иное, как класс, содержащий методы loadConfig, run, launch (могу ошибаться). Но открыв .jar файл архиватором, я понял, что исходного кода там нет. Вместо него, похоже, что-то вроде объектных файлов .class
Вопрос: можно ли как-то получить содержимое этих файлов в виде читабельного java кода?
Я пишу только на с/с++, поэтому java для меня - темный лес, включая устройство ее JVM.
>>1720713 Исходники на джаве из java-файлов компилируются в байткод в виде class-файлов. Можно декомпилировать с помощью какого-ниубдь jd-gui или аналога, результат намного более читаемый, чем ассемблерные листинги в плюсах, но названия переменных будут скорее всего похерены.
Вопрос на будущее: если удастся декомпилировать и исправить код, достаточно будет отдельно скомпилировать этот файл обратно в .class и засунуть в .jar? Или нужно будет все файлы из .jar доставать и компоновать их все вместе с помощью какой-нибудь утилиты для компиляции?
>>1720750 Думаю, заработает, но не пробовал. При компиляции (javac) нужно будет указать этот жарник, чтобы декомпилированный класс смог найти определения, которые он юзает.
>>1720750 В теории, да. Но на практике могут быть трудности. Типа транзитных зависимостей которые отсутствуют в приложении с ленивой загрузкой классов, это нормальное явление Плюс обсфуцированный код может не декомпилироваться нормально.
>Как правильно разделять логику модели и логику контроллера? В общем случае твоя модель должна делать бизнес-логику вне зависимости от выбранного способа клиент-серверного взаимодействия.
Возьми свой аккаунт-сервис и представь, что завтра захотят добавить к нему веб-сервис, т.е. JAX-WS; после завтра захотят RESTfull API для SPA фронтенда, т.е. JAX-RS; после после завтра засунут в кластер и захотят инжектить в другие бины как JNDI-ресурс.
Та, общая для всех способов, функциональность, которую в итоге ты вынесешь в EJB-сервисный слой, и будет моделью; остальное — контроллерами. То же справедливо и для десктопных приложений; так же и для SPA.
>Пользователь отправляет данные в виде юзернейма, email и пароля. Я минимум должен проверить что эти поля не пустые иначе вернуть ошибку. Это я должен проверять в контроллере, верно? Да, это валидация веб-формы, специфического способа клиент-серверного взаимодействия. >После мне нужно проверить, что юзернейм не используется и почта не занята. Это условия создания нового аккаунта, т.е. бизнес-логика данного приложения. Значит она уедет в сервисный слой. Обычно в случае нарушения условий из сервисного слоя кидают кастомные checked-exception-ы, которые затем обрабатываются в контроллерах.
>>1720896 Я тогда даже не думал стать кодером. И думал, что джава - это некий формат, чтобы делать игры для мобилок. Ещё нужно было редактировать манифест, чтобы приложение было правильного разрешения и не спрашивало каждый раз, можно ли opera mini ходить в интернет, лол.
>>1721303 Что значит опять? Я с жавой не имел ничего общего ранее. Алсо, это не майнкампф, это сервер для ЗБТ Аллодов Онлайн (v1.1 2009 года). Раньше писал только для себя сервера на Node.js для web-сайтов, тут же все как-то сложнее и иначе.
Вообще, не имел еще дела с такими громоздкими проектами. Даже боюсь, что потрачу дохера времени и не получу выхлопа/заброшу, но пока, вроде, интересно.
Вообще, интересно, как можно взять и написать сервер для закрытого проекта без исходников? Это напрямую связано с реверс инженерингом? Или есть способы проще?
Вызов статической переменной типа класса B, определенной внутри класса А, внутри любого метода является одним и тем же? 1. variable = 1; 2. B.variable = 1; Если является, как лучше оформлять в коде? Если нет, то чем отличаются два вызова?
>>1721967 Потому что var - это вывод типов, а не дженерик или вариант. Компилятор выводит тип из инициализирующего значения. В качестве параметра метода он этого сделать не может, ведь заранее неизвестно, с каким типом он вызовется. А тип должен быть один конкретный, а не меняющийся от вызова к вызову.
>>1722018 Нет бы кусок кода сфотать или скопировать, нет, блядь, будем долго объяснять словами чтоб запутать сильнее. У тебя код под NDA? Нихера же непонятно из твоего описания. Сумничать хотел, да? Ок, давай по частям разберем тобою написанное. >Вызов статической переменной типа класса B Вызов, блядь, у него. Статической переменной, блядь. Откуда вы лезете, вкатывальщики? Вызываются методы, а к переменным - обращаются. Переменная не может быть статической, статические могут быть поле, метод и класс. Ладно, пробуем понять что имелось ввиду. >статической переменной типа класса B ок.. >определенной внутри класса А ок... Значит как-то так? class B { private static Object variable; // что variable это тоже статик поле я вывел из пункта 2: B.variable } class A { private static B b; // статическая переменная типа класса B, определенная внутри класса A private void hello() { b.variable = null; } } Все равно нихуя не сходится, т.к. какой бы ты ни был ленивый неумный долбоеб, ты не можешь вызвать variable пунктом 1, но ты наверняка вызываешь, значит объяснил херово. В общем, разбирайся сам, доброй ночи.
>>1722135 Тогда это в документации роутера надо смотреть. Сама джава об этом ничего не знает, она просто юзает порт, если удалось подключиться. А если не удалось, ничего с этим поделать не может.
Я понимаю, что всех заебал, последний вопрос. Почему это работает? Ведь когда мы переопределяем метод, он переписывается в базовом классе. А тут получается, что мы переопределили метод в наследнике и обратились к методу базового класса.
>>1722258 Мне не понятно, как работает слово super. Если бы мы обращались к области памяти суперкласса в нашем классе, то по идее, мы должны наткнуться на эту же функцию и зациклиться, так как мы ее переопределили. А тут получается, переопределили метод и вызвали метод интерфейса. Где в таком случае хранится метод?
Как меня задрал этот рыгадл, ей богу такая параша, свет не видовал. Нестабильное и капризное говно. Assemble, failure, clean, assemble, failure, assemble, failure, clean, assemble, success. Ну как такой парашей можно пользоваться. У меня с мавеном, проблемы раз в сто лет и зачастую, это какая нибудь хрень со снапшотами, эта же параша мне каждый пять минут фейлит сборку. Поддрежка IDE через жопу, а собственно чего ожидать от говноскриптов, вместо декларативного языка. Как им можно вообще пользвоваться? Чистить какие-то кеши вечно надо, хрен проссыш почему че-то не собирается. Пердолюсь вечно с этой блевотиной, бывает по часу-полтора, не тянет зависимости хоть ты обосрись, проверил в мавене, все ок. В этой параше ничерта. То с того не с сего перестал компилировать код, нет метода и такого и всё. Только что собиралось и собираешь второй раз, в коде ничего не изменилось, и всё не собирается. А гугл ещё своих андроидошлеперов пересадил на это говно.
>>1722361 Я тут >>1722018 ошибку допустил в >2. B.variable = 1; Там должно быть >2. A.variable = 1;
Суть вопроса не изменилась: как лучше/правильно вызывать? Чем эти вызовы отличаются в контексте реализации класса, в котором эта static переменная определена.
>>1722361 >>1722371 Ну вот, так намного понятнее, спасибо. TL;DR: Всегда используют (1), никогда не используют (2).
Обращаться к полю log в данном контексте можно и так, и так - (1) и (2) полностью тождественны и взаимозаменяемы. Разница та же самая, как и с обычными не-статик полями класса: можно указать ключевое слово this, а можно не указывать (this.abc = 1). Соответственно, и применение такое же: если происходит shadowing - скрытие поля класса за локальной переменной при одинаковых именах - то используем уточняющий способ. Пик 1 и пик 2 соответственно примеры shadowing для разных случаев.
В случае с логгером ситуация еще более интересная: static + final поля это т.н. константы, а по контракту стиля константы во многих языках, и в Java в том числе, пишутся капсом (пик 3 из стандартной библиотеки). Но логгер это такое интересное исключение, когда люди хотят писать меньше, хоть это и константа. Поэтому тут не LOGGER, а короткое log, именно для юзабилити. Следовательно, обращаясь к логгеру через имя класса, ты руинишь данное юзабилити.
>>1722473 Понял, спасибо. А static переменные без final помечают префиксом "s_"? В смысле: это оговорено стандартом оформления? Или дело вкуса? Вообще, не понятно теперь только для чего все эти стандарты существуют, если каждый разработчик волен делать сотню другую своих исключений.
>>1722500 "s_" в статиках никогда не видел. Вот "m" (от слова "member") в инстанс полях класса ставят часто, например, int time = mTime; // префикс в mTime указывает на то что это поле класса Но лично я именно этого правила не придерживаюсь, мне кажется это лишним - во-первых, по-уродски выглядит, во-вторых, любая IDE все равно подсвечивает поле класса по-другому нежели обычную переменную. Единственный практичный юзкейс данного правила - это при написании имени поля начать писать его с "m" и автодополнение подсказывает тебе в первую очередь поля класса, т.к. они все начинаются с "m", и можно выбрать из списка. Так что да, у многих свои предпочтения, формируются с практикой.
Статики, к слову, вообще не часто используются. Это типа глобальный переменных, а глобальные переменные (в любых языках) любят новички, но совершенно не любят люди постарше. Вот хоть даже котлиниста спроси. В джаве статики подходят для хранения констант, и все. Хранить в статиках какое-либо состояние класса это bad practice, это делает класс сразу по-умолчанию не thread-safe и ограничивает применение. Многие сейчас вообще отходят от хранения состояния класса даже в обычных полях, это т.н. stateless классы и чистые функции.
>>1722473 >serialVersionUID Я думаю это не исключение. Сокращения принято писать с большой буквы же. А если написать всё капсом SERIALVERSIONURL получится хуита. >>1722545 >глобальные переменные любят новички Удобно же. Забил в одном месте название какой-нибудь таблицы, например, и везде используешь, потом когда нужно поменять эту константу, то ты поменяешь её только в одном месте, а не везде. Вероятность ошибки тоже снижается.
>>1722935 >потом когда нужно поменять эту константу >константу Я и сказал что константы это единственное безоговорочно-оправданное применение статиков. А с новичками не то. Они любят хранить в них состояние приложения, потому что это удобно. Я часто на ревью кода вижу такое:
class Monster { public static int count = 0; public Monster() { count++; } }
class Player { public void killMonster() { Monster.count--; } }
class Game { public boolean checkWin() { return (Monster.count == 0); } }
Теперь, если ты не новичок, попробуй объяснить почему это плохо.
>>1722985 В плюсах же есть куча способов блокировки критических секций кода, когда дело касается работы с потоками. Неужели в java нет похожик механизмов? Если есть, то что плохого в использовании static'ов? мимо
>>1723082 Всеми любимые собесы. Это кандидаты выполняют мое тестовое задание с использованием своих лучших практик ООП, пре-интервью (домашнее задание). Консольная игра, не интерактивная (запуск через command-line), с многопоточностью, да. Тестируется автоматически на ввод/вывод, а потом я еще код смотрю. В прошлом или позапрошлом месяце на хабре статья была "Кандидаты не умеют кодить" или что-то такое, в общем про то что людям даешь задание написать реально что-то и многие тут же сворачиваются в трубочку. Наблюдал лично не раз.
>>1723025 >Такие константы - это по сути глобальные переменные. Со всеми вытекающими. Вот этот анон понял идею.
Но я ожидал услышать больше) Например, очевидное нарушение инкапсуляции в примере, но это видимо слишком очевидно и никто не стал упоминать. Но с этого следует начинать. Спрячем переменную за методом, получим статический метод. Чем плохи статические методы? 1) Наследование. Не наследуются. А зачем? Ну вот хочу я в class DigDigMonster extends Monster тоже считать монстров, но уже подтипа. Не могу. А если я не просто их считаю, а в статик методе какая-то логика выполняется, то либо копировать код, либо выносить в отдельный метод - данные тут, обработка там. А если есть объект класса и нужно посчитать свой тип? Было бы неплохо вызывать метод прям на объекте... И тут мы изобрели ООП. 2) Тестирование. Не тестируются. Mockito не мокает статики принципиально. Другие либы мокают, но пострадает твоя совесть в энтерпрайзе не используются. 3) Класс-лоадеры. Вот тут наверное многие реально удивятся, кто считает что статик - это гарантированно уникальное поле. Берем второй класслоадер, загружаем класс, и Monster.count опять 0. Зачем второй класслоадер? В стандартном EE сервере в вакууме обычно несколько класслоадеров, каждый ответственнен за свой домен классов - пользовательские, системные. Не нужно гадать как именно твой класс загрузится двумя класслоадерами сразу, важно осознавать что такое в теории возможно и применять превентивные меры.
>>1723130 А в классах-утилитах делают статик методы. Даже популярные библиотеки апачей тому пример. Такие классы делают, когда лень пилить ооп и паттерны?
>>1723156 Не лень, просто ООП плохо для такого подходит. ООП - это в первую очередь много однообразных данных. В утилитах данных, кроме констант, нет, и лучше всего здесь подошло бы процедурное программирование, но поскольку в жабе принудительное ООП и тупо нет функций, делается именно так, даже в стандартном java.lang.Math. Важно, что статик методы в утилитах никак не влияют на глобальное состояние, они просто принимают одни объекты, что-то с ними делают, возможно, возвращают другие объекты. И в таком использовании проблем нет. Проблемы начинаются, когда статик методы начинают лезть в статик поля. Да и вообще, не-final статик поля - зло.
>>1722950 Назовёшь так поле, потом в спринге будешь писать SERIAL__VERSION__URL. С двумя __, да. Уж лучше с маленькой, как в оригинале. >>1722985 Я новичок, не могу объяснить почему, но делать статическое поле изменяемым интуитивно мне кажется плохой затеей. Статик методы/поля они ж доступны без инстанса класса. А какое тогда значение будет изменять count? Когда оно инициализируется? Что будет если несколько монстров создать? А хуй знает. Думать надо. А думать лишний раз мне лень. Поэтому я бы не стал делать так.
>>1723156 В классах-утилитах статик методы это скорее функции. А выше анон про методы классов расписывал и почему их там плохо использовать. Это разное, короче. В первом у тебя просто универсальная штука, грубо говоря, как отвёртка, взял её, сделал что нужно где угодно и бросил обратно. А во втором случае это электродрель и она наглухо приварена к столу (классу) и без него работать не будет. Вернее не должна, но кто-то её зачем-то сделал паблик, да ещё и статик. А значит найдётся ещё такой же дятел, который обязательно попробует.
>>1723367 >А какое тогда значение будет изменять count? Когда оно инициализируется? Что будет если несколько монстров создать? Иди в учебнике прочти про static. Когда оно инициализируется у него, охуеть вообще. У тебя ИДЕшка под рукой, иди проверь.
>>1723441 Да нахуй мне это надо? Создавать классы со статик полями и ещё изменять их потом, блядь, это шизофазия чистой воды. Ещё и думать, что там получится в итоге, ахуеть!
>>1723432 Это не я выдумал. В спринг дата _ это как /. И если ты захочешь написать метод, например findbySERIAL__VERSION__URL, то надо будет второй андерскор ставить. tldr code convetions не просто так написали.
>>1723499 >В спринг дата _ это как /. Нихуя не понял. >И если ты захочешь написать метод, например findbySERIAL__VERSION__URL Какой код по МКБ должен быть, чтобы захотеть такое?
>>1723508 Ты такие охуевшие проги пока не сможешь в соло написать. Хотя можно зациклить new Runnable -> охуенныйАлгоритмOn!(), чтоб забить озу в миг, но это уже приколы.
Смотрите, мне надо кэшировать выхлоп сервлета после JSP в HTML файл. Т.е. пользователь посещает /someshit.do, сервлет обрабатывает информацию, генерирует HTML с помощью JSP, а затем должен этот самый HTML записать в файл и послать пользователю редирект на этот самый файл, а не выдавать динамику. НО КАК? Самый очевидный способ это через Враппер и переопределение GetWriter, чтоб он записывал все это в приватное поле и выдавал потом, но это как-то костыльно. Есть идеи/мюсли, господа?
как получить из ByteBuffer байты от .. до .. например байты от 0 до 2^16 типа как в питоне slice. Хочу переслать ByteBuffer через UDP, нужно разбить его на части и по частям отправить
>>1723570 Что значит получить? Есть limit и position, которыми можно задать откуда и до куда будет работать get(). Есть get(byte[]) который копирует данные с текущего position в указанный массив байт, есть аналогичный метод с ByteBuffer. Есть slice() который возвращает view над текущим буфером в границах limit и position.
>>1723733 есть payload там байтов больше 65 кб делаю так: выделяю память для пакета: ByteBuffer packet = ByteBuffer.allocate(max_packet_size); копирую из payload первые 65кб в пакет: for (int i = 0; i < max_packet_size; i++) {// (это для примера)так отправятся только первые 65 кб пейлоуда packet.put(i, payload.get(i)); } отправляю пакет: channel.send(packet,addr); это всё в цикле while который выполняется столько, на сколько пакетов был разделен payload. можно как-то вместо цикла for или как-то иначе скопировать сначала первые 0 ... 65535 из payload в пакет и отправить, потом скопировать следующие 65536 .... 2*65535 из payload в пакет и т.д. иначе с границами ебатория такая...
>>1723786 Можно position поставить в 0, limit не ставить. У packet сделать reset(). Потом payload.get(packet) - это автоматически переместит position, так что надо просто проверять сколько там еще осталось.
Но это будет вызывать копирование данных, а position + limit позволяют обойтись без копирования. Все го то делов один счетчик + проверка границы.
Что это? Как это работает (я про метод sure)? public interface Context<T> { ..@NotNull <E extends T> E sure(int paramInt); }
Вот его вызов: @NotNull public static ApproveListener get(@NotNull Context<AccountServerObj> context) { ..return (ApproveListener) context.sure(s_accountContextId); }
Про обобщенные интерфейсы я читал, похоже, это аналог темплейтов в плюсах, но мне не понятно, как интерфейс может быть параметром метода. В конечном счете все сводится к тому, что IDE жалуется на этот участок кода, который содержится в пакете "package accountserver;": public static void shutDown(@NotNull AccountServerContext context) { ..ApproveListener.get((Context) context).shutDown(); ..............................^ }
>Inconvertible types; cannot cast 'accountserver.context.@org.jetbrains.annotations.NotNull AccountServerContext' to 'system.base.Context'
Код писал не я. Я в нем только разбираюсь, подтягивая постепенно требуемые файлы из import'ов, но он должен быть рабочим.
п.с. В import был только этот интерфейс "import system.base.Context", содержимое которго указано в самом начале поста. Других файлов в пакете "accountserver" с именем Context нету.
>>1723896 В общем, добавил я еще десяток файлов в проект, передумал выебываться и подключать сразу новые версии библиотек, где структуру классов/методов могли изменить/мигрировать (заменил на пакеты .jar, которые использовал именно он).
Конкретно эта ошибка пропала, но я все равно не понимаю суть этого интерфейса Context с его методами со странной записью: ><E extends T> E sure(int paramInt);
send(DatagramChannel channel, ByteBuffer payload) { // разделить payload на пакеты // отправить один пакет // ждать ack отправленного пакета в том же канале (вызывается функция снизу!) // if (ack получен): отправить следующий // esle: ack не получен через некоторое время, отправить пакет заново }
это в потоке: while(true) { recv(DatagramChannel channel) { // получил пакек // отправить ack } }
>>1724033 Хороший сайт, недавно его нашел. Кстати, так и не допетрил, в чем разница между Сlass Transaction<T extends Account> и Transaction(Account from,Account to, int sum){...} Было что-то про небезопасность типов, вроде, но я не понял, в чем разница. Можно предположить, что с помощью метода public T getAccount() мы можем получить целый объект, а с помощью public Account getAccount() только базовую ссылку, которую нужно приводить обратно, и это небезопасно. Но если мы это не используем, нет смысла использовать <T extends Account>?
>>1724610 Ага, сначала просто подключаешь либы, затем хочешь правильно копировать ресурсы, подключать плагины для сборки фронтенда, плагины для миграция, плагины для линтера, деплой, модули, профили, и вот твой помник уже на 10К строчек. Намного удобнее ведь это делать мавеном, чем самописными кривыми скриптами.
Блокнот не детектит "\n", но детектит printStream.println(text). Пробовал "Windows-1251" и "UTF-8", при чем в других редакторах все норм. Если обратно считывать на консоль, тоже норм. Не ебу, в чем дело. Сохранял в разных форматах.
Я тот анон, который собрался декомпилировать jar файлы одного сервера. Не понимаю как такое возможно, ошибка ли это декомпилятора, или же ошибка того, кто писал код. Как это определить?
Вот примеры на пиках: 1. Жалуется, что такого типа исключения в принципе не может выбросить. Что остается делать? Удалять/комментировать строчку... 2. Далее, в этом же методе нет return'а вообще. Чья ошибка? Хуй его знает, ставлю заглушку return null. 3. IDE, либо компилятор не могут различать типы List<Boolean> и List<Integer>, поэтому перегрузка не возможна. Может это особенности языка? Я не знаю. Но факт остается в том, что этот код, блядь, написан был кем-то в какой-то IDE, возможно, с какими-то особыми флагами компиляции, которые позволили игнорировать такие конструкции. Иначе я хз, как можно объяснить такое.
И таких ошибок тысячи! Я не знаю что делать, если ли смысл продолжать долбить этот код, чтобы придти к тому, что декомпилятор криво восстановил код, который изначально можно было спокойно удалять и забыть про эту идею вообще? Или таких критичных ошибок у декомпиляторов быть в принципе не может, чтобы пропускать целые куски полезного кода?
Известно одно: код был написан в последнем десятилетии, был скомпилирован, он рабочий, но приложение срет исключениями в консоль (из-за этого собственно и возникла идея разобраться в этом/исправить баги), некоторые функции не работают или работают не так.
>>1725380 >2. Далее, в этом же методе нет return'а вообще. Чья ошибка? Хуй его знает, ставлю заглушку return null. Там выполняется запрос, но его результат записывается в переменную и всё.
>>1725520 Это понятно, но функция с типом подразумевает, что этот тип должен возвращаться, не? Не важно что происходит в коде, важно то, что у меня тысячи ошибок, которые нужно вручную исправлять, а я даже не могу знать - рабочий ли я код вообще правлю или нет... И ведь этот код был в каком-то виде, который был удачно скомпилирован (иначе этих jar файлов бы не было).
>>1725380 > ошибка ли это декомпилятора Такое возможно, попробуй другой декомпилятор. Я вообще как-то натыкался на декомпилированный код с goto.
> или же ошибка того, кто писал код Это бы не скомпилилось, разве что автор другим способом сгенерировал class-файлы (вручную, например). Но не уверен, переваривает ли JVM подобное.
>>1725537 >попробуй другой декомпилятор Если бы еще было из чего выбирать... Я и так использую, наверное, лучший из всех - JD-Core, обернутый в JD-GUI. Даже тот, что встроен в Intellij IDEA - fernflower, оказался хуже. Например, он не распознает коллекции почему-то, типа List<Integer> и декомпилирует, как List. Но с другой стороны, в некоторых частях кода, он исправляет косяки JD-Core, который объявляет переменную после ее использования. Но даже в совокупнусти оба декомпилятора не могут обеспечить 100% верный синтаксически код.
>разве что автор другим способом сгенерировал class-файлы (вручную, например) Что значит вручную? Вручную компилировал с javac? Даже если так, у этого компилятора есть флаги, позволяющие такое игнорировать? Или может в старых JDK такое можно было компилить? Или может вообще есть какие другие компиляторы у java?
>>1725594 > Что значит вручную? Это гипотетически, не думаю, что кто-то реально таким занимается. Я имею в виду, что автор, например, сгенерировал class-файлы с помощью какой-нибудь либы. либо вообще изучил спецификацию JVM и сделал сам. Было бы более вероятно, что он взял другой компилятор (да, они есть, в той или иной степени мёртвости), где нет подобного запрета. Но это всё херня, наверняка декомпилятор просто ошибся, и если jd-gui действительно лучший, то остаётся только исправлять все ошибки и надеяться, что заработает.
>>1725594 UPD: Проблема еще в том, что я хотел разобраться по этому коду и понять, как это работает в действительности. Поэтому я не могу в 98% случаев понять правильно, что хотел сделать автор кода и подправить косяки. Все что я могу - это надеяться на то, что код правильный и IDE умная, которая советует НЕ хуйню.
Еще касаемо кода. В этих файлах я нашел код, содержащий в себе OpenGL API, представления примитивов. Так же нашел функции с названиями вида drawHUD, drawMiniMap и т.д. Казалось бы, зачем серверу это нужно? Разве не клиент должен этим заниматься?
Палю годноту https://www.jetbrains.com/academy/ JetBrains Academy will remain in the Early Access Program (EAP) with free access until July 1, 2020. If you already have an account or register on the Academy before July 1, 2020, you will continue to receive free access to all JetBrains Academy learning activities and resources until January 1, 2021, after which you will get a 50% discount off a paid subscription for the following 12 months making the price $24.90 per month. Хороший ресурс для изучения жабы
Пихаю в каждый публичный класс public static void main(String[] args). В идее в консоли во время рантайма мелькают выводы какого-то другого класса. Это она ебанулать или пихать везде main бэд практик?
>>1725380 2. Да это проблема и проблема декомпиляции. Тут надо понять, что там было в оригинале. Варианта 2 попробовать другой декомпилятор или смотреть непосредственно байткод. 3. В байткоде такие методы возможны, потому что там разный возвращаемый тип, а вот в Java коде такое и правда не скомпилируется.
В целом я бы советовал, взять минимум классов которые надо поменять и только их и декомпилировать. Остальное оставить как есть в jar Для проблемных классов попробуй http://www.javadecompilers.com/ с разными декомпиляторами. Ну и почитай про байткод иногда просто посмотреть байткод помогает понять, что там должно быть в методе.
>>1725787 Да. Без установки своих флагов, он именно так и декомпилирует у меня. Я пробовал ставить свои флаги, но получил только около 80% пустых файлов. Игрался так с ними часа 2, в итоге ничего не вышло, оставалось использовать по умолчанию.
>>1725832 Я попробую еще другие декомпиляторы, и попробую про байткод почитать. Вот, сейчас пробую CFR. Из вышеупомянутых примеров, 1 и 2 проблемы он решил, но при этом как бы намекнул: >WARNING - Removed try catching itself - possible behaviour change. Enabled aggressive exception aggregation Поэтому полагаться тоже не стоит. Результат на пике. Третий случай он абсолютно так же интерпретировал.
>В байткоде такие методы возможны, потому что там разный возвращаемый тип, а вот в Java коде такое и правда не скомпилируется Похоже, если в байткоде такое появилось, значит он где-то передал параметр с типом List<Boolean> в метод, который был написан только для List<Integer> и это у него, видимо, работало. Но я пробовал находить эти места, IDE ссылается только на 1 случай, где он передает List<Integer>. А другое упоминание toArray ссылается на методы JDK.
>В целом я бы советовал, взять минимум классов которые надо поменять и только их и декомпилировать. Остальное оставить как есть в jar Но как потом корректно скомпилировать class файлы и засунуть их в этот jar с сохранением всех зависимостей? Одно дело, когда есть настроенный проект, который можно как угодно собирать. Другое - когда надо собирать участок, зависимости к которому еще надо как-то правильно подтянуть, потому что он вне проекта собирается.
Вопрос: А вообще, работа декомпилятора может зависеть от версии пакета JDK, не считая случаев, когда современный декомпилятор по умолчанию требует свою минимальную версию этого пакета?
>>1726341 Объекты должны быть независимыми и каждый должен быть как отдельный организм, который можно запустить. Это правильное ООП от Smalltalk. Все есть обхект и они могут обмениваться сообщениями.
>>1726161 >Похоже, если в байткоде такое появилось, значит он где-то передал параметр с типом List<Boolean> в метод, который был написан только для List<Integer> и это у него, видимо, работало. Но я пробовал находить эти места, IDE ссылается только на 1 случай, где он передает List<Integer>. А другое упоминание toArray ссылается на методы JDK. Не совсем, вангую что там сигнатуры toArray(Ljava/util/List)[z toArray(Ljava/util/List)[I дженерики в байткоде не присутвуют за редким исключением. А вот различать методы по возвращаемому значению нужно именно для поддержки дженериков.
Напиши класс который implements Iterator<String> скомпилируе и поизучай его методы с помощью javap -p -s MyClass.class увидишь 2 метода next() один со строкой второй с объектом. В коде ты такое никогда не скомпилируешь.
>Но как потом корректно скомпилировать class файлы и засунуть их в этот jar с сохранением всех зависимостей? Одно дело, когда есть настроенный проект, который можно как угодно собирать. Другое - когда надо собирать участок, зависимости к которому еще надо как-то правильно подтянуть, потому что он вне проекта собирается Тебе надо вначале просто изучить классы и понять, в каких классах и какие методы тебе надо поменять. Дальше уже можно будут распаковать джар, удалить оттуда классы которые надо менять и создать проект с декомпилированными. И потом уже бороться с ощибками декомпиляции пары классов, а не пары сотен.
>А вообще, работа декомпилятора может зависеть от версии пакета JDK, не считая случаев, когда современный декомпилятор по умолчанию требует свою минимальную версию этого пакета? Эффективность работы декомпилятора зависит от версии JDK для которой билдился джар. Лучше всего декомпиляторы переваривают старые JDK, типа 1.6. А вот современные с их try-with-resource, invoke dynamic и прочими лямбдами - плохо. Если есть версии под старые JDK возьми лучше их.
>>1726348 Подход смоллтолка в джаве физически неприменим. В смоллтолке ты можешь передать вообще любое сообщение вообще любому объекту и получить "не понял" [spoiler, ]прям как в динамикодрисне python и js[/spoiler]. В джаве это тупо не скомпилится, и полумеры в виде полунастоящего ООП здесь бессмысленны.
>>1726380 А вообще существует открытая спецификация этого кода, где будут описаны все инструкциии их описание на примере кода java? Машина же как-то однозначно может декодировать этот набор байтов и исполнять его, значит должна быть спецификация. Но открыта ли она?
Вообще, я правильно понимаю, что в class файлах только и ТОЛЬКО инструкции на уровне JVM инструкций? Я пока еще особо не читал про байт код, но из того что пока нашел - это описание структуры class файлов на википедии https://en.wikipedia.org/wiki/Java_class_file Вроде тут что-то есть, а вроде и нет ничего, касаемо самих инструкций JVM.
И еще я подумал: если код в большинстве случаев декомпилируется правильно и даже восстанавливает имена перемнных, значит ли это то, что 100% не было применено никакого шифрования?
>Если есть версии под старые JDK возьми лучше их. Версии чего? JAR файлов, которые я пытаюсь декомпилировать или JAR файлы самих декомпиляторов? Если первое, то нету других версий, кроме 6u18. Именно под эту версию компилировались JAR файлы сервера. Если второе, то как условный декомпилятор той же 1.6 сможет сожрать инструкции какой-нибудь 10+?
п.с. Сейчас удалось добавить println в entry-point приложения. Оказывается, все зависимости были описаны в path-class одного из манифестов в JAR архивах. Похоже, действительно проще подходить к проблеме таргетно, меняя конкретные файлы, где вероятнее всего могла быть ошибка. Но минус в том, что дебаггера нет, и выявить ошибку в месте, где нет уже существующих логов или исключений, практически невозможно.
Глупый вопрос. А почему, когда я пишу код, нет никаких подсказок при его наборе, к примеру на пике System.out.println(" "); После точки появляется, а в начале написания нетпро sout знаю
>>1726906 Я собираюсь игру с графикой и многопоточностью запилить, но еще не придумал, какую. Естественно, ничего глобального, тип Doodle Jump или Танчики.
>>1726407 >А вообще существует открытая спецификация этого кода, где будут описаны все инструкциии их описание на примере кода java? Машина же как-то однозначно может декодировать этот набор байтов и исполнять его, значит должна быть спецификация. Но открыта ли она? Да существует: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html Тут только тонкость в том, что есть спецификация JVM (байткод часть этой спецификации), и есть спецификация языка Java, но вот связь между ними не специфицирована.
>Вообще, я правильно понимаю, что в class файлах только и ТОЛЬКО инструкции на уровне JVM инструкций? Да, ну плюс иногда там бывает дебаг инфо (имена переменных и номера строк).
>И еще я подумал: если код в большинстве случаев декомпилируется правильно и даже восстанавливает имена перемнных, значит ли это то, что 100% не было применено никакого шифрования? Да, обсфукации не было и даже компилировали с дебаг информацией.
>Версии чего? JAR файлов, которые я пытаюсь декомпилировать или JAR файлы самих декомпиляторов? Версии JAR файлов которые ты пытаешься декомпилировать. Если есть версии собранные под разные JDK то лучше взять под самую старую. Сами декомпиляторы надо брать последней версии.
>Но минус в том, что дебаггера нет, и выявить ошибку в месте, где нет уже существующих логов или исключений, практически невозможно. Кстати тоже вариант, ты можешь взять JAR и запустить его в дебаге. Самое простое создать проект с одним классом, в нем написать майн который просто будет запускать майн из JAR. А дальше в IDE запускаешь дебаг и отлаживаешь, ты можешь спокойно ставить брекпоинты в любых класса и выполнять код пошагово.
>>1726430 >Че? Если у тебя есть класс StringIterator implements Iterator<String> то инфа о том что это интератор стрингов будет сохранена в классе StringIterator. А вот в случае Iterator<String> iter = stringList.iterator() - тут в байткоде инфы уже не останется.
>>1727107 >А дальше в IDE запускаешь дебаг и отлаживаешь, ты можешь спокойно ставить брекпоинты в любых класса и выполнять код пошагово. Но каким образом будет выполняться отладка? Декомпилированного кода же нет. Где точки ставить-то? Это я возвращаюсь, получается, снова к декомпиляции всего кода и его тысячам правкам. Или дебаггер в java работает как-то особенно?
>>1668733 (OP) Начинаешь изучать программирование. "Да я ХАКЕР!"
Через месяц понимаешь что Питон это недоязык. Переходишь на Джаву. Вот теперь заебись. Я буду востребованным.
Доходишь до паттернов проектирования. Открываешь реальный код с гитхаба. Упс хуле тут так много строк?
Приходит осознание что инновации это для гиков. Всем нужeны развлечения. Закрадываются мысли что все в тысячу раз сложнее. А потом понимаешь что нужно уметь бежать впереди вмени чтобы успеть сделать реальный продукт.
Начинаешь читать про медитацию на Хабре. Вшух - шизофрения, массшутинг, суисайд.
>>1727039 Согласно предварительной договоренности отправляю тестовое задание, жестких ограничений по времени нет. Сделать maven или gradle проект сервера. Сервер должен быть с авторизацией по PKI (RSA) сертификату. Выпустить самоподписаный серт можно утилитой keytool из jdk. Сервер должен иметь Restful API. Запросы: - GET просмотр документа по ID, - GET получение списка ID всех документов в виде json, - POST отправка post запроса с документом в PKCS7 конверте (выпустить также самоподписаный RSA). На сервере нужно проверять подпись и сохранять в БД, если подпись валидна. Проект сделать на Spring Boot. БД Embedded Derby. Использовать Spring Data JPA
Сделать maven или gradle проект клиента. Клиент должен быть с авторизацией по логину и паролю (хранить в бд). Пароль шифровать конечно же (BCrypt). Клиент должен по SSL(TLS) конектиться к серверу. Клиент должен иметь возможность: - выводить список документов, - открывать конкретный документ при выборе его из списка, - отправлять документ в формате PKCS7 на сервер (оптравка через GUI, путем выбора файла на диске). Проект сделать на Spring Boot. БД Embedded Derby. Использовать Spring Data JPA Для gui использовать thymeleaf + material. Исходники проектов должны быть на GitHub.
У тебя такие лабы были? Ты в ВШЭ, ШАД учился или типо того?
>>1727586 https://openjdk.java.net/jeps/320 >Since standalone versions of the Java EE technologies are readily available from third-party sites, such as Maven Central, there is no need for the Java SE Platform or the JDK to include them Т.е. они просто почистили JDK от малополезных API. Кто сейчас CORBA использует? Но в любом случае есть возможность подключить jar и использовать дальше.
Businesses found that using EJBs to encapsulate business logic brought a performance penalty. This is because the original specification allowed only for remote method invocation through CORBA (and optionally other protocols), even though the large majority of business applications actually do not require this distributed computing functionality. Это получается бины дергали методы кобры?
>>1727653 Читал какую-то мурзилку на русском по EJB, там это упоминалось. Возможно, оно потом работало и без кобры, но по-прежнему юзало сокеты, даже чтобы залезть в соседний класс.
Привет, ребята. Помогите советом. Я более-менее разбираюсь в C/C++, можете мне посоветовать хорошую литературу по Java, но не 1500 страниц, а что-нибудь покомпактнее. Я освоил хорошо все структуры языков C/C++, мне бы с наименьшим геммором перекатиться в Java. Нужно для Android разработки.
>>1727551 >У тебя такие лабы были? подобные вот таким были:
реализовать собственную версию алгоритма слиянием, затем: написать прогу принимающую на вход несколько файлов, с дальнейшей сортировкой реализованным алгоритмом и записью в файл. по требованиям: запрещено использовать библиотечные методы сортировки. прога должна работать на системе с ограниченным кол-вом памяти. программа должна быть способна обрабатывать большие объёмы данных. все исключения должны быть обработаны, а не выброшены. программа должна быть отказоустойчивой. при аварийном завершении программы, часть обработанных данных должна быть сохранена в файле и при повторной записи должна быть перезаписана(продолжить запись с того места где остановилась.)
Вопрос не совсем по теме, но всё же. Есть какой-то аналог метанита по докеру? Или может книги какие почитать? Чёт я на доске тред не нашёл, ткните носом, если что. На проекте постоянно упоминают эти образы, контейнеры, чую скоро и с меня это требовать начнут, а я почти нихуя не понимаю в этом. Надо навёрстывать, хотя бы поверхностно.
>>1728015 Название мне кинь лучше и свой отзыв. Так-то там по любому есть что-то от орейли или типо того, но там опять будет какое-нибудь устаревшее говно на тысячу страниц, уровня спринг про.
Можете пояснить за wait() и notify() wait() замораживает тред до тех пор, пока не вызовется notify() того же объекта того же класса, но из другой функции? А если, допустим, освободится монитор, и другой тред вызовет notify() в этой же функции, пока эта же функция заморожена для предыдущего треда? Это работает для всех тредов, которые используют методы данного объекта данного класса? notifyAll() возобновляет вообще все потоки в программе?
>>1728494 MVC что ли? Ну и популярные "вещи" (паттерны) можно найти в учебных примерах проектов, где-нибудь на гитхабе по кейворду "спринг". Строгого списка подобных паттернов нет, но есть самые известные.
>>1728582 А блок synchronized (/поле класса/){} блокирует монитор только этого поля? Когда synchronized функция блокирует весь synchronized контент в объекте класса? Если нет, то какой смысл засовывать в synchronized (/эти скобки/) что-то?
>>1728603 У БД в основном эти два только, и граница у них размыта. DAO - работа на уровне таблиц, оперируешь строками в конкретной таблице, репозиторий - на уровень повыше, оперируешь уже сущностями ООП. Но это очень условно.
>>1728568 Не будет класс X ошибкой, если доступ к cl есть только у методов класса X (а это позразумевается, т.к. cl - private). Класс Y дает дополнительную защиту, если cl будет расшариваться за пределы класса Y. И то защита будет только если те другие сторонние пользователи объекта cl будут соблюдать контракт и использовать его с синхронизацией на оъекте как в классе.
>>1728522 Самый верный способ понять что-то это закодить это самостоятельно. Тогда все становится очевидно. Попробуй, реально помогает.
>wait() замораживает тред до тех пор, пока не вызовется notify() того же объекта того же класса, но из другой функции? Претензии к формулировке, но в принципе да. >А если, допустим, освободится монитор, и другой тред вызовет notify() в этой же функции, пока эта же функция заморожена для предыдущего треда? Опять претензии к формулировке. Какая нахуй функция заморожена? Замораживается поток - исполнитель функции. Вопрос непонятен, переформулируй. >Это работает для всех тредов, которые используют методы данного объекта данного класса? Вопрос непонятен. Другие методы данного объекта вообще ни при чем, только wait/notify/notifyAll оказывают эффект друг на друга. >notifyAll() возобновляет вообще все потоки в программе? Какие нахуй все потоки в программе? Только те потоки, которые "мониторят" объект, на котором они вызвали wait.
В примере на пикриле тебе крайне важно понять почему друг за другом пишутся сообщения "Inside synchronized, before wait". Конечно же это можно просто понять прочитав четвертое предложение из справки по методу, но это очевидно что ты не читал и не будешь (так как не знаешь англ. видимо). Ну и это пожалуй самое сложное и неочевидное что есть в этих методах.
>>1728723 Да я уже все понял. Формулировать вопросы, когда непонятно, помогает, потом сам ищешь инфу на разных сайтах (потому что на одном сайте как правило пишут не про все, а какую-то часть).
Парни, а ODBC для плюсов и пыхи чтоли созднан? Почему джава по нему не может работать и был изобретен JDBC? В англ википедии вообще не пишут для каких языков эта апишка.
>>1727055 > Я собираюсь игру с графикой и многопоточностью запилить, но еще не придумал, какую. Естественно, ничего глобального, тип Doodle Jump или Танчики. Нахуя делать графическое приложение на java? Это не геймдев язык. И в твоем портфолио будет не к месту.
Хочу сделать аналог одного из ресурсов, где постят смищные стори, с регистрацией, рейтингом, бд, шоб как пет проект был. Бек или фронт не прогал вообще ни разу в своей жизни не трогал. Прогал только на си, плюсах в универе и вот сейчас джава кор дрочил. Какие подводные? Хочу для того, чтобы получить какой-никакой опыт, а то одно говно писал всю жизнь
>>1729147 > когда ты в чужом говне копаешься По твоему определению выходит, что если два человека начали сегодня писать новый проект, он сразу же легаси.
Нет, легаси - это когда ты копаешься в коде, который писали давно уволившиеся люди, спросить не у кого, так как сюда давно никто не заглядывал, никто не помнит в деталях, как оно работает, а используемые технологии явно уходят в прошлое, и новые проекты на таком делают редко.
на какую зарплату реально претендовать в дс с двумя годами опыта жабы? год пилил легаси, год на спрингбутах и докерах, перекатчик, сейчас получаю сотку
>>1729404 Для этого нужно начать сначала. Если рассматривать только регулярки в вакууме, то один бекслеш это сервисный символ, поэтому он экранируется дополнительным бекслешем, и вот их уже два. А бекслеш в строковых литералах во многих языках (и в джаве в т.ч.) это сервисный символ сам по себе, чтобы писать \r\n\t\v. Поэтому, чтобы написать даже один сервисный бекслеш регулярки в строковом литерале требуется уже два бекслеша, а чтобы его дополнительно экранировать - еще два.
>>1729356 У нас был некий конфиг который мы читали по ресту с другого сервера, конвертили во внутренний формат и кешировали. Конфиг состоял из большого числа секций. Код который читает по ресту и кеширует был универсальный, а для конвертации каждой секции во внутренний формат мы использовали подобный интерфейс.
>>1729469 >>1729356 Для тех, кого еще в непонятках держит тот кусок кода: вам для понимания недостает увидеть объявление интерфейса UserBuilder, а оно по сути обычный Supplier - принимает ничего и возвращает что-то, а как метод обзовете уже дело десятое. Возможно это хуевое знание SDK - вводить новый функциональный интерфейс при наличии подходящего аналога.
>>1729356 >>1729487 А нужен этот "костыль" много где, достаточно посмотреть применение Supplier'ов в Stream API - те же коллекторы. В общем случае это просто прием чтобы сохранить или передать "функцию", как в других языках. А в кавычках потому что передается не функция, а реализация интерфейса, вполне себе объект. Просто сделали так что конструктор без параметров подходит сейчас под функциональный интерфейс Supplier. А с параметром - под Function или UnaryOperator (как copy-constructor, например).
>>1729499 Так и есть, сорян, не заметил параметр. И да, Function тогда бы подошел.
Почему spring initializr не делает <version> в зависимостях? Так разве можно? mvn compile ошибок не выдает. Это какая-то новая фича мавена по умолчанию новейшее брать? Я не знал этого.
>>1729644 Мавен может брать новейшую версию, но работает это не всегда, да и лучше указывать явно. Но конкретно в спринг буте версии указаны в родительском помнике, на который ссылается <parent>, оттуда они и тянутся.
Я не удивлюсь, если в следующую яву опять введут какую-то ненужную фичу из котлина, типа что можно писать {} после функции, вместо последнего аргумента, если это лябмда.
Сап, двач. Есть кто работает с графами в Java за деньги? Есть приложение, в которое надо добавить функционал: проверка является ли связанным заданный граф (рекурсивная реализация). Пишите в телеграм @alexanderstud
>>1725765 Поясните за эту хуйню, после джавараша - кажется понятной и адекватной (ещё бы, писать в идее а потом копипастить в эмулятор не надо, лол, ибо жаба душит 1800рэ отдавать). Задания не такие ебанутые. Но у меня есть подозрения что либо ресурс хуйня, либо я хоть чему то да научился(что маловероятно).
>>1730041 Начал 2 недели назад заниматься, почти с нуля. Там какая то хуйня с функцией решать задачки в idea. Плагин, через который это работает кривой, задачи отображает криво и если не закрыть после решения - идея может сожрать всю свободную память и повесить комп.
>>1730138 Если б их писали еще толково, а не "самый полный мануал на 1к страниц по очередной модной библиотеке/фреймворку", в которых куча воды и устаревшей инфы.
>>1730143 Даун, для тебя есть книга "жаба для чайников, детей и стариков", точно название не помню, она вроде даже в шапке была. Там легко и просто тебе дают вводную по жабе. Читается она легко и непринуждённо, после неё ты уже можешь начинать кодить, попутно обмазываясь другими мурзилками, тем же метанитом. Потом сверху полируешь особенностями 8ой жабы, книгами того же Венката или Коузена, они тоже читаются легко. Попутно гуглишь всё, что тебе непонятно, в интернетах десятки всяких бложиков и статей вроде того же баелдунга или как там эта хуита называется. Там же можно и спринг изучать начать. Все эти курсы придуманы для наёба лохов на бабло, тебе в любом случае придётся читать и учиться самому.
>>1730138 Так гиперскилс и не отменяет книг. Это задачник. Я вот читаю Хорстмана. И где-то на середине первого тома понимаю, что без практики даже понятные моменты из головы выветриваются.
>>1730209 По функционалу аналогичны, но лично мне больше freemarker понравился. Нет уебанских неймспейсов из XML, удобные макросы, синтаксис менее инопланетный.
>>1730170 Иди нахуй со своей мукулатурой, я лучше мануалы и доки почитаю на том же баелданге и спринг.ио. >>мурзилками Комиксы по джаве? Лол, зумеры уже читать разучились? >>Все эти курсы Я разве писал про курсы? Хотя если хочется - есть и норм курсы, но попадаются редко. В основном вода и пересказ теории, надо искать с примерами проектов. >>для наёба лохов на бабло Хочешь - плати, не хочешь - не плати. Все есть в открытом доступе на торрентах
>>1730436 Воббще не стоит использовать ORM. Изучать легаси хибернейт стоит только для того, чтобы было потом понятно, как переписать на Jdbc по-нормальному.
Читать ли шилда начинающему? Имеет ли это вообще смысл? Или есть более качественные книги по джаве? Помню когда-то читал и просто хотел вскрыть себе вены от того, на сколько это всё скучно.
Дефолтный спринговый favicon (листочек) на вкладке не отображается почему-то и на каждом гет-запросе ошибкой плюет:
WARN 8672 --- [nio-8080-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'long'; nested exception is java.lang.NumberFormatException: For input string: "favicon.ico"]
В шаблонах нигде я свои иконки не подключал. На мэппинге ("/") у меня вообще никаких параметров кроме Model model
>>1730787 Ну и нахуя они это сделали? Там какой-то пидор очкастый написал им, что дефолтная иконка это information leak, которая показывает технологию на сервере. Охуеть теперь.
Ребята, я уже почти год этого шилдта блядского дрочу, а на работе требуют прогать плк с облаком в ерп, а это кресты и 1с. Я заебался за 25к в месяц уже.
>>1731626 > почти год Это потому что работа отнимает кучу времени и сил, и потом сложно себя заставить делать что-то ещё. Главное - не бросать на полпути.
>>1731689 Читай что-нибудь более сухое и сжатое, того же Хорстмана. Джава - это не кресты, важных тонкостей ты здесь не упустишь, потому что их очень мало. Ну а дальше фреймворки.
>>1731812 Обычно всем пох на оригинальность, смотрят на то, что ты в принципе способен решать бекендерские задачи. Так-то они видели уже сотни социалочек, форумов, интернет-магазинов, блогов и прочих мувисёрчеров. Напиши лютую энтерпрайз банковскую систему крч
>>1732039 Допустим, тебя похитила некая запрещённая в России организация и заставила писать на Java 6. У тебя нет try-with-resources, но ты хочешь гарантированно освободить ресурсы, а вылетевший эксепшен обрабатывать где-то выше. И ты пишешь такой код.
>>1732307 Integer []arr = new Integer[]{1, 2, 3, 4, 5}; int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (max < arr) { max = arr; } } System.out.println(max);
>>1668975 Читал частично. Показалось полной хуитой. Если ты совершенно пустой в программировании то там, по ощущениям, слишком резко вводятся некоторые концепции, так что суть хуй уловишь. А если ты уже что-то шаришь, то она тебе уже нахуй не нужна, потому что есть например Шилдт. Для начинающих имхо попизже подходит Сьерра и Бейтс
>>1732325 Что за залупу ты здесь написал? Это будет incompatible types. Нельзя присвоить инту массив, как и сравнить их. Ты проебал индексы arr в двух строках
Такой вопрос, джаваны. Если я уже более-менее "выучил" джава-core, написал овердохуя всяких калькуляторов на ней (работа способствует), со всякими пиздецами там в том числе, вроде лямбд, дженериков и прочей хуиты. Так вот, что дальше поучить? Spring например, или еще что-то? Пока что работа связана со всяким ссаным энтерпрайз-говном.
>>1732635 Это типа конвенция. Но она довольно слабая (в сравнении с большинством других). Можешь пихать туда хоть что, хоть O и X как символ своего очка и заклеивающего его пластыря. Все равно переменные перебора циклов локальные внутри него.
>>1732673 Ну, трудно сказать. Если прям говорить про первый раз когда посмотрел на джава, то года 4. Но это не моя профессия была все это время, да и сейчас я не программист, просто на формальном языке гораздо четче и сжатее можно писать алгоритмы (это и есть моя работа сейчас) Все что я изучил нормальный человек может запихнуть месяцев в 10, я думаю
>>1732689 Можно и спринг, но без БД там сильно не разгуляешься. Ну, контроллер напишешь, данные будешь хранить в сырых файлах или вообще в переменной. Ещё можно с чем-то поиграться, например, с очередями.
SQL за неделю реально, самые основы можно даже быстрее.
>>1732696 Погуглил видео по спрингу. Так вот там есть core, MVC, boot и еще куча всего. это все независимые вещи, или надо какую-то последовательность их изучения? Еще качал книгу "спринг в действии". Не знаешь про нее, норм-нет? Есть годные книги?
>>1732704 Да, потому что в версии 1.2 сломали обратную совместимость. Т назвали J2SE, это уникальный случай пока. Хотя оракл должны признать, что на 9-ке тоже немного сломали, потому многие застряли на 8.
>>1732701 В реальности они сильно взаимосвязаны, хоть и предполагается учить в порядке core, MVC, boot. У Boot порог вхождения пониже, чем у классического спринга, поэтому легче начать с него.
Книгу эту не читал, но достаточно популярная, многие спринг учат по ней. Сам больше по курсам/мурзилкам.
>>1732765 Кого ебет эта поебота вообще, которую ты привел в пример. Плохо когда теряется совместимость на уровне какой-то сложной семантики. А это твое говно с варами можно пофиксить пропустив исходник через программу которую любой школопидор напишет.
>>1732789 Я может быть конечно не совсем понимаю все тонкости разработки, но как блять можно импортить что-то не из джава кода, а из откомпиленного байта (который тащем-то точно так же можно пропарсить и исправить имена переменных, а машкод если б джава его создавала вообще не имеет имен, только адреса). Ты точно не несешь хуйню? Проверь еще раз плес.
Поясните момент. Я хочу прнтврайтером открыть файл и записать туда что-то. Пишем PrintWriter out = new PrintWriter ("C:\\filename.txt"); try { out.println(text); } catch (Exception ex) { System.out.print(ex); } finally { out.close(); } Почему я не могу написать, вместо Exception ex, FileNotFoundException ex??? Идея не даёт этого сделать подчёркивая красным, пишет Exception is never thrown. А какое тогда исключение выбрасывает метод println, класса PrintWriter??
>>1732796 >А какое тогда исключение выбрасывает метод println, класса PrintWriter?? Ты настолько тупой, что решил спросить это на дваче, вместо того, чтобы посмотреть в идее?
>>1732795 > как блять можно импортить что-то не из джава кода, а из откомпиленного байта То есть ты сейчас утверждаешь, что библиотеки в джаве невозможно использовать, если у тебя нет от них исходников, а только откомпилированные классы, да?
> пропарсить и исправить имена переменных Ну и кто этим будет заниматься, если проще сидеть на древней джаве?
Джавогоспода, как посмотреть байт-код скомпиленного класса в его наиболее нативном представлении? Я так понимаю, что если смотреть в Intellij то этот пидор старается из него обратно слепить исходник как может. А что там в нем реально содержится можно увидеть в Intellij или еще где-то?
>>1733002 Ну не большинства, но частенько, да. На самом деле,, везде стремятся заставить бекендеров заниматься фронтом, потому что один фуллстек тупо дешевле двух отдельных разрабов.
>>1733055 Создаю form в хтмл, отправляю кнопкой, а мне в контроллер приходят нули. Отправляю через постман через х-ввв-форм - все работает как надо. Где я обосрался?
>>1733055 > везде стремятся заставить бекендеров заниматься фронтом Где-то стремятся, но далеко не везде >один фуллстек тупо дешевле двух отдельных разрабов Если двое отдельных на 100% загружены своими задачами, не дешевле
>>1733061 С JSP джависта всё равно можно заставить заниматься фронтендом. Даже если не будет реакта, будет ебучая вёрстка.
>>1733067 Есть другие варианты. Немного увеличить сроки релизов, но зато держать меньше человек, если бизнес это устраивает. Также, если для фичи дорабатывается и клиент, и сервер, один фуллстек быстрее разберётся, что нужно делать, чем пока поставят задачу на клиент, пока фронтендер и бекендер договорятся, и пока решат проблемы, возникшие из-за недопонимания. И если таких фуллстеков целый штат, сроки если и увеличатся, то незначительно, а платить отделу нужно будет меньше.
>>1733098 Это просто шаблонизатор. Ты можешь подставить какие-то данные или сгенерить несколько элементов в цикле, но ты по-прежнему используешь теги html/стили css.
>>1733104 Впрочем, возможно, в JSF как-то по-другому, но хз, как именно. У меня по непонятным причинам настолько лютое отвращение к JSF, что вообще ничего не хочу о нём знать.
>>1733104 Но margin-left с бутстрапом можно отдать верстальщику, пускай ебется с пиксель перфект, а джавист может просто вставить th:${username} в дивы и все. В jsp скорее всего ебаться придется от и до, в браузере же его так просто не откроешь.
>>1733117 Джавист у себя добавит все эти th, увидит, что после подстановки данных макет съезжает, и фронтендеру опять переделывать. Хз, как было до изобретения модных фреймворков, но предполагаю, что фронтендеры либо делали и переделывали всё вслепую, либо сами учили шаблонизаторы, добавляли th и запускали у себя. Процесс выглядит так себе.
>>1733126 Да хоть login.exe, лол. Клиенту попадёт уже отрендеренная страница, верстальщику же придётся для этого поднимать сервер у себя, что тоже ебля.
>>1733125 Я как бэкендер лучше б джейсоны выкидывал фронту, а он уж пускай как хочет их отображает. останется только решить вопросы по апи - пост/пут и 200-ок-юзерЕррор-в-теле вместо 404
>>1733189 Поэтому модные фреймворки и изобрели, чтобы были тонкие универсальные json-ки вместо возни с рендерингом на сервере. Бекендеру больше не нужно думать, что там на фронте, фронтендеру не нужно пересобирать сервер, чтобы увидеть результат.
Всегда отправлять POST, всегда возвращать 200. Похуй на рест, похуй на целостность горящих жоп.
Двачаны, поясните один аспект. Суть задачи состоит в том, чтобы изнутри метода изменить состояние логической переменной, лежащей вне его скоупа. Понятное дело, что с обычным boolean ничего не получится, потому что он тупо передается как значение и не меняется больше никак снаружи. Так вот: почему если я в метод передаю тип-оболочку Boolean, и меняю ее внутри метода, наружу никакие изменения не распространяются (на переданный в качестве аргумента внешний Boolean)? Помогает только написание собственного типа-оболочки типа class OutBool{boolean b;} В этом случае все работает как надо. Почему не работает с встроенными типами-оболочками? Это компилятор так наёбывает чтоб они минимально отличались от простых типов, или я тупой где-то? Олсо, как-то можно решить подобную задачу в Java более красиво, чем каличные оболочки? (вроде модификатора out у аргумента в C# или var в Поцкале)
>>1733350 >Так вот: почему если я в метод передаю тип-оболочку Boolean, и меняю ее внутри метода, наружу никакие изменения не распространяются Потому что сцылка копируется. А вообще код покажи.
>>1733350 Не, компилятор не наёбывает. Встроенные типы-обёртки иммутабельны. Максимум, что можно сделать с ними - создать новый объект и присвоить старой ссылке, что ты, наверное, и делал. При этом изменится только значение аргумента метода, оригинальная ссылка, с которой ты вызвал метод, остаётся как есть, потому что ссылки передаются по значению, то есть просто копируется адрес. Но в своей обёртке, хоть ссылка в методе уже другая, указывает она на тот же объект. И через новую ссылку можно изменить данные в этом объекте, потом изменения будут видны в месте вызова.
>>1733353 > что ты, наверное, и делал Нет. Именно переданное в аргументе меняю походу исполнения внутренней логики. Но эти изменения не проходят через ссылку на "наружную" переменную. Если заменять Boolean на самописную оболочку, больше вообще ничего не меняя в коде, то все взлетает. Олсо, если делать неизменяемой переменную-носитель состояния внутри типа оболочки, то все тоже конечно наебываться (ошибка компиляции, попытка менять final-переменную) Насколько знаю для String сделаны наебские механизмы, которые делают работу с ним немного особенной (ирл стринги иммутабильны). Похоже, что и здесь то же самое. ща запилю кусок кода
А есть способ проверить наличие объекта какого-то класса в ArrayList? Предположим у меня есть классы А, В и С. И объекты этих классов могут лежать в ArrayList, а могут и не лежать. При чем значения полей объектов рандомные и я их точно не знаю, то есть мне не проверить наличие конкретного объекта методом contains(). И вот как проверить, что, например у меня сейчас нет в листе объектов класса С, а А и В есть?
>>1733353 >>1733352 Вот в таком виде все работает. Но если вместо объекта OutBool запихать туда обычный Boolean, то переменная ifp в том блоке, где делается вызов, "не чувствует" никаких своих изменений внутри метода, куда она передается, хотя сами по себе такие изменения не запрещены.
>>1733370 Олсо, я знаю что здесь все по-уебански сделано с прямым доступом к переменной и всем таким. Это не для реальной работы код просто, здесь это похуй
>>1733373 Ну можно проще, но еще более уёбищно сделать: создать в суперклассе, или общем для них интерфейсе, метод который будет возвращать что-то вроде "Я объект А!!!1", и тупо вызывать его for each, фиксируя что оттуда прилетает. Если arrayList без дженериков то можно сделать какое-нибудь мегауебанство вроде завернутого в try-catch вызова метода, имеющегося только у A (например) с поимкой эксепшенов которые оттуда полетят. и если хоть раз пройдется этот блок, то значит A там есть. Теперь это ебанутых костылей тред
>>1733378 Зачем ты притащил это говно мне? Я нормально понимаю как в Java передаются аргументы. Нигде на моем скрине не происходит переприсвоение переданной ссылке нового объекта, как с этими собаками. Олсо, этот >>1733371 уже подтвердил то что я так подозревал. Для оболочек компилятор видимо делает такой вызов неявно, примерно как для стрингов.
>>1733387 >Нигде на моем скрине не происходит переприсвоение переданной ссылке нового объекта, как с этими собаками. На скрине нет, а если бы ты как раньше обычную Boolean присваивал = true, она бы преобразовалась в new Boolean(true)
>>1733389 Ну так откуда это знать, если оно делается неявно? Разве что опытным путем на это наткнуться (как я) или где-то прочитать, но я такое помнил только для стрингов. Да, я такой долбоеб что решил спросить на дваче а не в гугле
>>1733398 Автобоксинг и авторазбоксинг сами по себе тут никаким боком не виноваты. Особенность их реализации, что, оказывается, при присваивании логического литерала вызывается конструктор типа - это да. Но могло бы быть и иначе (литерал просто присваивался бы внутреннему состоянию Boolean-объекта), и это все равно было бы автоупаковкой. Попробовал сделать вместо присвоения литерала присвоение enum объекта Booleam.FALSE и тогда уже только IDE показало что оно оказывается final
Опытные господа. Поясните за соотношение сложности вкатывания между самим языком Java, и фреймворками которые нужны для реальной работы на нем. 50/50 примерно?
>>1733493 Ты неправильно вопрос ставишь. Надо понимать для начала, что ты хочешь сделать. "Я хочу сохранять сущность в бд". Можно сделать это руками, без спринга. Можно использовать спринг. Можно (иногда скорее нужно) использовать и то и другое, несколько бд, кучу сущностей, SQL синтаксис в перемешку со SPeL и прочий пиздос. Загуглить как это делается недолго. Ещё быстрее открыть готовый проект и посмотреть как делалось там. Фреймворки созданы не для того, чтобы усложнять жизнь, а наоборот. Я хз что ты там учить собрался, в том же спринге. Круды делать можно научиться за пару вечеров, а всякие кишочки ты может и не увидишь никогда. А если увидишь, то просто за 3 минуты загуглишь, переделаешь под свои нужды и пойдёшь дальше.
Не знаю насколько ты хорошо все понял из объяснений других анонов выше, как по мне там не было целостного объяснения, поэтому попробую и я.
Параметр метода можно рассматривать как обычную локальную переменную метода. Локальные переменные метода создаются в стековой памяти потока и недоступны для других потоков. Объекты в Java передаются по ссылке, а сама ссылка - по значению. Примитивные типы передаются только по значению.
Получается так, что переменная, переданная в метод, доступна по факту "только для чтения". Записать в нее конечно же можно, если она не final, но т.к. это локальная переменная, то никто за пределами метода не увидит изменения. Поэтому присвоенные примитивы и ссылки валидны будут только внутри метода. Другое дело со ссылочными типами (объектами) - хоть ссылка и доступна "только для чтения", изменять данные объекта, на которые ссылается ссылка, никто не запрещает. Поэтому функционал out-параметра метода возможен только мутабельными враппер-классами, immutable классы не подойдут по той же причине - они только для чтения. Поэтому крайне необходимо знать какой класс SDK является иммутабельным, а какой не является. Все классы-врапперы над примитивами (Integer, Long, Boolean...) и String - все они immutable и для твоей задачи не подходят. Помимо своих собственных оберток можно использовать следующие классы: массивы (внезапно это ссылочный тип), коллекции, StringBuilder, атомики (AtomicReference, AtomicInteger...).
И напоследок: хоть так говнокодить и можно, но стараются так не делать, потому что сейчас все вокруг начинают осознавать преимущество чистых функций (это термин, с ним необходимо быть знакомым). Решение конкретно твоей задачи сводится к введению нового класса GetCutsResult с методами getList() и isFirstPoint(), и возвращению экземпляра этого класса из метода. Как быстрый говно-аналог, можно из метода возвращать Object[] res = new Object[] {list, true}; или любой другой контейнер, например Map<String, Object>.
>>1733369 Сложность предложенного тобой решения - O(n). Конечно зависит от задачи, но это уже попахивает, у нас даже ждунов разворачивают при таких решениях. Кстати, в Java 8 бакеты в хешмапе превращаются из списка в дерево уже при восьми элементах, можно взять на заметку. В общем это повод задуматься, возможно тебе уже нужен класс-обертка или метод хелпер, выбирай.
>>1733764 Да все и так понятно было, но спасибо за такую усердную емкую попытку. Я обо всех этих вещах в курсе, прост не знал что оболочки над примитивами относятся к неизменяемым. > Решение конкретно твоей задачи сводится к введению нового класса Да я бы так это и сделал, если б с нуля писал. Просто на момент когда появилась надобность фиксировать это новое состояние, и выпихивать его как-то на вызов, весь остальной код уже был написан и нормально работал. Это стало максимально быстрым решением.
>>1733856 Давно в разработке? Что бы посоветовал почитать/покурсить новичку в Java? > даже ждунов разворачивают а какая у тебя условная позиция в этом буссинесе?
>>1733886 Что значит удобной? В первую очередь типобезопасной. Если в мапе хранить обжекты и каждый раз их кастить к нужному типу, рано или поздно это выстрелит в рантайме.
>>1733898 > Нахуя в мапе хранить объекты разных классов? Чтобы не писать новые классы, как в динамической дрисне JS/Python. > Map<String, List<BuisinessZalupa>> По-разному бывает.
>>1733870 Сеньор-помидор, часто собеседую кандидатов и коллег, лол, ревьюю код и коммичу в мастер. В тырпрайзной разработке с 10го, конкретно в Java с 15го.
Советовать я ничего конкретного не буду, т.к. это все субьективно и научиться можно по любому материалу, кроме пожалуй >>1719717 вот этого. У каждого источника есть плюсы и минусы: книги всеобъемлющи но скучны, видосики наглядны но очень медленны и однобоки, курсики забавны (но беседы с роботами на джавараш это перебор) и интерактивны но платные не могу придумать минусы, курсиков по джаве не проходил. Я открыт к любым источникам. По книгам могу показать свои, вот, но не скажу что читал все, а те что читал, они все похожи (ну еще бы, предмет обсуждения ведь не меняется) и по-своему неплохи.
>>1733903 Эккель не сильно древний динозавр? Видел недавно в магазине думай-джаву его, бумажную, с ёба-скидкой. Решил не брать потому что там наверное какая-нибудь джава-5 еще
>>1734071 Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. - Приемы объектно-ориентированного проектирования (т.н. "банда четырех") Сам не читал, но это насколько знаю считается библией паттернов
анон я походу что-то не понимаю, поясни будь добр, почему я не могу написать mappedBy в manyToOne? или ссылОчку, почитаю, ибо уже второй день ебусь с этой хуетой спасибо
>>1735227 Это маски (wildcard) для указания какие классы могут быть подставлены в скобочки. Вопросик это "что угодно", как звездочка в обычном поиске. А super и extends это выше и ниже по иерархии наследования. Например, Object <- Throwable <- Exception <- RuntimeException Если указано extends Throwable, то подставить можно любых наследников этого класса, ну и сам этот класс. А если super Throwable, то только предков этого класса и сам этот класс. Указываемое ограничение влияет на список доступных методов у параметра-дженерика.
На практике это выглядит вот так: List<? extends Number> numbers = Arrays.asList(1, 2.0); Number number = numbers.get(0); numbers.set(0, number); // ошибка компиляции
В отличии от List<? super Integer> numbers = Arrays.asList(1, 2); Object number = numbers.get(0); numbers.set(0, 3);
>>1735141 Десктоп приложения на Яве не в тренде, про них не говорят на конференциях, не пишут в модных журналах. Потому смузихлебы с подворотами считают, что JavaFX нинужна.
>>1735326 "The @JoinColumn annotation helps us specify the column we'll use for joining an entity association or element collection. On the other hand, the mappedBy attribute is used to define the referencing side (non-owning side) of the relationship." ну вот потому я и не понял в чем ошибка то
>>1735822 Нюфаг не умеющий в гугол навсегда таковым и останется. Ладно бы что-то сложное было, но ответ в первой же строчке и без перехода по ссылкам >.<
>>1735887 Ты советуешь только последнюю главу скипануть? Или все gui? Просто я совсем новичок, а у Хорстмана главы не особо независимые друг от друга. А глава "Параллелизм" я думаю мне точно нужна будет.
>>1735883 Бесспорно, решение от 2009 года не идеальное, хотя бы потому что наверняка сейчас более свежее есть, как например System.getProperty("line.separator") и новый System.lineSeparator() из Java 7. Но оно будет работать и сейчас в 99% случаев. Во-первых, только долбоебы начинающие пользователи используют рабочий стол как свой workspace, у нормальных людей там лежат только пара ярлычков. Во-вторых, мало кто знает, особенно среди людей из первого пункта, что можно переопределять путь таких директорий. В-третьих, тому нюфагу, который задал вопрос, хватит и такого решения, он другие может не понять. А если ему всё-таки не подойдет, посыл поста был - попробуй найти сам. Самое идеальное будет дернуть винапишку SHGetSpecialFolderPathW, ты это предлагаешь?
>>1735886 Так и есть, можно через реестр, а всего стульев примерно 5: 1) Через систем проперти что выше 2) Через реестр 3) Вон там предлагали свинг, возможно и через него, он GUI-ориентированный, вполне может сработать 4) Через винапи (самый годный, но не самый легкий) 5) Через сервисные имена папок, CLSID (может не сработать, не знаю, щас попробую попробовать)
>>1735895 "Параллелизм" читай, конечно. Остальное по gui скипай. Ну или прочитай всё, но это будет чисто для себя, на работе почти наверняка не пригодится.
>>1735822 Лучше сделай диалог с выбором пути и сохраняй там, где укажет пользователь. Если будешь принудительно лезть на рабочий стол, то многие пользователи тебя будут ненавидеть, у них там и так либо срач, либо чистота, за которой они следят.
>>1735930 Классический пример "Проблемы XY" - хотел спросить "как создать ярлычок на рабочем столе у пользователя", а вместо этого спросил "как получить рабочий стол". Следующим этапом у тебя по идее будет идти "как создать файл в формате ярлычка windows", и тут опять же нет легкого пути - чрлычки не текстовые, а бинарные - либо изучать их формат и писать сырой файл, либо дергать винапишку.
А в общем хотелось бы заметить что у тебя задания странные, и знаешь почему - потому что они платформозависимые. Никто на собеседовании по джаве или в тестовом задании тебя никогда не должен попросить о таком, если ты только не на десктоп идешь. А отношение к десктопу на джаве очень плохое, даже в этом треде уже всплывали нехорошие слова.
>>1735935 Нет, про ярлык я для примера написал. Просто, решил сделать некое подобие программки, которая очищает папку TEMP в винде от мусора, после чего создает на рабочем столе txt файлик с записями: "Такие-то файлы успешно удалены".
>>1735911 Нет, через CLSID не получается - ни Paths, ни URI не распарсивают "file:///::{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}/hello.txt", жалуются на ":" в строке (после схемы file:// уже). Винить их в этом нельзя, это действительно не валидный файловый путь, а хуйня какая-то, только виндус эксплорером распознаваемая. Наверное можно найти нужный OLE компонент, разобраться как общаться с ними из джавы в принципе, и передавать CLSID туда... Так что это тоже такой себе путь.
Я всё ещё здесь
Аноним28/06/20 Вск 15:22:34№17359652037
Жетбрейнс не правы, идею нужно срочно переписать на C++ или C#.
>>1735911 >Самое идеальное будет дернуть винапишку SHGetSpecialFolderPathW, ты это предлагаешь? Я предлагаю >>1735864 Swing вполне успешно показывает все эти специальные папки и делает это кросплатформенно.
>>1735960 Ну как видишь "рабочий стол" получить не очень тривиально. Такая схема как ты описал действительно имеет место быть, программы часто сохраняют логи своей работы в тестовый файлик. Вот примеры таких мест: 1) Рядом с экзешником (в нашем случае - с джарником) (получить легко: Paths.get("") или Paths.get("."), .toAbsolutePath() по желанию) 2) В корень диска (это обычно при установке драйверов, обычные не-elevated программы доступ на запись в корень диска C: не получат) 3) В тот же TEMP 4) В папку юзера (C:\Users\%Name% - получается гарантированно кросплатформенно через проперти user.home) Таак что советую вместо рабочего стола выбрать 1, либо 4.
>>1735966 Дикость что Майкрософт поощряет и одобряет такое поведение - использование рабочего стола как склада файлов. Но от них можно ожидать в принципе.
>>1735966 >>1735977 А, я видимо жопой прочитал. Ты хочешь сказать что OneDrive (и некоторые другие специализированные программы) сам переопределяет дефолтную папку рабочего стола?
>>1735978 Не знаю кто именно переопределяет, но да. Если ставить 10ку с нуля и при установке указать аккаунт майкрософт. То он поставит OneDrive и запихнет туда рабочий стол, документы, изображения.
>>1735991 Спасибо за информацию. Ставил десятку с нуля, но с локальным аккаунтом, ибо нефиг, и видимо не зря. В моем сетапе хоть OneDrive и шел в комплекте, но такой хуйни не натворил.
>>1736056 Нет, на моей центосичке-писечке тоже есть, но к чему вопрос? Изначально анон спросил про путь до десктопа и явно в винде, т.к. упомянул реестр. Вот вам и CLSIDы и винапи. А победил анон со свингом, я даже не претендую.
На бэке есть BeanValidation всяких формочек, прилетающих с фронта - @NotBlank, @Positive, @NotNull и прочее из пакета javax.validation.constraints. Под это дело есть ExceptionHandler, который нормальным образом собирает все ошибки и возвращает на фронт.
Но помимо базовой валидации всей формы есть еще валидация на уровне бизнес-логики, допустим, уникальность e-mail или что-то посурьезнее. Писать аннотации под это, очевидно, боль, поэтому сейчас используем EntityNameValidator для валидации EntityName и помечаем его как спринговый @Component для инжекта и доступа к другим бинам.
Получается, когда приходит форма, она улетает в EntityNameService, оттуда в EntityNameValidator. Проблема в том, что между этими бинами циклическая зависимость и приходится вешать @Autowired на них вместо пихания в конструктор.
Разработке не мешает никоим образом, но глаза мозолит и хотелось бы как-то решить этот вопрос, есть у кого мысли?
>>1736667 Что мешает просто взять и обновить джаву? То, что заявлена обратная совместимость, а на деле запускаешь на новой джаве - и нихуя не работает, и исправление возникших ошибок требует дохуя времени.
>>1735227 Гугли инвариантность и контрвариантность дженериков. Сразу скажу, это довольно мозговыносящее контринтуитивное дерьмо на первый взгляд. Но вообще там все логично.
>>1735913 И еще вопрос. Читаю Хорстмана первый том - 11 издание по java11. Кроме первого тома, как мне кажется мне нужно будет как минимум 2 главы из второго(пик). А он сети только 10 издание - по java8. Имеет смысл просто читать 10 издание? Или что-то серьезно изменилось в этих темах?
>>1737948 Нет такого уровня английского. Пока только могу Hyperskill JetBrains Academy читать и то поглядывая в словарь, там очень простой английский, видно что много русских в команде. А Хорстманн заметно сложнее пишет. Ну вот эти две главы мне сходу показались обязательными. На первых 15-20% курса hyperskill мне уже попадались темы из этих глав(регулярки и чтение из файлов). А у Хорстманна это во втором томе(с подзаголовком Расширенные средства программирования), про который в том числе в этом треде говорят, что новичку он не нужен. Как считаешь обязательные главы?
>>1737989 Про потоки данных прочитай обязательно. Ввод-вывод можно просмотреть, но прям вчитываться не нужно, он в джаве слишком переусложнённый, и на практике большая часть упомянутого почти не используется, и в каком-нибудь бекенде на спринге с этим почти не будешь сталкиваться. Также рано или поздно нужно будет прочитать про базы данных, но на первых этапах можно обойтись. Остальное, вроде XML и сокетов, без необходимости изучать смысла нет, всегда можно вернуться и прочитать.
>>1738148 >пилят свой язык на ANTRL >Cущественным плюсом будут навыки разработки собственных языков / грамматик и знание ANTLR Дауненок, ты сайчас собираешься начать задвигать что DSL это не язык? Или что они это требование от балды написали?
Осваиваю хибернейт, есть у меня несколько сущностей и файл persistence.xml вот такого ужасного вида: https://pastebin.com/NHrc8H1h Подскажите, пожалуйста, как мне правильно класть туда сущности, чтобы не писать на каждую свой персистенс юнит с копированием пропертей? Если я напишу так: https://pastebin.com/NA7gDDd2, мне выдаст ошибку javax.persistence.PersistenceException: No Persistence provider for EntityManager named com.helloworld.dto.User
>>1738251 Такой-то высер. Книги Мартина это набор общих рекомендаций, всё те же паттерны, только сбоку. Набор советов, которых можно придерживаться и о которых нужно знать. Но, заставь дурака богу молиться... Долбоёб же придирается к примерам, которые были взяты чтобы продемонстрировать некоторые изложенные принципы. Это как доёбываться к учителю химии, который в пробирке смешивает уксус с содой, чтобы ученики сразу поняли, что он имел ввиду, со словами "А вот мы в промышленности так не делаем!" Насколько убогим должно быть абстрактное мышление у человека, чтобы он этого не понял? То, что книге 10+ лет он понял. То, что жаба за это время изменилась он тоже вроде понял. А вот этого нет. Я всё ждал, когда он начнёт ругаться, что в книге Мартина Stream апи не упоминается или Спринг.
>>1738301 Ну хуй знает, если бы я в коде увидел private static int smallestOddNthMultipleNotLessThanCandidate(int candidate, int n) я бы тоже дальше читать не стал.
>>1738296 Ничего плохого нет. Можешь ещё ассемблер и С выучить, тоже полезно будет. Как раз когда закончишь одно уже из башки выветрится предыдущее. Тут как в анекдоте, тебе шашечки или ехать? Если ехать - то хуячь свой круд на спринге, освоишь на ходу Хибернейт на том уровне, на каком он тебе нужен. >>1738303 Надо было ебашить с реальными примерами, Мартин. Такими, страниц на 20, чтобы бизнес-логика была показана от Адама и Евы. Чсх, даже хабродаун в конце добавил >Вы хотите, чтобы книга вызвала какую-то реакцию у читателей, какие-то дополнительные комментарии >Исходя из этого, «Чистый код» оказался годным. У нас состоялись хорошие дискуссии >Мы смогли использовать отдельные главы в качестве отправной точки для более глубокого обсуждения актуальных современных практик Т.е. книга со своей задачей справилась, даже у макаки начали мозги работать, она начала пытаться обрабатывать свой опыт с оглядкой на книгу Мартина.
>>1738308 >Надо было ебашить с реальными примерами Там выше есть реальный пример. Не такой вырвиглазный, но так же противоречит всему, что написано в тексте.
>>1738310 Хотел ещё расписать, но потом подумал, что я ж не первый. И точно, вот тебе уже на хабре ответили >Примеры в статье вырваны из контекста. Например SetupTeardownIncluder — это не идеал. Где Мартин сказал, что это супер классный кусок кода? >Это результат рефакторинга, через разбиение толстых методов на маленькие. Который приводится, чтобы объяснить, что маленькие функции — это очень важно. >Даже если не применять другие принципы из книги вовсе. >И вот мне интересно, какой процент из голосовавших читал эту книжку, и может сказать, что она являлась бесполезной тратой времени? >Что вообще вы ожидаете от книги? Волшебный секрет «Тайны драконы», который прибавит 200К к ЗП? >Я считаю, подобного рода статьи без весомых альтернатив, не больше чем оправданием школьника, который не стал учить физику, потому что «в жизни не пригодится».
>>1738340 Сначала делаешь круд на спринге в качестве тестового. Потом могут вопросы задавать по некоторым аннотациям, в сбере меня про @Transactional спрашивали, например. В другом банке про @Component или @Service, не помню уже. Чтоб прям по кишочкам, по всем этим фабрикам бинов и контекстам - меня такого не спрашивали. Да и чёт я не помню, чтобы в том же спринг про прям так уж кишочки разбирались, также по вершкам всё. Кишочки они только на практике познаются.
Стандартная вакансия на джуна. Это вообще реально всё самому освоить? Везде ещё английский на ахуенном уровне нужен и минимум 1 год опыта работы. Кто блять вообще советует вкатываться в it? Так всегда было или рыночек порешал?
>>1738388 Реально. Я сначала тоже боялся джава-вакансий, где сразу по 10+ технологий упоминается, а по факту всё за пару месяцев учится (зависит от бекграунда, кому-то год понадобится). Ну и глубоко знать не нужно, проходишься по самым основам той или иной технологии, понимаешь, как это применять и куда дальше копать при необходимости - и идёшь дальше.
>>1738388 >Так всегда было или рыночек порешал Последние 10-15 лет так все и было. В конце 90-х и начале нулевых возможно брали людей менее скилловых, но тогда рыночка айти почти не было - работа только в мск и спб в очень ограниченном количестве, а в мухосрансках только НИИ, куда люди шли из местных вузов, а не с улицы.
>>1738388 Иди торбу носи/гайки на завод крути, хули ты лезешь в айти? Только не говори, что денюшки большие увидел и сразу подорвался. Это будет слишком жалко выглядеть.
>>1738455 Нет, на вышку поступил "информационные системы и технологии", если сравнивать с одногруппникам, то из 30 человек в 5 лучших, а может в 3. Буду все лето учить по часу в день, так как все равно ленивая жопа. Но края пиздеца не вижу пока что. И мне ещё англ тянуть с 0, так как в гуманитарной школе учил немецкий, и это тоже херово, так как за 6 старших классов по часу-два в день нас ничему толком не научили. (В группе у меня лучше всех был немецкий). А тут с нуля параллельно учить. Я конечно понимаю, что сам идиот и выбрал, возможно, не тот путь. Но программирование меня привлекает не 300к/наносек, а тем, что можно относительно спокойно работать и не получать 20-30к, ну и интересно тоже. В универ кстати только с++ преподают, поэтому сам перекатываюсь на жабу. С++ джуну вообще пзд.
>>1738452 Тут объективная реальность. Работодателю нахуй не нужны бездарные уебаны, которых надо 2 месяца учить хеллоуворлд писать. Им надо тех, кого сразу посадил на рабочее место, дал день на изучение проекта и через неделю-две он уже хуярит таски как будто всегда тут был. Бездарный уебан думает, что джун это самая низкая должность. Это не так. Стажёр, трейни, за еду, за 30к в дс - вот выбор тех, кого этот список пугает. Но даже тут, опять таки, ещё одна вертуха в ебальник от суровой реальности - на стажёров берут всяких студентов, набранных с последних курсов вузиков. И даже туда очередь. >>1738458 Всё, что ты можешь сделать со структурами данных в голове ты можешь сделать в коде. Вот есть мапа "Имя шлюхи" - "Прайс". <String, Integer>. Как сгруппировать имена по прайсу?
>>1738462 А, ну тебе хоть не 30ка как некоторым. Студентик ещё, учись, побегай по кафедрам, если ты действительно такой пиздатый то быстро за еду вкатишься, по началу тяжело будет, но потом уже к выпуску будешь нормально работать и в ус не дуть.
>>1738464 >на стажёров берут всяких студентов В mail, например, на стажера могут взять только студента - такие правила. Не удивлюсь, если в других крупных конторах также.
В общем, буду делать простенький спринговый сервис, который должен отрабатывать раз в сутки и вносить данные в удаленную БД. Как будет правильнее поступить? Вижу такие варианты: 1) Крон запускает по расписанию приложение, которое делает свои задачи и вырубается. 2) Сделать планировщик внутри приложения. Запустить однажды, а там уже пусть работает само по расписанию.
Если честно, проще и быстрее было бы на скриптовом языке сделать, но мне спринг учить надо и портфолио пилить. Ну и расширить в дальнейшем можно будет или где-то переиспользовать как модуль чего-то большего.
>>1738603 spring scheduler, конфигурируется как крон. Делай через него, ибо все реальные проекты это нонстопные приложения, а не перезапускаемые раз в сутки
>>1738603 Если это разовая задача, то запускаешь по крону. Если это монолитное вэб, например, приложение, которое ко всему прочему ещё и какие-то задачи в фоне запускает, то, как уже написали, у spring есть готовые решения для этого.
>>1738624 Спасибо! >>1738651 Тоже спасибо. Вообще, на начальном этапе это небольшое приложение с несколькими подзадачами настраиваевыми. Но расширять есть куда. Потенциально, может стать эта часть фоновой задачей.
>>1738867 Вот ответ >>1738816 Downstream collector, как-то так это гуглится. Тебе нужно уметь делать подобные штуки. Просто из головы бери простые задачи и пытайся их реализовать. Как бы я повернул список? Как бы я отсортировал мапу по ключу? По значению? А какие вообще мапы сохраняют порядок элементов? Как записать/считать мапу из файла? Из джейсона? Как записать данные из джейсона в POJO, а потом сохранить в бд? С типами, интерфейсами так позаморачивайся. Придумай класс, попробуй его расширить, добавь туда интерфейсов, сделай метод принимающий не класс, а интерфейс в качестве параметра, дохуя чего, что кажется простым, а на деле надо хотя бы разок самому это сделать, чтоб на собесе жиденькое по ноге не потекло. >>1738837 Так вот именно, это потому кор жабой и называется. Основные методы, которые ты должен использовать просто из головы, как используешь вилку с ложкой. Наизусть то их все знать не надо, просто знать, что такое возможно и при необходимости загуглить за 30 секунд.
Может кто подскажет, пытаюсь вкатиться в спринг, запилил по гайду приложение, поднял Апачи Томкэт, и все настроил вроде. В IDE в логах отображается что все удачно собрано и задеплоено на сервер, но сам сервер, падла, выдает 404 и говорит что не видит никаких артифактов. Куда смотреть? где что настроено не так? ощущение такое что какие-то пути проебаны
>>1738891 > Вот ответ >>1738816 Имхо, то как ты поставил задачу - моча и говно. "Сгруппировать имена по прайсу". Охуеть надо, ни в каком виде должен быть аутпут, нихуя. На доске они в табличке должны быть сгруппированы? В какой-то целевой объект? Чтоб смог с ними работать какой-то интерфейс? Догадайся, ньюфажина, сам
>>1738894 Ты не туда коннектишься. Ты коннектишься к томкету на рут, а надо - на context-path приложения (выделено на пикриле). Т.е. у тебя будет примерно такое: http://localhost/test-spring-app Какой именно путь имеет твое опубликованное приложение смотри в менеджере приложений по ссылке на скрине.
>>1738898 Другой анон меня понял, ты - нет. Думаешь на реальном проекте тебе будут разжёвывать такие вещи? Да им похуй всем в каком там что формате и как ты это будешь делать, главное чтоб работало и фронт это вывести мог.
для джуна достаточно нормально разбираться в core жаве (ооп, базовые типы, коллекциии, базовая теория по многопоточке), немного бд (знать как из приложения подключаться и мочь в простейшие crud операции), немного спринга (понимать что такое IoC, DI и мочь в какое-нибудь простенькое mvc приложение), если к этому еще и про паттерны будешь знать то на мидла можешь попасть
>>1738923 long current = System.currentTimeMillis(); List<Future<Task>> tasks = ...; tasks.forEach(Future::get); long total = System.currentTimeMillis() - current;
>>1738919 Кое-как смог туда попасть. Пришлось гуглить как туда вообще доступ получить, я просто полный диван, вчера первый раз попробовал что-то сложнее двачерства, сори что я такой тупой. Вот список приложений. Я так понимаю это значит что ничего туда не разместилось из IDE? олсо, как сменить пользователя на сервере? я зашел как админ, а чтобы получить права на вход в менеджер пришлось тупо прописать учетке админа роль "manager-gui"
>>1738923 >>1738909 Боюсь конечно ошибиться, но это же не core (сам язык) а стандартная библиотека уже - всекие Stream API и прочая поебень? строго говоря даже коллекшенс не кор.
>>1738956 Сам язык это синтаксис, операторы там, ключевые слова. А кор это именно в отношении стандартной библиотеки SE применяется. Еще пример - есть кор у спринга, тут же ты не скажешь что это язык, это именно классы спринга.
>>1738960 синтаксис это синтаксис. А кор это семантика выраженная через синтаксис + сам он. (синтаксис может быть одинаков у двух языков, но разная реализация и смысл) Различие в том, что невозможно вывести никакую часть кора через остальное. А если ты знаешь кор то абсолютно все что входит в стандартную библиотеку ты сможешь понять сам, без гайдов, или даже переписать, потому что библиотека выводима из кора
>>1738949 Немного не понял, ну вот.. А чем фючеры плохи?
class Worker { private Task[] tasks; private long time;
public Worker(Task[] tasks) { this.tasks = tasks; time = 0; } public void work() { for (Task task : tasks) { long current = System.currentTimeMillis(); task.run(); time += System.currentTimeMillis() - current; } } public long getTime() { return time; } }
>>1738937 Лучше попробуй потыкать спринг бут, он сам поднимает и настраивает у себя томкат, а тебе достаточно запустить олин жарник. Для изучения спринга норм. Но с обычный томкатом тоже лучше потыкать, бут сейчас не везде.
>>1738921 Делать тебе нехуй это говно пилить. Тебе ещё 5-10 минимум придётся таких сделать, лучше бы сразу реальные просил. Там хоть какой-то фидбек дают иногда. А так, что толку, что ты сделаешь их, если на ошибки тебе никто не укажет.
>>1738977 >А чем фючеры плохи? Они не плохи, но их может не быть искаропки. Приходишь на проект и PM сообщает, что заказчик требует использовать хипстерскую библиотеку YobaExecutorLib, якобы она круто рулит потоками и ниче другое использовать нельзя. Тебе хочется прописать заказчику в ебыч с вертухи остаться на проекте, твои действия? В общем, переложи 4 спички образно чтобы тест заработал. Почему, кстати, не работает?
>>1738967 >>1738956 У тебя какое-то свое собственное определение кора. Попробуй его в следующий раз объяснить на собеседовании, может накинут баллов. А работодатель, когда пишет в вакансии "Java Core", имеет ввиду что ждет от тебя как раз отличное знание SDK Java SE, умение пользоваться стандартными инструментами, он ожидает что ты знаешь коллекции и Stream API, а не умеешь их сам навелосипедить ("вывести из кора").
>>1739009 Эта шняга и так на спринг-бут, по крайней мере, в депенденси почти все библиотеки - boot. Я пока тыкался там в своих потугах уже вроде довольно неплохо понял как и что там где конфигурируется. только вот большие сомнения в путях, потому что я толком не понимаю где должны лежать выходные файлы, например. У меня две папки есть out и target. Одна из них я так понимаю появилась в результате неправильной конфигурации, а как должно быть хз. Еще я не использовал архетип мавен при создании может это тоже как-то повлияло. Капец, с ядерным реактором разобраться проще
>>1738937 >>1738917 У тебя непонятно что на рут замапилось, названия нет, пустое поле. По дефолту там "Welcome to Tomcat", статичный сайт с одной всего jsp-хой. Вполне возможно у тебя что-то туда все-таки уже закинулось, советую проверить непосредственно папку tomcat/webapps/ROOT - если увидишь свои классы, то деплой прошел успешно, но в коде приложения есть ошибки типа отсутствия маппингов или что-то еще, в общем приложение как бы опубликовалось, но еще ничего не выдает.
>>1739168 Если бут, то достаточно указать в pom.xml <packaging>jar</packaging> вместо war. И настраивать томкат не придётся.
Если собираешь мавеном, выходные файлы лежат в target. out берётся, если собирать самой идеей (вроде, она ant использует), но не думаю, что она соберёт до конца, потому что вряд ли там есть менеджер пакетов.
> архетип Можно без этого обойтись. Например, сгенерировать проект на start.spring.io и посмотреть, что и как там настроено.
>>1739192 Я думал приложение должно немного поработать и прогреться, чтобы все jitом перевести в нативный код. А вы говорите, что прямо во время запуска.
>>1739180 буду что-нибудь пробовать. я его специально собирал в war-explode. не знаю правильно это или нет и какая вообще разница. Еще почему-то name подчеркивает IDE, говорит can't resolve, хотя пример этот копирован из мануала по на оф сайте спринга, и name есть в контроллере >>1739176 А как вообще увидеть что на сервере? где смотреть это?
>>1739197 Зависит от реализации, OpenJDK и Oracle JDK - так и делают. А вот Jrockit не имел интерпритатора вообще, сразу компилировал С1. Azul Zing при использовании Ready Now тоже сразу компилирует С2.
>>1739212 Ну куда ты томкет поставил, зайди в ту папку. Вроде ты там недавно даже был, в подпапке conf настраивал как админа добавить. А теперь тебе нужна подпапка webapps, а в ней еще одна подпапка ROOT - там лежат файлы приложения, к которому получаешь доступ по адресу localhost:8080.
>>1739240 Да, это стандартные файлы (пик 1, сравнил со своими), это не твое приложение. Советую для начала сделать деплой приложения вручную, это очень просто:
1) Билдишь проект мавеном (пик 2); на выходе в папке target у тебя появляется, например, my-spring-app.war 2) Переименовываешь в test.war, это чтобы упростить себе жизнь 3) Тупо копируешь test.war в папку webapps в томкете, и ждешь 5 секунд, он сам все поднимет, должна будет появиться подпапка test 4) Заходишь на http://localhost:8080/test
В /manager/html/list это приложение так же должно появиться, проверь. Если все успешно, значит приложение ты написал правильно и к нему претензий нет, и дальше будешь ебаться с авто-деплоем приложения через идею.
>>1739274 >>1739287 Попробовал. jar-ник появился, скопировал его и в webapps и в его ROOT, и сервер перезапустил - нифига не работает, и из менеджера его не видит. Спасибо за попытку, доброанон.
>>1739304 да, попробовал из менеджера развернуть, он мне говорит что должен быть файл war еще один вопрос - а где это настроить для мавена? У меня в project structure и так указано в разделе артифактов - war для мавен как-то отдельно настраивается?
>>1739303 >скопировал его ... в ROOT В ROOT не надо, только в webapps
>сервер перезапустил Молодец что попробовал, но это тоже лишнее. Должно все подхватываться автоматически. А сейчас не получилось потому что томкет сканит папку webapps на наличие варников, и новых варников он не нашел, так что все верно, результат нулевой.
Лучше покажи свой pom.xml, наверняка с ним что-то не то. Для вара надо добавить <packaging>war</packaging>, этот параметр не должен игнорироваться мавеном. Все что ты пишешь в project structure в идее на это пока забей, работай напрямую с мавеном и pom.xml. Вот у этого анона >>1739315 хороший помник, из важных моментов здесь это: - вышеупомянутый packaging war - scope provided на томкете - build/finalName - это имя выходного файла без расширения, сюда напиши test
>>1739315 war собрался, закинул его но он не работает все равно. правда при сборке произошел такой фейл: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) короче гуглить буду. все равно надо понять как все работает, а не тупо запомнить действия
>>1739331 Ну что могу сказать, у тебя сложный хелловорлд, надо проще. На первый взгляд в pom все корректно, наверняка ошибка из-за километра зависимостей. Упрощай дальше, выкидывай все лишнее, смотри в какой момент заработает. Но это сложный путь, и не единственный. Проще будет создать новый мавен проект без архитипа и прописать всего 3 (три) файла, такой вот хелловорлд накидал тебе. Щас быстро по-фасту создаешь эти три файла и у тебя первое рабочее бут приложение под томкетом. Это все проверено и работает, не обосрись. - pom.xml ( https://pastebin.com/Vq18hR2u ) - Main.java ( https://pastebin.com/ckmhk3hM ) - AppEndpointController.java ( https://pastebin.com/dJdg5F1u )
Дальше будешь наращивать сложность: добавлять зависимости по одной, другие файлы там какие есть в твоем первом хелловорлде, и внимательно смотреть когда "упадет". Такой вот путь.
>>1739144 А тем временем бамп. Никто не угадает какой инструмент я загадал? Кто там хотел практических задачек, ну вот же, берите-решайте, ориджинал контент.
>>1739369 Спасибо, анон. Все качнул, завтра буду пробовать. Сейчас уже поздно в моих мухосранях. Добра. Если все взлетит напишу сюда радостные вопли свои.
Вот у меня есть таблица users, у которой есть one-to-one поле code (не первичный ключ, просто уникальный код чего-либо, не знаю что еще придумать для примера) и таблица unique_codes, у которой так же one-to-one поле user.
В сущностях эти поля выглядят так: User: @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "code_id") private UniqueCode code;
UniqueCode: @OneToOne private User user;
При создании new User(new UniqueCode(123)) в таблицу users заносится айди кода, а в таблицу unique_codes заносится сам код 123, но на месте айди юзера стоит null. Подскажите, пожалуйста, что я делаю не так?
>>1739144 Добавил немношк бизнес-логики чтобы тест явно падал. Кстати, если это было не очевидно в первый раз - изменять можно и тест, и MyTask - это ваш код. Неизменными должны быть следующие условия: - использование метода execute() у экзекутора - ~100 тасков - ~10 потоков
>>1739414 >но на месте айди юзера стоит null Ты хочешь чтобы в таблице unique_codes были два столбца из таблицы users чтоли - и code, и user_id? Связь делается по одному полю, а не по сколько захочешь. И у тебя это уже users.code = codes.code.
>>1739554 >Связь хочу по users.code_id - codes.id Подходит. Но где в этой связи user_id на который ты жалуешься что он null? Я же с этого и начал: ты хочешь чтобы автоматически заполнялись два поля - и codes.id, и codes.user_id?
>>1739564 Ну, получается, вот я создаю нового юзера, создаю новый код, даю его юзеру. В бд users.code_id должен вписаться пк из codes, в codes.user_id должен вписаться пк из users, и в codes.code должен вписаться сам код. Как-то так..
Сап, джаваны. Может кто-нибудь сказать, чем котлин лучше джавы, что в нем реализовано лучше, удобнее (сахара больше? функциональные возможности? что-то другое? ничего из этого?). Желательно чтоб ответивший знал реально оба языка, чтоб это было не с проперженного дивана мнение.
>>1739977 А я учусь в вузе, купил курсы джавараш, немчинского, хекслет, гикбрейнс, жидбрейнс академи и все книги мартина фаулера, хорстмана, шилдта, спринг ин экшн.
>>1739977 Ну это естественно, но вот вдруг без корочек резюме не попадет к тимлиду на стол просто. Я до начала изучения джавы искал стажировку на фронта, но меня везде посылали нахуй без образования.
>>1739854 Я с вышкой. Но спросили про неё только когда уже тестовое сделали, алгоритмы на листочке порешал и о зп договорились. "О, да у тебя и диплом есть, очень хорошо!" Возможно, да, у хрюшек фильтр стоит, ведь в 2020ом не получить вышку в рахе это надо быть дауном. Пытайся, выходи на контакт, не думаю, что если ты уж прям полностью всем устроишь работодателя они тебя пошлют нахуй только из-за отсутствия корки.
Подскажите плз, у Шилдта годно по Stream API описано, или он слишком древний и что-то там поменялось? Стоит по нему вкатываться? Очень нравится шилдт своей полнотой изложения.
>>1739986 >чем котлин лучше джавы, что в нем реализовано лучше, удобнее (сахара больше? функциональные возможности? Почти все преимущества можно свести к этому "сахара больше", только ведь сахар это хорошо и важно, это означает, что в языке есть много приятных удобств. Каждое в отдельности не является такой уж киллер-фичей и про каждое можно сказать "ну и чо, я прекрасно обхожусь", но когда все они есть вместе, получаем язык, работать с которым комфортнее и продуктивнее, а код становится более выразительным и легче поддерживаемым. Или, если грубо, - котлин лучше джавы так же, как современная джава лучше джавы двадцатилетней давности.
Минусы, странные и кривые решения при этом есть тоже, конечно. Но плюсы перевешивают, если отталкивать от практических потребностей, а не заниматься поиском идеального языка мечты.
>>1740198 спасибо, анон. А если с шарпом сравнивать все это, то как? Шарп тоже похож на жаву но сахарный и со всякими фичами типа линка и делегатов. вопрос тупой, я понимаю, но все же.
>>1740208 Шарп, для начала, это другая платформа, сравнение .NET и джавы это отдельный разговор. А если смотреть только на язык, то шарп и котлин где-то одного порядка вещи. Можешь считать, что котлин это такой шарп для JVM.
>>1740218 >Шарп, для начала, это другая платформа ну, это очевидно. Я просто его +/- знаю, и он тоже похож на Жаву, поэтому относительно него спросил сравнение. Тем не менее, благодарю за ответ.
>>1739369 Сап, доброанон. Все взлетело. Спасибо за помощь. Буду этот хэлоуворлд использовать как тестовую площадку для экспериментов. Олсо, я вручную добавлял Томкэт в "run configuration", хотя там в списке уже есть SpringBoot. Из под спринг-бут происходит ошибка развертывания, из под томкэта все норм (пикрилейтед). Я так понимаю, спринг не знает где томкэт находится, или что-то такое? вроде же должен он сам запускать сервер.
Томкет это сервер приложений. Точнее, это сервлет-контейнер, но не суть. Суть в том, что томкет может хостить одновременно много приложений, и спринговых, и обычных, и спрингбутовых. Все они будут со своими путями, напр. localhost/app1, localhost/app2 и т.д. Но все они работают под одной единственной JVM, потому что под этой JVM запущен сервер приложений, а сами приложения - уже под сервером.
А фишечка спринг бута в том, что у него может быть (а может и не быть) свой встроенный (embedded mode) сервер приложений: Tomcat, Jetty или Undertow. Но на этом сервере приложений будет всегда крутиться только одно приложение: спринг бут запускает этот встроенный сервер и публикует себя в нем, и уже работает через него. Поэтому спринг бут приложения еще называются stand-alone - самодостаточные независимые приложения, им не нужен сервер приложений, тут он есть в комплекте.
Но как я и сказал, в спринг буте может и не быть встроенного сервера приложений, его можно "выключить" двумя способами: "мягко" и "жестко". В случае с "жестко" встроенный сервер даже не добавляется в war, его там физически нет. Именно это я и сделал для тебя (пик 1), т.к. ты спрашивал про "спринг бут под томкетом": exclusion - исключили томкет из сборки, provided - указали что servlet api предоставляется контейнером. Поэтому такое приложение теперь вообще нельзя запустить самостоятельно. Но ты всегда можешь поэкспериментировать с pom.xml: удали exclusions и весь dependency блок с provided, и должно заработать автономно.
Привет, не сильно заняты? Есть небольшой вопрос по регуляркам. В общем, получается такая фигня. Я пробовал заменить каждую \\ на \\\\ - не помогает. Все равно не матчится. И RANGE заворачивал в скобки ( )
>>1741219 Благодарю. Я кстати пробовал их ставить, даже в том посте написал. Но я их ставил вместе с \\\\d, а это уже неправильно. Ну, обычным println наверное нельзя смотреть регулярку.
>>1741221 Spring in Action это про спринг в общем. Даже не знаю есть ли там отдельная глава по буту, я читал Pro Spring. А вот пикрил тебе явно более глубже расскажет про бут. Но я на самом деле даже не помню чтобы там объяснялось такое, может максимум пара абзацев, то что я уже и так пересказал.
>>1741225 Еще могу посоветовать делать сначала регулярку "в вакууме", а не в джаве. Открываешь например regex101.com или что тебе больше нравится, пишешь тестовые данные, составляешь регулярку, не ебешься с дополнительными бекслешами. Когда заработает - переносишь к себе в джаву, эскейпишь бекслеши.
Чет не могу понять, как в Path переименовать файл не записывая его куда то? Я прочитал файл, его нужно переименовать и отдать как Path дальше. Исходный файл должен остаться нетронутым. Есть какой то способ сделать это без сторонних утилит?
Я уже пару лет изучаю джаву, и не очень понимаю что делать. Сейчас пробовал решать Хорстмана, дошел до половины и поймал сильную дизмораль. Я понял что мне это не интересно и я за эти годы нихуя не продвинулся. Пробовал пойти на стажировку, там какая-то мясорубка из любителей олимпиадного программирования, ясен хер, что я слился. Просто сидел и охуевал от заданий, набилось человек 15-20, и так каждый день у них там, отбор сильнейших. Что не так со мной? Получается я просто выкинул время? Реально не знаю что дальше делать, смотрю в потолок все свободное время, и не понимаю. Пиздос.
>>1741736 Забей пока на задачи и изучай технологии - спринг там, базы. Может, станет интереснее от осознания того, что теперь можно сделать что-то более впечатляющее, чем получить данные из консолки и записать результат в файлик.
> мясорубка Небось ходил в какой-нибудь яндекс. Там не то что стажёрам - всем трудно.
>>1741736 Первое время тяжело, поэтому нормисов и предостерегают, что если идёшь в айти из-за денег, то это хуёвая затея. Я вот ловлю себя на мысли, что когда после нескольких часов кода какая-нибудь фича наконец начинает работать как надо, то у меня разве что шишка не встаёт. По началу только это и заставляло двигаться дальше, теперь ещё и деньги платят за эту хуйню, вообще ахренеть. >мясорубка из любителей олимпиадного программирования Есть такое. Но первые 10-20 собеседований это не повод сдаваться. Это норма.жпг. Алсо, жаба это ж не только жаба, это ещё SQL, noSQL, спринг, паттерны, хуятерны, алгоритмы, всё это ещё надо в докере собрать и из под консоли sudo дёргать, ну ты понял. Нахуй ты лез вообще? Есть же жс или петухон. Лез бы туда, там то не будут на ревью ебать, за то, что ты в репозиторий логику из сервиса добавил или ещё где с архитектурой обосрался. Наверное. >>1741758 >Небось ходил в какой-нибудь яндекс. Там не то что стажёрам - всем трудно. Два чая. Надо лезть в небольшие конторы для вката. Ну такие, где весь процесс собеседования занимает меньше 40 минут.
>>1741852 >Надо лезть в небольшие конторы для вката. Ну такие, где весь процесс собеседования занимает Что за конторы? что будут спрашивать в таких конторах? Алгоритмы? И куда идти из-за денег? >>1741758 АТ Consulting, в отзывах пишут, что фирма убогая, и работать надо с 9-23, текучка сильная, поэтому я думал, что им нужны люди, и попасть проще.
>>1741921 Спрашивают везде одно и тоже, просто одним нужен ещё один сотрудник, а другие просто проводят собеседования ради собеседований. Одни возьмут первого попавшегося адеквата, потому что работа есть и её надо работать, вот прямо завтра, а другие будут N часов про круглые люки спрашивать и потом даже не ответят. >АТ Consulting Это на дмитровской, такой ещё вытянутый офис в виде коридора, будто какой-то завод старый или хуй пойми что за здание. Был там, типичные вопросы по методам класса обжект и отличия связного списка от аррейлиста. Вообще забыли про меня и ничего не ответили, пока сам не напомнил. >9-23 Даже на собеседовании упоминали, что у них в трудовом договоре прописан ненормированный график.
Аноны, такой вопрос. Хочу написать консольную программу, которая будет отвечать на вопросы, введенные пользователем. Ответы будут генерироваться по ключевым словам, типа как, когда, где, почему и т.д. Вопрос в том, как правильнее реализовать логику поиска ключевых слов? Я сам думал разбивать введенную строку на массив стрингов (слов в предложении) и сравнивать каждый элемент массива с коллекцией ключевых слов. Но мне почему-то кажется, что это очень топорно и есть метод элегантнее. Решал кто-то подобную задачу? Поделитесь опытом?
>>1741736 > Я понял что мне это не интересно Зачем ты вообще тогда в это полез? Конечно же ты в таком случае проебал время, если научился чему-то что тебе в итоге не нравится. Мотивируйся теперь тем что это относительно востребовано и оплачиваемо. Хотя обычно успехов добиваются те кто мотивируется именно увлеченностью.
>>1742023 Я еще только вкатывальщик на хэллоуворлдах, но что тебе мешает ебануть innerString.contains(goalString)? в одну строчку узнаешь есть ли твое слово (goalString) во входной строке innerString
>>1742038 Ну так я как-будто бы это и написал как "топорный метод". Только у меня не одно слово,а коллекция ключевых слов. И надо сравнить с каждым из них.
Джава это интересно. Я радуюсь, когда очень много говна написал не проверяя, а оно с первого раза заработало. Теперь я понимаю, почему ее берут для тырпрайзных систем.
>>1742091 Функция, переданная в map(), должна возвращать значение, а для peek() она должна быть void. То есть peek() выполняет некие побочные действия, например, логгирование, а дальше передаётся оригинальный поток. Вот только не всё так просто, там ленивость и всякая хуита, из-за которой логика вызова peek() непрозрачна, например, он может не вызваться вообще, если в конце стрима у тебя какой-нибудь count(). Ну и поэтому в доке предполагается, что peek() будет юзаться только для дебага, а не в реальном коде.
>>1742104 Я вкурил вроде. То есть, если экшн внутри map возвращает любой тип Object, то на базе этого типа формируется новый stream<Object>, а если запихать void, то стрин не получится продолжить. и типа для таких случаев и нужен peek, который что-то делает с элементами стрима, но сам поток не реконструируется, и peek можно выкинуть незаметно для самого потока, пропадут только побочки которые родились в нем. так? благодарю.
>>1742112 Да. В peek() можно изменить поток, эти изменения будут видны дальше. Правда, при юзании стримов лучше вообще не делать побочных эффектов, потому что работает это с множеством оговорок.
>>1742070 >говна написал не проверяя >Я радуюсь Ну тут 2 стула. Либо "порадуется" тот, кто будет после тебя в этом говне разбираться. Либо твой тимлид, когда ты будешь в позе креветки принимать шлепки яйцами по жопе за каждый проёб.
При обращении сервиса к другому сервису (например нужно проверить проверить что код активации аккаунта правильный, но этот код истек делаю через jwts или вообще не найден в базе хранятся в поле сущностей User до активации, после активации обнуляется) нужно выбрасывать рантайм эксепшен или присылать false/ServiceResponse(false, "токен истек")? Что обычно используется и почему? Как гуглить подобное?
>>1742282 Ты хочешь выбросить эксепшн и вообще ничего не присылать? Могу сказать что так не делается никогда, кроме возможно самых грубейших нарушений протокола, когда в пришедшем пакете совсем нет какого-то поля, или например имя юзера 1000 символов, тогда как в web UI выставлен максимум в 100 символов - т.е. тут явно кто-то играется, реверс-инжинирит, пентестит. Тут можно и нужно выбросить эксепшен, поймать его, залогировать с варнингом, оповестить сервер мониторинга, т.к. это явно очень интересная и нестандартная ситуация. В зависимости от нагрузки на сервер и тяжести эксепшена допускается не возвращать ничего, хотя даже тут всегда возвращают "хаха иди нахуй хацкер мамкин" "unknown error, please try again".
А обе описанные тобой ситуации - и код истек, и кода нет - вполне ожидаемые ситуации, и "программировать на исключениях" тут не нужно. Передаешь токен в сервис проверки, сервис возвращает код результата - enum или int. Далее в зависимости от логики и количества ошибок в домене, свичом или ифом формируешь ответ с нужным классом ошибки.
>>1742415 >>Ты хочешь выбросить эксепшн и вообще ничего не присылать? Имелся ввиду UserServiceException extends RuntimeException, выбрасывается с месаджем в чем проблема (токен протух, токена нет в базе и тп).
>>enum или int Думаю в моем случае дто UserServiceResponce. Енум с сообщениями ошибок пока излишен, хватит и стринга с ошибкой (или сета стрингов), которая и будет передана на вьюху.
>>А обе описанные тобой ситуации - и код истек, и кода нет - вполне ожидаемые ситуации А вот ситуация что введенный логин неправильный - вполне себе исключение.
package org.springframework.security.core.userdetails; public interface UserDetailsService { / @throws UsernameNotFoundException if the user could not be found or the user has no GrantedAuthority */ UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
>>1742114 >An error happened during template parsing (template: "class path resource [templates/index.html]") Я все сразу понял, а у тебя с чем проблемы?
>>1742485 Все дело было в незакрытом теге <div>. Или в неправильном выражении в этом самом диве(но идея молчала, говорила все ок). Стектрейсы там одинаковые. Проблема в том, что в браузере этот хтмл открывается без ошибок, а при запуске сервака и обращению к странице вываливается такое.
Нужно в коде загрузить все страницы с электронного дневника (не школьного, а в котором про жизнь свою пишешь) Как распараллелить загрузку страниц, URI которых получаются путем приплюсовывания циферки к шаблону страницы?
Мне известно общее количество этих страниц, поэтому что бы загрузить все, я просто пробегаюсь в цикле от 0 до n максимального и синхронно всё загружаю, но это очень медленно. (первый пик) Пробовал через ExecutorService threadpool = Executors.newCachedThreadPool(); (второй пик) но по факту это не дало особого выигрыша во времени, подскажите, плиз, как это вообще правильно и быстро делать.
Использую библиотеку Jsoup (https://jsoup.org/) для скачивания и парсинга html страниц
>>1742857 >Пробовал через ExecutorService threadpool = Executors.newCachedThreadPool(); (второй пик) но по факту это не дало особого выигрыша во времени Потому что неправильно пробовал.
>>1668733 (OP) Вот выучил я Core и дальше смотрю в сторону web-сервисов. Чтобы стать нормальным программистом нужно найти работу, ее не найдешь, если нет хотя бы проекта, его просят на всех вакансиях, очевидно, а я, там писал какие-то рандомные программы с swing или типа того. Так вот, какой проект вы мб реализовывали используя Spring (+ что-то еще, что вам нравится Hibernate и проч и проч), или мб есть идеи для проекта с небольшим стеком простых технологий для веба, я вот пока не понимаю, что мне конкретно учить. Если есть примеры или идеи - отвечайте. Интересно будет узнать про ваши проекты или про ваш путь в Java-разработке
>>- GET просмотр документа по ID, Как просмотреть документ в браузере, если нет плагина для его просмотра или мы не хотим покидать сайт? Допустим это docx.
>>Для gui использовать thymeleaf + material. material это вообще что? Material UI? Это нужно реакт подключать?
Я, конечно, не отрицаю того факта, что я тупой, но как мне такой SQL-запрос написать на QueryDSL?
select * from affiliate_programs ap left join affiliate_programs_statistics aps on ap.id = aps.affiliate_program_id where ap.deleted = false and aps.date between '2020-07-20' and '2020-08-20';
Ребята, почему если запускаю метод coding() из свитча, то все три метода внутри срабатывают одновременно, а если вызвать без свитча - то все работает как надо?
>>1773130 Это просто первое с чего я начинал изучать жабу - писал дешифратор сначала цезаря-потом вижинир-потом методом частотного анализа для разных языков. курсера-дюк университи А всякие криптоприколы у тебя начнутся в спринг секьюрити
Ребят, каким методом лучше изучать Java? Всю жизнь на книгах, поэтому и выбрал "Полное руководство Шилдта", пержу на 300 странице, грубо говоря тот еще говно-теоретик.
Но крутые люди на потоке обучаются посредством собственных проектов. Типа берут идею и реализовывают, параллельно гугля то, чего они не знают.
Вот и не знаю теперь, правильную ли методику обучения я выбрал
>>1773287 Шифр вижинера же вроде не поддается частотному анализу при использовании одноразовых блокнотов. Да и в принципе взламывать его накладно технически. Или уже нет?
>>1775769 Если компьютера нет - то накладно, а так вполне взламывается. Сначала определяешь длину ключа, а потом он становится обычным цезарем. Я не помню как длину ключа определял, вики подсказывает что так:
Поиск длины ключа. Можно анализировать распределение частот в зашифрованном тексте с различным прореживанием. То есть брать текст, включающий каждую 2-ю букву зашифрованного текста, потом каждую 3-ю и т. д. Как только распределение частот букв будет сильно отличаться от равномерного (например, по энтропии), то можно говорить о найденной длине ключа.
То есть в хэшмепы все это дело собираем и считаем.
>>при использовании одноразовых блокнотов Это ж вроде шифр Вернама? Его да, так просто хуй сломаещь, а вижинер это просто кодирование словом - по сути развитие цезаря.
>>1775737 >>крутые люди на потоке обучаются посредством собственных проектов. Так это и есть самый годный способ. Теорию бегло глянул, чтоб понять примерно что как работает - и начинай писать проекты. Задрачивать теорию без практики бессмысленно - все равно ничего не поймешь, пока не попробуешь. Потом придется перечитывать. Если самостоятельно делать проекты пока не умеешь - то есть всякие hyperskill.org и подобные для совсем простых задач уровня кофе-машины или чат-бота. Потом перекатишься на гайды по спрингу на баелданге.