Вы видите копию треда, сохраненную 26 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Проучаем вайтишников, дрочим спринг и ЕЕ, охуеваем с легаси
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Вкатиться нельзя, ты должен был родиться программистом.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki
Язык для бета-тестеров не спрашивали.
А ещё есть скала, груви, цейлон, кложура, jython. Лучше N полумёртвых языков для JVM только N+1 язык.
Скалисты и кложуристы между прочим получают самые большие зарплаты в мире среди кодеров, если верить опросам.
Ну так надо их как-то удерживать, чтоб на таком говне писали.
Так-то и топовые плюсовики дохуя гребут. Эти языки далеко не для всех. Если средний вкатывальщик будет учить скалу с целью получать топ зп, он вероятнее не сможет найти работу, чем реально будет получать такую зп.
https://vertex-academy.com/tutorials/ru/samouchitel-po-java-s-nulya/
Поясните за эту мурзилку? В идела хочу чтоб как у ОПа в пыхапэ треде было
> Пиздец вы перекатываете конечно, будто в быдлач попал
> https://vertex-academy.com/tutorials/ru/samouchitel-po-java-s-nulya/
> Поясните за эту мурзилку? В идела хочу чтоб как у ОПа в пыхапэ треде было
Неплохой ресурс
А еще что посоветуешь? Книжку бы хорошо переведенную - я на английском ооочень долго и коряво читаю
Яков Файн - Программирование на Java для детей, родителей, дедушек и бабушек
Не троллю. Рили хорошая книга
> А не старенькая она?
Для основ подойдет. Всякие yoba штуки, типа лямбд, можно отдельно посмотреть потом
интеграция на камеле
Потыкай оба, что больше зайдёт - то и изучай.
Меня выбесило API андроида, это прям пиздец какой-то из костылей. Спринг няшный.
А, разобрался. Хлебушек я
Даже ClassPathXmlApplicationContext и xml-конфиги для dispatcher servlet мне показались приятнее и логичнее, чем андроид апи.
А там разве сейчас нет жопаебли с ключами и серверами активации? Я год назад пробовал - 100% выдачи гугла не увенчалась успехом
Легко. Еклипс намного удобней и понятней ИДЕИ, но у него 2 минуса:
1. На винде тёмная тема будет немного криво отображаться.
2. Убогий маркетплейс. Пока он загрузится можно повесится.
Ага, из-за отсутствия нормального автодополнения в виме я даже спринговые импорты начал учить. Неважео
А на чём ещё, если не жава или котлин?
Пых ужасен, нода - это пых, на плюсах веб не попишешь, го примитивный, питон - динамическая дрисня.
delphi 8
>шарп
>кроссплатформенный
>божественный
В свете последних обсёров даже не знаю что звучит комичнее
Ощущения как где-то между джавой и крестами, а экосистема менее удобная.
Я выше уже сказал.
Шо, шо случилось?
Поставил еклипс, и он какой то всратый, не модный, не молодежный. Как хотяб значки поменять там?
мимо другой
Примитивный язык для примитивных людей. Нет, спасибо.
как будто джява это не ебаный примитив, нихуя нет кроме оопе с дженериками (обычный синтасический сахар, которого даже нет в рантайме), и то мамкены не осиливают и вынуждены половину времени программировать на иксемеле
до недавнего времени в этом парашном недо-языке даже нельзя было найти элемент в массиве
джява это язык уровня 1С, такое же коболоподное говно, вечно отстающее на десятки лет
Го в кресты, там заебись все, да
Это даркест дарк? Значи то один хуй прямиком из 2005 года
Есть вопрос, на который мне вряд ли ответят в ноут треде, но вы думаю точно сможете подсказать. Извиняюсь заранее.
Ищу ноут для работы в Idea, буду накатывать ubuntu какую-нибудь.
1. На какие характеристики смотреть?
2. Какой размер экрана лучше взять? Работал ли кто-нибудь на 14' ультрабуке (без моника) - какие были затыки?
3. Мб кто-то работает на 13' macbook pro стоит ли покупать в минимальной комплектации (~110к, очень не хочется)
Конкретнее вопрос - ищу ноут-машину на которой будет комфортно срать своим говнокодом в идею.
Сначала найди машину, чтоб можно было ставить туда всякое говно заместо того что шло с ним в комплекте.
Век анальных зондов на дворе, блядь
>Хотел написать один проект, но сколько ни пытался - жаба не дала мне этого сделать, больше ни на какие ебанины вдохновения нет.
Зачем тогда мучаешься? Го в питончик
Ты не понял. xml и json - норм, только книга тебе нах? Ты в комитете по стандартизации работаешь?
Подскажите, люди добрые, а можно ли как-то заменить подстроку в строке ПОСЛЕ определенной подстроки? Ну т.е. вызвать replaceFirst(), но чтобы поиск таргета шел после нужного мне места?
> По всем темам просто ищу книги
Отвыкай, так ты до пенсии изучать основы будешь. Книги читать нужно по большим вещам типа спринга или баз данных, и то спорно, но уж точно не по сугубо прикладной херне.
Для почти всех задач тебе хватит пары статей первыми ссылками из гугла, например "что такое X", "как работает X", "X quick start".
Найти строку и отрезать всё, включая её, затем заменять в оставшейся строке и склеить обратно.
https://stackoverflow.com/questions/14642978/replace-part-of-a-string-between-indexes-in-java
Ну или написать нужный метод вручную.
Книги просто разжевывают материал хорошо, а я тугой немного для просто статей.
А какой смысл если это копипаст из любой книги по джаве?
Еще он не может в плагины, с каждой новой версией проебываются зависимости. Например в последнюю версию у меня не получилось поставить JFX от глюона и PDE, и не у меня одного!
Прошу пояснить за GeekBrains. Я гуманитарий до мозга костей, но начальные знания по программированию, благодаря приличному преподаванию информатики в универе, присутствуют.
У меня есть достаточно времени и баблишка, чтобы пройти полный курс по Джаве. Да-да, хочу ВКАТИТЬСЯ В АЙТИ, господа гусары. Стать разработчиком, открыть для себя новую сферу развития, как хотите называйте. И нет, Дудя я не смотрел. Мне просто это пиздец как интересно.
Однако, меня много чего смущает. Есть ли тут товарищи, которые на этом "факультете" учились, чтобы на мои вопросы ответить?
1. На GB много задвигается про трудоустройство. Послушайте, реально после успешного прохождения годичного курса трудоустроиться хотя бы джуном? Они хоть какие-то вакансии предлагают, или это просто КАРЬЕРНАЯ КОНСУЛЬТАЦИЯ?
2. Насколько котируется сертификация GB у работодателей? Я много слышал о том, что в разработке в принципе важен опыт и реализованные проекты, а не сертификаты и дипломы - тем не менее, я считаю, что необходимо показать какой-то бэкграунд.
3. Что, по вашему мнению, лучше? Курсы в GB или полноценный очный курс в вузике? Есть возможность проплатить и пойти в Бауманку поучиться. Цена одна и та же примерно, но я работаю и хочу таки дистанционку.
Также рад буду прочитать про ваш опыт обучения.
Хуй его знает, я с него тупо начинал. У меня от других IDE теперь жопа полыхает.
А если серьёзно, то самообучение это лучший выбор. Когда уже усвоишь пару книг можно идти на курсы. Но они так, для закрепления.
Анонче, для работы с любой IDE важен проц и объём оперативы.
У меня старенький MSI GE602PL Apache, 15,6" - если честно, маловато пространства, подзаёбываюсь листать. Я бы тебе не советовал брать ещё меньше.
Ну смотри, я решил пройти курс "Java Programming for Complete Beginners" от Alison - благо, он полностью бесплатен, и английский у меня нормальный С1, я ж гуманитарий, блять!
https://alison.com/course/java-programming-for-complete-beginners
Литературу буду выбирать по местным гайдам, но есть вопрос:
Где можно найти нормальный задачник? Как вообще прикладная часть в обучении кодингу реализована?
JavaRush не понравился, какая-то дичь. Слишком непрозрачно, и юмор хуёвый.
Если ты вообще рассматриваешь вариант с Макбуком за 110к, то значит ноут за тыс. 60 - 70 можешь позволить себе. За такую цену бери Делл какой нибудь и всё. Там любая IDE будет летать.
На счёт размера экрана - лично мне 13.3 дюйма хватает.
Про Джава Раш это была шутка. Говно полное, к тому же она ещё на употребляют тяжёлые наркотики, место то что бы изучать урок по ЯП, ты будешь читать про каких то работов и библию программиста на пол туториала.
Зачем нужен какой то уровень владения англ. если для чтения он не нужен? Я учил английский только в школе, с тех пор не мало словарного запаса накопил и могу спокойно прочитать любой текст, для этого грамматика не нужна, только перевод слов. Но говорить не могу конечно
А я с языками работаю, лол. Да и это видеокурс, автор ещё параллельно комментарии свои вставляет.
Залетай в /fl/, там подскажут, как аудирование и говорение задрочить - несложно это.
>Зачем нужен какой то уровень владения англ. если для чтения он не нужен?
Чтобы работать в дойчебанке, например
>ена одна и та же примерно, но я работаю и хочу таки дистанционку.
Пиздос. Откуда у вас силы и время? Работать и еще и учиться.
Просто удаляешь личную жизнь и место сразу освобождаешься.
>Откуда у вас силы и время? Работать и еще и учиться.
У меня на работе есть парочка неофитов, которые реализуют всю текучку. Моя задача, с недавних пор, заключается в исправлении их косяков. Поэтому могу заниматься тем, что нравится, даже в рабочее время.
1. Ты не поверищь - проц/память/диск.
2. Меньше 15-шки - глаза ломать. 15-ка тоже, но хоть что-то.
3. У мака божественные тачпад и динамики. Если тебе это не нужно, то не стоит.
Обрати внимание на корпоративные ноутбуки: lenovo thinkpad, dell latitude, hp probook/elitebook. Латики одни из самых доступных будут у нас. На форуме ixbt в разделе ноутбуки пояснят по хардкору.
Нахуй вам курсы, когда есть годные книги и мрзилки со встроенными самопроверками и задачками?
В чем разница между EE и спрингом вообще?
>Нахуй вам курсы, когда есть годные книги и детские журналы для детей от 6 до 12 лет со встроенными самопроверками и задачками?
?
Ха! Подовил, молодца! Покажешь мне поом свой охуенный сертифиать после того как окончишь курс?
>>668958
>https://vertex-academy.com/tutorials/ru/samouchitel-po-java-s-nulya/
>Поясните за эту мурзилку?
Почему мурзилка-то, блядь??
Потому что мурзилка это имя нарицаельное, уже давно. В ссылке что ты принес есть всё для того, чтоб она могла называться мурзилкой.
ЕЕ - набор спецификаций, спринг - конкретная технология, на спецификации похожа лишь отчасти.
EE развивается медленно и теряет популярность, спринг жив и здравствует.
ЕЕ требует специальных серверов приложений с реализациями спецификаций, спринг изначально готов к использованию, и от сервера приложений ему нужны только сервлеты, более того, спринговое приложение можно запаковать в один жарник, и для работы ему нужна только JRE.
На ЕЕ тяжело писать микросервисы, на спринге норм.
В ЕЕ всё плохо с интеграционным тестированием, в спринге делается на раз-два.
А так код на современном ЕЕ и спринге аналогичен по содержанию, те же подходы и паттерны, та же организация кода, только аннотации немного другие.
Легаси на ЕЕ никуда не делось, но сегодня нет смысла вкладывать силы в задрачивание ЕЕ, новое на этом стеке почти не пишут.
>>Потому что мурзилка это имя нарицаельное
Первый раз в джава треде такой термин встречаю
>>В ссылке что ты принес есть всё для того, чтоб она могла называться мурзилкой.
Это ты так сайты про хэлоуворлды называешь? Если придумываешь термин, то дай ему определение, а то действительно как какой то шизик.
>>669754
>>не модный
Ты тредом не ошибся? Джава и джаваскрипт - разные языки
другой анон
Получают они эти супервысокие зарплаты только потому, что программистов на Scala и Clojure исчезающе мало и среди них 95% всех разработчиков это программисты с многолетним опытом в Java. Т.е. в выборке можно сказать отсутствуют джуниоры и начинающие мидлы.
Спецификация языка Java больше по объему чем в той же Scala, например. Только поддержка в IDE для Java на первоклассном уровне, а Scala работает через жопу.
Какой язык, такие и треды
Я же написал, что параллельно работаю по курсу и буду литературу осваивать.
Самоучитель от Vertex Academy довольно крутой, темы по нему дублирую.
> Я предположил, что под
> > веб проект на спринге
> подразумевается фронт в связке со спрингом.
Ну вот если не понимаешь, о чем пиздишь, то не пизди
> Primefaces
А стек на стороне сервера какой? Если спринговый, то можно что-то полегче прайма взять. Какой-нибудь шаблонизатор берешь (тот же mustache), и он должен покрыть все твои потребности.
Сам-то понимаешь? В коммунити у тебя руки отвалятся на спринге писать, или что? Или может ты просто никогда ею не пользовался? От ультимейта толк только один - фронт.
>можно что-то полегче прайма взять.
Лол блять тут после апгрейда с 6 на 8 наебнулося по частям, ну хуле перепиши на за выходные все 100 страниц
Да ну его нахуй. Я так помню радовался, когда попробовал, как всё вроде бы понятно и просто. А на деле столько багов, что пиздец.
Пиздец конечно.
Очень надо я не троль, вкатываюсь в хайлоад. Пока нашел вот такое, норм? https://www.katacoda.com/
У меня в универе на след.год будет ведро.
Однако сейчас я выбираю для себя чем мне в целом заниматься, спрингом (который я дома на карантине начал тыкать сегодня) или же ведром (и на учебе облегчение будет, и смогу окончательно выбрать себе направление). С ведром только одна проблема - я не пользовался им сто лет + в ведро треде про работу плакать начинают, когда такую тему поднимаешь.
Concurrency in practice самая годная, сам вот недавно дочитал. В шапке есть еще несколько книг.
А я на эклипсе
Это в советской россии.
Со спрингом на недостаток работы не жалуются, вопрос лишь в том, готов ли этим заниматься. Раз жалуются в андроид-треде, это всё-таки лишний повод подумать, стоит ли оно того.
А для универа я бы не стал сильно запариваться, мне тут вообще предлагают писать магистерский диплом на фортране я серьёзно. Разве что потыкать в нужных рамках.
Я наоборот не из-за универа запариваюсь. + если есть возможность что-то сделать для универа сейчас, чтобы потом можно было в нем пинать хуй больше работать, то почему бы и не сделать. Учитывая, что это не лаба уровня "написать крестики-нолики на сях", а что-то более реальное (думаю за курс андроида после года ежедневной джавы мы будем писать что-то интересное).
Короче вся война у меня в голове сейчас сосредоточена на выборе направления.
О других направлениях не думаю, ибо нет времени и сил сейчас учить что-то новое (и так в универе хватает нагрузки) + джаву учим мы больше всего + с джавой я много времени провожу и вообще полюбил ее каким-то образом (а в школке, лет 5 назад, мечтал никогда не писать на ней).
В дополнение:
Потому и не хочу сейчас обосраться с выбором андроида, чтобы не получилось так, что через 2 года я буду искать работу хоть кем-то, а все будут сидеть в вебе и гугл хром будет единственной приложухой на мобилках (а фронтендщики будут писать драйвера на жс)
>на фортране
Я тоже был удивлен. У нас кластер в ВЦ при универе работает на фортране, мы на нем даже кодили интегралы в многопоточном режиме. Видимо это стандарт распределенных вычислений в российских НИИ.
Я как раз поэтому и отказался от андроида, когда был перед подобным выбором. Хуй знает, как реально будет, но что-то мне подсказывает, что почти всё уйдёт в веб, а нативными останутся только уже раскрученные приложения типа мессенджеров и социалочек.
>гугл хром будет единственной приложухой на мобилках
А это, кстати, не исключено - PWA кажется довольно серьезным конкурентом.
Твитор уже на PWA
Единственный нормальный это Plankalkül, остальные для унтеров.
Не то что смузихлёбская джава 4.
А даст ли добро допустим Apple на внедрение таких прелестей?
Будет ли терять рынок свифт разрабов ради этого?
До этого читал, что 9 устарела, а 8 нет и на ней работает большинство. Но 9 таки свежее.
Посоветуйте.
Обе устарели, возьми хотя бы 11.
Версии джавы обратно совместимы, так что, выучив новую версию, ты будешь знать и старую. Если придётся, пересаживаться с новой на старую не так сложно, они не сильно отличаются.
Потому что вакансии
если ты о
>Java. Руководство для начинающих 2019 Шилдт Г.
то там 10 версия.
Ее советуешь для начала?
нетбинс*
Потому что никто никогда не будет работать в нетбинсе или эклипсе, нервы дороже. Если компания не может приобрести разрабам лиценз идеи не верю, что так бывает хотя нет, верю, в одной шарашкиной конторе мне говорили что работают в нетбинсе, лол, ну да это было пять лет назад в мухосрани то можно смело разворачиваться и уходить.
Я хотел, но подумал, что он жрет еще больше.
Результаты опроса декабря 2017.
Эклипс используют по большей части из за поддержки легаси или жадности компании. Или же по инерции, потому что так привыкли, как этот анон>>670736
А нетбинс потому что он известный(?) и функциональный(??). Хотя таких шизиков мало.
>>Мы полагаем, что обе стороны сравнивают свою любимую IDE с Eclipse или просто работают над совсем разными задачами.
Нетбинс хорош для слабых компов, но тогда вам джава не нужна.
Ну чего ты доебался со своим нетбинсом? Пробуй, потом расскажешь. В этом итт треде им почти никто и не пользовался никогда. Даже если он в последних версиях стал лучше, никто об этом не знает. Все или сразу идею ставят или эклипс
Так это не я тебе говорил что нетбинс говно, но если им почти не пользуются возможно это неспроста. Хочешь конкретики - пользуйся сам, потом расскажешь.
Гайд полная чушь. Успешно учил по жавурашу, по лекциям, курсере, читая книги на русском да да, Экель прекрасный, вкатился в хорошие бабки.
Гайд полная чушь. Успешно учил по яварашу, по лекциям, курсере, читая книги на русском да да, Экель прекрасный, вкатился в хорошие бабки. Из плюсов явараша, можно мониторить свою прогрессию, добавляет мотивацию, там много обсуждений, в которых можно подчерпнуть интересные способы решений.
Что у вас за список книг, все читают Шилдта, Экеля, Бхаргава по спрингу там на выбор.
Благодарю.
Не очень, есть риск случайно передать эту DTO другому пользователю, добавляя, например, функционал списка друзей или поиска по пользователям, и совершенно левый чел узнает кучу данных, которые знать не должен.
>Thinkpad T480
Охуеть! Всего-то за 133k в ситилинке... четыре моих зарплаты, Карл!
>сответсвенно 14"
Формат, наверное, удобный для таскания по коворкингам, и начинка серьезная, но зойчем там FullHD на такой размер? Чтобы код сразу становился МИКРОкодом?
Подросту - пойму? Сам пока учусь писать хеллоуворлды на пеке с моником 22'
Смотря какое приложение. Если писать по-серьезному, то лучше вообще дробить по-максимуму, но не до фанатизма. По поводу гайдов хз, у меня просто внутреннее чувство прекрасного развито
>Охуеть! Всего-то за 133k в ситилинке... четыре моих зарплаты, Карл!
Я хожу облизываюсь вокруг макбука за 2.5 зарплаты (200к он стоит)
Я тебя не понял.
>>671280
Но какой в ентом смысл? Если у тебя з/п 150-200 и ты хотет ноутбук (для работы ли???) за 200, как бы понятно. Но хотеть гаджет за 2-3 зарплаты, честно говоря, не понимаю прикола. Это же не автомобиль, не домашний кинотеатр и даже не гироскутер, лол. Это же, блядь, всего лишь дорогущая игрушка, устаревающая за полтора-два года.
Да, топовая начинка, топовый экранчик, но он как кольцо с бриллиантом: борщ не варит, минеты не делает, в поход на нем не уедешь, он даже код сам не пишет. Зойчем?..
надеюсь, вкачусь, этой осенью и буду завидовать коллегам с макбуками
>>лучше вообще дробить по-максимуму
У меня пока по сути только авторизация реализована, да и то не до конца, боюсь как бы количество классов не выросло до неприличия.
Вот думаю дто если разобью, их станет не 2, а штук 5-7. И то только потому что одиночные стринги вроде юзерИд и токена напрямую отправляю. А если их в дто закинуть уже до десятка дойдет. Вон реквест и респонс моделей, которые по сути такие же дто, только для пользователя, уже с десяток
Или для джавы ЭТО НОРМАЛЬНО?
>>671208
Да, столкнулся с таким, стал библиотеку ModelMapper использовать вместо стандартного BeanUtilc.copyProperties чтоб вложенные дто тоже пребразовывать. Пока помогает, как там дальше будет пока хз.
>ноут для работы в Idea, буду накатывать ubuntu какую-нибудь
бери игровой MSI gs73vr как у Габена
Абсолютно нормально, когда у тебя есть DTO для твоего REST-сервиса. Затем ты конвертируешь это DTO в объект класса сервиса, а когда нужно отдать данные объект твоей доменной модели обратно клиенту, то снова его преобразуешь в DTO.
Охуеть, оказывается, нужно теперь смешивать сервисы и сущности в один большой God Object! Чума!
Что следующим шагом будет, добавлять бизнес-логику в контроллеры? Запросы к базе в геттеры?
Я бы понял шизика, если б он сам так писал и показывал своим примером что так можно и нужно. Но сам он конечно же в своих проектах так не пишет, а то китайцы не поймут и выкинут на мороз.
А так ну не чистое ООП в интерпрайзе, дальше то что?
Похуй ведь, зато он написал книгу по своей хуете и заработал много денег, а ты нет.
Чтобы пинус не болел, надо меньше ебаться
Как оно - за таким целый день сидеть - глаза не устают?
В Idea удобно сидеть?
В графической оболочке какой-нибудь СУБД - тоже норм?
Я помню работал в принципе на i5 системнике c ссд было норм для моих задач.
ну квадратный и че, у меня вот дома тоже квадратный уже как 12 лет стоит.. работает, не загибается.. правда сейчас в качестве второго выступает, но до этого был он один
Сейчас еще есть от разных фирм самые новые игровые ноуты, но при этом весь меньше 2 кг, могут поработать без розетки. При этом полноценный проц, дискретка уровня 2060 или выше, м.2 ссд. Тачпады тоже продуманней. Стоят дорого.
Нормально на 14 дюймами работается, но всё-таки это извращение, только если на даче где-нибудь работать или на выезде, неделю максимум. Иначе надо внешний монитор, копейки ведь стоят.
Да хуй знает, оверинжиниринг какой-то. Какую-то сложную логику можно с помощью JsonView нахуевертить, зачем плодить однообразные классы и конвертеры на каждый чих не понимаю.
> Но какой в ентом смысл?
На маке работать приятнее, чем дрочить. У меня старый макбук есть, очевидно, поэтому я знаю, какое это удовольствие.
> устаревающая за полтора-два года
Я до прошлого года сидел на прошке 2012 (!) года с 16 гигами памяти. Техника оче долгоиграющая и неубиваемая нахуй.
Согласен, знатно охуел когда смотрел не б/у, но брал не новый а с рук на лохито крутил вертел во все стороны у продавца, не мог понять где наебка, чисто новый синк даже гарантия до 22 года, 2 цикла аккума за 50к, так что считай мне нихуево повезло макбук тоже на авито брал, кста
Формат удобный, большой экран оказался ненужнон из-за того что можно дробить рабочие столы. Просто настраиваешь что у тебя где, на любителя конечно, на работе подрубаюсь к экрану один хер
Начинка хороша, а fullhd у меня нету, у меня версия чутка старая на TN-матрице 1366х768, можно легко заменить за 6к на fullhd или за 8 на quadhd, благо техподдержка леново предоставляет всю инфу по дисплеям. Плашка оперативки за 2к итого получается комп за вдвое меньшую цену чем на ситилинке.
>учусь писать хеллоуворды на 22'
везет ебать, у меня был квадратный три на четыре моник, а на 22" можно хоть в три вкладки открывать при желании
>>671686
Глаза вытекали немножко после царского ретина дисплея, но привык и внешний монитор спасает, плюс мб возьму fullhd дисплей
Idea, DataGrip все норм
>>671791
двачую, внешний монитор тема
Пользуясь случаем хочу сообщить что продаю в ДС после карантина ясен хуй macbook pro 15" mid 2015 г.р. без дискретки, 16 гб, 256 ssd, Intel Core i7-4980HQ 2.8-4 ГГЦ(мб не такой, нет возможности проверить)
Его я потом наверну, наверное
Ну вот зачем ты напомнил...
В ультимейте встроенная тулза для этого, в коммунити можно в настройках включить плагин.
Вот бы писать на котлине во времена кобола.
Он читает параметры из файла через пробел?( john doe 22 ?)
И как вообще реализовать такой метод:
в файле строки с параметрами обьектов,записать все эти обьекты в arrayList
Ну фронт допустим понятно что делает и в чем копается.
А в чем копается средний джавист? В первой версии легаси кода сбербанка?
Вопрос без шуток. Интересно какие обычно таски
> Он читает параметры из файла через пробел
Нет у него там свой формат, пишется/читаеться еще куча мета информации. Если хочешь именно через readObject делать то нужно переопределять функцию.
Это не плюсом будет, а минусом. Единственный надежный способ это логин и пароль при каждом входе. И то если сильно захотят, то обойдут.
У моего знакомого так вошли в программу на виртуалке, потом запаковали этот образ с запущенной программой и перепродавали его за меньшую цену. Но она у него с интернетом работает и сильно от обновлений зависит + он вычислил владельца этой лицензии по многочисленным запросам с разных айпишников. В итоге они соснули.
Так что можешь не париться и без всяких ключей распространять.
>>Работаем с классом «Студент». Добавьте в главный класс программы два статических метода. Первый метод читает данные о списке студентов из файла и возвращает 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
Ну так а в чем вопрос? 16-значный ключ это тот же логин/пароль. Если нужны офлайновые то там делают какую-то контрольную сумму. Например первые 8 генерируются случайно, к нему присоеденяют "секрет", от полученого считают sha256 - часть полученого хеша используют как последние 8 значений ключа. Для проверки повторяют на совпадение. Естественно "секрет" нужно хранить в приложении (потому что оффлайн) - тоесть для того чтобы ломануть нужно просто желание.
> В первой версии легаси кода сбербанка?
Ну, скажем, не в первой, но попадается и код, написанный лет 6-8 назад людьми, которые давно уволились. Но править его нужно бывает редко, обычно если никто его с тех пор не правил, значит, он работает хорошо и не ломается. Копаться в основном приходится в чём-нибудь свежем, ибо есть более критичные классы, куда при появлении новых требований лезут в первую очередь.
Задачи сильно завязаны на предметную область, и глубоко обычно в неё вникать не требуется, аналитики пишут спеку - ты реализуешь.
Ну и баги фиксить нужно, бывают очень хуёво воспроизводимые.
>readObject
Это ты слишком глубоко копнул, судя по твоему уровню это еще не для тебя. От тебя ожидают банальной работы со строками. Со стримами и подавно работать не умеешь? Поэтому Files.lines() не предлагаю. Для тебя подойдет Files.readAllLines(), далее String.split() на каждой строке - возвращает массив подстрок, и формирование объектов из этих массивов. Это десериализация (считывание из файла). Что касается сериализации (записи в файл), то тут обычный String.format() каждого объекта (или вообще toString() переопределить), и потом Files.write(). Все. Дольше объяснял чем код писать, реально.
https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#readAllLines-java.nio.file.Path-
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-
---
https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-
https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-java.lang.Iterable-java.nio.file.OpenOption...-
Хахах,только алгоритм придумал со сплитом,да,спасибо,так и сделаю
>квадратный
аааа... понел.
Сам страдал на основной работе, когда по наследству достался 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... и он меня теперь успешно сука отвлекает от обучения и бесконечно отодвигает вкатывание(((
Так вкатывальщики фронтендеры за полгода учат все, а потом клепают всякое говно красивое и не очень по кайфу. А я получается два года в универе учусь уже чтобы через 2 года сидеть баги править в языке, который за всю жизнь не выучишь?
Зачем тогда джаву учишь? Учи JS.
Джава - простой язык и учится он быстро. Это не кресты и даже не шарп.
У фронтендеров баги тоже бывают. Хз, правда, сложно ли их править, если проект большой.
И не только баги, в основном новый функционал пилить будешь.
Какой компилятор использовать?
Я принципиальной разницы не вижу, пока начал юзать Apache Ant.
Спасибо, прочёл.
Это не компилятор, это штука для сборки и управления зависимостями.
Ant сейчас никто не использует, он считается legacy. Сейчас самые популярные это Maven и Gradle. Лично мне больше нравится Maven, он как-то попроще в использовании. Gradle сложнее, но при этом и мощнее, потому что там для сборки пишется прям скрипт на Groovy или Kotlin, а значит можно как угодно кастомизировать процесс сборки (но я не сталкивался с ситуациями, когда мне это было необходимо).
Римворлд туда накати
Сейчас есть вариант пойти на обучение в жаба-школу одного банка в кризис особенно актуально иметь потенциальное трудоустройство Собственно, скажите пожалуйста, сильно ли бэк завязан на математике? Просто смотрю, что во многих серьезных конторах, типа яндексов, на алгоритмическую и математическую подготовку обращают внимание, и часто прописывают её в требованиях при найме стажеров и джунов. Да и выпускников мехматов там любят. Я не полный идиот хотелось бы верить в математике, те же алгоритмы и структуры смогу понимать, я думаю. Какие базовые вещи в теории множеств и Булевой алгебре кое-как выучил в универе. Но все-равно математика как-то не доставляет мне удовольствия поэтому в какой-нибудь ML я бы ни ногой Вот сложная тех часть в принципе нравится, байтоёбство всякое тоже одобряю.
Скажите, опытные аноны, стоит ли мне идти в жаба энтерпрайз бэк с такими предпочтениями? Все-таки главный критерий для меня - интерес к работе. Или лучше идти в мобилки экраны верстать у меня вроде всё довольно неплохо с визуальным восприятием?
P.S. Во фронт не хочу точно, там уж как-то вообще далеко от тех части. Плюс в JS-е отладка кода для меня какая-то совсем неприятная.
> сильно ли бэк завязан на математике
Вообще нет, обычно только арифметика, максимум - примитивная статистика.
> во многих серьезных конторах, типа яндексов, на алгоритмическую и математическую подготовку обращают внимание, и часто прописывают её в требованиях при найме стажеров и джунов
Это потому что у них буквально очередь за забором из желающих, и оно могут позволить себе выбирать самых лучших среди прочих равных.
> в какой-нибудь ML я бы ни ногой
Ну и не парься, больше нигде она не понадобится.
Математики там нет, зато много всякого легаси дерьма типа Java 6 и SOAP, поэтому в банк лучше не идти, ну если только прям совсем нет других опций.
спасибо что ориг названия языков дал, я нюфаг, охуевал сидел с кожур и скал
Я уже даже думаю забить на него на время и начать на Java EE писать, чтобы понять что именно я теряю не используя спринг.
А пока это выглядит как посмотрел->скопировал->запомнил, но не понял нахуя.
Спринг начал тыкать сразу же после ООП и коллекций. Из практики только всякие задачки на массивы, матрицы и т.д
>видосики
Сразу нахуй.
Надо начинать с комплексных трудов, обязательно с задачками и самопроверками
А откуда скрин? Есть что посоветовать?
Дней 5 назад мотивация в жопу ударила, так я наоборот ищу где сейчас попрактиковаться хорошенько + почитать что-то мозгодробящее, чтобы из чтива в видосы перемещаться для полного усвоения и чтобы лит-ра была главным источником.
Ну хз. Если бы я в спринг начал вкатываться без видосов - я бы наверное расстроился бы сильно. Но за наводку спасибо. Сейчас буду покупать качать Шилдта и читать.
Наверное, тебе сейчас лучше обмазаться Хортсманном. Библиотека профессионала, 2 том
Как вы на русском вообще можете воспринимать информацию? Ладно бы вы в 1С кодили, но нормальные языки? Простейший пример из русской книги: "для переопределения пишем @Override"; из английской: "for overriding type @Override". Чувствуете разницу? В английском вы всего один термин запоминаете, причем он четко связан с предметом если знаешь перевод, а в русском - два термина, один из которых - непонятное волшебное слово, если встретится в отрыве от контекста хер пойми что обозначает. Часто переведено неправильно/некорректно/неточно, вроде даже выше писали что какую-то современную книжку не рекомендуют на русском читать изза перевода. Перевод усложняет вам жизнь, это блядь как в детстве игра в поломанный телефон - кто-то сказал правильно, дальше пошло кто как понял. Зачем читать не оригинал, какой профит? Оригинальный автор совсем не то хотел сказать что вы там читаете в вольном переводе ребят которые кормятся переводами.
>вроде даже выше писали что какую-то современную книжку не рекомендуют на русском читать изза перевода.
Хортсманн последнее издание - перевели ужасно, предыдущие издания в таком пиздеце замечены небыли.
Английский, например, я учил в играх и сериальчиках. Оче сложно вникать в оригинал - не читаешь, а борешься с английским языком, и да
>для переопределения пишем @Override
никокого диссонанса у мен не вызывает, например.
ходил туда где-то в том году, спросили чем отличается красно-черное дерево от дерева Фенвика ну и потом основные вопросы по джаве на мультитредовость и спрингу, не перезвонили
Мне пока что намного легче воспринимать книги на русском. И думаю так будет всю жизнь. Какие-то статьи в инетах, особенно если они написаны хорошим шрифтом - изи на английском. Видосы с субтитрами - еще проще. А вот сухую техническую лит-ру только на русском и все. Вот такой вот я аутист.
>а в русском - два термина
И? У тебя память закончится, если ты два термина запомнишь? Или у тебя отдельная папка в мозгу под каждый язык?
Значит, по алгоритмам сильно ебут. Понял, спасибо
А мне бабка говорила, что программистам в банке нужное еще второе экономическое высшее.
Такая же хуйня
>>672465
Я не стебусь над вами не подумайте, просто программирование и английский они вместе идут, неразрывно. Выше был пост с линком на бугаенко, даже он на английском пишет. Хотя зачем бы? А гуглить инфу как? Про @Override например опять же. Ну забыл допустим эту аннотацию. Или нет, возьмем @RequestMapping. Забыли. Что делать? Гуглим: spring how to map a request? Ответ сразу в гугле, без переходов. А в русском? Я даже стесняюсь составить запрос, никогда так не делал. "Spring Как спроецировать запрос?" А стаковерфлоу? Кроме самого кода там часто и красивые, шикарнейшие детальные объяснения как это все работает. Ну и т.д.
>А стаковерфлоу?
Что на английском запрос, что на русском, всегда туда хож по ссылкам что мне выдало.
Наоборот, для общения (хотя бы на дваче), приходится знать оба термина. Но ты выборочно выдернул что тебе понравилось, проигнорировав посыл поста в целом. И есть термины, которые вообще не похожи, навскидку это ебаные конечные автоматы, не отражающие суть нихуя, как я долго их боялся в свое время, против лаконичного "state machine" - машина состояний. Я понимаю что это какие-то там пятидесятые года, железный занавес и наши русские математики такой термин ввели, что это не перевод васяна из книжки, но тут опять работает принцип "английский - проще". И у меня таких много примеров было в жизни, я не записываю их и сейчас не вспомню просто.
сука
>>Ответ сразу в гугле, без переходов. А в русском?
пикрелейтед
>>спроецировать
Я вроде русский знаю, но как это относится к программированию слабо представляю, если честно
>>А стаковерфлоу?
Там не надо ничего писать, там уже есть все ответы. Я обычно туда попадаю когда делаю копипаст ошибки из консоли.
>>А гуглить инфу как?
А вообще у тебя просто подход какой то не такой. Зачем мне гуглить про реквест мапинг? Я загуглю как написать рест сервис на спринге, он мне и выдаст все что надо.
Нет, чел, ты просто используешь неправильную структуру данных для организации памяти. Есть термин, есть слово его обзнащающее в разных языках.
А еще пример хочешь? Опять-таки детали не вспомню. На кан (хан) академи в свое время проходил математику, с самых низов, с first grade, чтоб и англ подучить, и мож какие банальные правила школьные вспомнить. И я помню был ошарашен просто, то ли как он делал вычитание в столбик, то ли еще что-то, но я четко в тот момент осознал, что если бы черт возьми мне так в школе объяснили, я бы на золотую медаль может вышел. Там был совершенно уникальный для россии метод, но абсолютно типичный для американцев, им так в школе преподают, но он настолько проще в восприятии показался. И таких моментов было несколько, до 4го класса дальше я бросил в связи с долгосрочной командировкой и больше пока не вернулся, несколько лет прошло.
Вот как шутил Задорнов - "они тупые", что-то в этом есть, они - "другие", но отнюдь не тупые.
Ответ где-то здесь, но я правда не помню деталей. Плюс таких "откровений" было несколько. Кстати, они надобавляли уроков за несколько лет, у меня было 99% (один из видосов не засчитывался).
>Как это связано с языком?
С джавой или в общем? Смысл моих высеров в том, что англик помогает (ну уж точно не мешает) понять суть вещей - ты читаешь шилдта, кнута в оригинале, проникаешься их мыслями через специфичные обороты и местами юмор, начинаешь думать как они хотели заставить тебя чтобы ты думал. Это непередаваемый экспириенс. Кто на англ. фильмы/сериалы когда-нибудь пересаживался в оригинале после русских дубляжей/войсоверов, тот поймет о чем речь - там даже игра актеров голосом есть, ты наслаждаешься просто тем как они говорят, акцентом там, интонациями, а не что они говорят и что в этот момент показывают на экране.
Все, я кончил, удаляюсь.
>начинаешь думать как они хотели заставить тебя чтобы ты думал
Вот с этим согласен. Но это по большей части к книгам относится, а не к ответам на СО.
Да не, такая же хуита что и у нас
https://www.youtube.com/watch?v=Y6M89-6106I
Ты просто на ресурс нормальный нарвался, где умеют хорошо материал доносить, а не как обычно в школе.
>>если бы черт возьми мне так в школе объяснили, я бы на золотую медаль может вышел.
В 16 лет тебе нахуй не нужны были эти ваши математики, там гормоны, межличностные отношения и ранг в стае куда важнее. Даже если б и хотел, тебе мешали, а учитель по третьему разу объясняет одно и то же потому что Ерохин еще не понял.
Я транслитные ответы со стаковерфоу читал и думал, что у меня шиза началась.
Меня эта хуйня в выдаче насколько заебала, что я установил плагин для скрытия ссылок на qaru и ещё нескольких подобных.
Причём даже при поиске на английском иногда вылезала.
>>что англик помогает (ну уж точно не мешает) понять суть вещей
Для этого нужно язык знать хорошо и понимать что он имел ввиду. А то полфразы вроде понял, остальное не особо. Смысл потерялся. Не лезть же теперь в словарь в 2к20 то за переводом каждого слова. В гайдах такой проблемы нет там весь текст - напишите это, запустите то, помолитесь Говинде, запускайте.
Я сделаю, вы только пишите.
Нахуй плодить сущности? Ты уверен что анон лучше напишет? Если уж хочется русского - то есть хабр и жавараш.
Вот этот. Он еще и mkyong переводит. А то что он выше выдается тоже бесит.
> хабр и жавараш.
Посты для выебонов и хеллоуворлды.
Хотя, может пусть лучше все будет на английском.
Можно наконец выпилить легаси шапку шапка не нужна и впилить туда ссылку на вики на гитхабе, где аноны и будут этим заниматься.
такой треш в выдаче и он еще агитирует за поиск на русском, ебать вы необучаемые, пиздец просто.
>>672543
>>672565
Перебирал ролики рандомно и что-то на задворках памяти начало всплывать. Возможно, это было не вычитание в столбик, а деление в столбик. Посмотрите хотя бы как они оформляют по сравнению с нами. Первый вариант знаком всем, а второй? Но! Оформление это не то о чем я говорил, там было именно что-то глубокое, какое-то поражающее своей простотой объяснение, которое мне по крайней мере никогда не объясняли в школе или после.
Да ну хуй знает, вроде все то же самое. Наша форма записи даж более логична делимое слева, делитель справа, результат снизу, а у них все перевернуто.
А вот в том то и дело что у них тоже есть логическое объяснение такой записи, они говорят: divide 3 into 1735... Я даже не знаю как это адекватно перевести на русский, чтото типа такого: "сколько раз 3 входит в 1735". Ну то есть для нас это непривычно, задом наперед всё, но там было объяснение, и возможно это меня и поразило, хотя это не точно.
Ты думаешь в школе кому то объясняли как определить что число делится на 3/6/9? сложить все цифры в числе - если полученное число делиться на 3/6/9 то и исходное число делится соответственно на 3/6/9 Максимум на 5 и 10. Или как без мозгоебства умножать на 99, 49 и тому подобные? Программу по минимуму вкинули - ебись как хочешь.
Возможно в том что "разделить на" для ума школьника имеет чуть меньше смысла чем "сколько раз входит в". Не знаю. Не слушайте меня, возможно я чушь несу.
Вот кстати да, это же теория чисел? Познакомился с ней после универа уже даже, а так бы пригодилась для олимпиадок.
Это тестики чтоли? Ну гиперскил от жидбрейнса можешь порешать. Можно прям в идее. Там по виду так же . Страница с теорией, потом задачи и вопросы Решишь несколько задачек получишь ключ на пару месяцев
>> наконец выпилить легаси шапку
Об этом пока рано думать, треду до лимита еще далеко. А энтерпрайз зря выпилили. Вот тебе еще один.
Там вроде разные же техники есть, как для деления в столбик, так и для решения квадратных уравнений, например. Через дискриминант это вроде у нас проходят, но я когда школьником был видел, что сама учительница их как-то по другому решала. В вузике тоже препод хуярил их по другому, там почти как в уме.
Для быстрого счёта есть специальные техники.
Тут не в языке дело, а в желании учителя донести до тебя свой предмет. Вот этот >>672686 всё правильно сказал.
>Программу по минимуму вкинули - ебись как хочешь.
У меня это ещё с таблицы умножения пошло в школе, например. Я слишком ленивый был, столько хуйни запоминать, целая страница несвязанных символом. В рот я ебал, лето, я бегать по улицам хочу, а не это говно зубрить.
Поэтому я каждый раз в уме считал, запоминая ключевые места. Как индексы из SQL ёпта. Ну типо 6х6 легко запомнить, а значит 6х7 будет 36+6.
По этому же принципу мог и дальше считать, там где таблица умножения уже кончалась (11х11, 110+11) мозг только начинается.
Лендинги на джаве
Есть задачки по разным темам, есть проекты. Например берешь проект написать кофе машину и тебе подкидывают задачки по темам, которые хорошо бы знать для решения проекта, хотя их можно скипнуть и сразу проектную задачу сделать. Разница в том что по теме это немного текста про стринги например, потом напишите субстринг для стринги чтоб получилось "123". А проект это уровень лаба2, в которой понадобятся субстринги. Хотя конечно можно и наговнокодитью, лишь бы ответ сошелся. Можно вроде как на ревью этот проект заслать, но не уверен. Вобщем напоминает джава раш здорового человека.
Но мне тесты не нравятся, я их перерос. Да и вообще азам я учился на курсере duke university
О, кстати, опять про Хана: он упоминал (и показывал вид такой таблицы) что они в школе таблицу учат до 12x12 включительно; возможно связано с тем что у них "дюжины", а не метрическая система, хоть какой-то плюс, лол.
Я вообще не вижу смысла её учить. Всё что часто используется запомнится само собой, а остальное можно посчитать.
сосат
КИДАТЬ ДРУЗЬЯМ-КОДЕРАМ ССЫЛКУ НА ГИТХАБ С СООБЩЕНИЕМ "ПОСТАВЬ ЛАЙК ПЛЕЗ"
@
ПОСТИТЬ ЭТУ ЖЕ ССЫЛКУ В ПАБЛИКАХ С ШУТКАМИ ПРО ПРОПУЩЕННУЮ ;
Тогда я буду рассматривать твоё мнение как ложь, ввиду отсутствия внятных аргументов.
Посоветуйте онлайн-школу. Какую выбрать? GeekBrains, Яндекс.Практикум, курсы Бауманки?
У кого есть опыт обучения в них?
Реально, как они говорят, получить профессиональную переподготовку и устроиться после их курсов джуном?
Пошел нахуй, программирование заполнено. Иди занимайся своей профессией.
Двачую блядь. Еще один джун войдет в айти, и синьоры начнут постепенно отваливаться.
Ну-ну.
Ну охуеть теперь, то-то джунов в контору моего товарища набирают пачками в надежде хоть кого-то из них научить нормально кодить, а они потом забивают на всё хуй и либо пинают хуи, либо укатываются во фронтенд.
Раскрошу бичик, добалю туда луково-морковную зажарку, сверху яичко разобью, обсыпаю всё смесью перцев и залью кипяточком.
Ты тредом промахнулся, тебе в 1С.
>Раскрошу бинчик, добалю туда луково-морковную аннотацию, сверху мавен разобью, обсыпаю всё смесью фреймворков и залью котлином.
>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
public static void main(String[] args) {}
> Laravel
Загуглил. Вместо аннотаций тут ебучее наследование и не менее ебучие коллбеки. Что там про "complicated"?
class UserController extends Controller { ... }
class User extends Model { .. }
Route::get('/', function()
{
return 'Hello World';
});
Нужен кодер для написания плагинов на джаве.
Есть одна tdlib от Пашки Дурова, написанная на плюсах. С JNI можно вызывать нужные методы, но бля, как? Идея не поймет java.library.path, что в pom.xml - хуй знает. Гугол не помог, надеюсь на вас
Короче, собрал tdlib внутри Java проекта, теперь идея видит нужные пакеты с классами. Только вопрос - насколько это адекватно вообще? Типа мне всегда с собой придется таскать этот tdlib что ле?
Что именно тебе из tdlib надо? Помимо протокола там локальное шифрование, хранение, может чего то еще. Я не стал идти этим путем, а просто реализовал TL Language самостоятельно и все. Велосипед, ага, зато могу дергать их процедуры без всяких либ. На сайте у них там все расписано, и примеров в нете куча.
Если речь не про (де)сериализацию произвольных объектов без схемы, то не приходится, всевозможные JAXB-ы и Castor-ы в проекте давно запилили до меня. Юзаются для интеграции через ESB, для хранения шаблонов документов и прочей хуйни, которую сложно описывать кодом.
Понял, спасибо.
проработав в фрилансе 5 лет, я думал я видел все - но однажды увидел проект где xml парсился руками через сорт оф конечный автомат, лул
Я про это нихуя не знаю, можешь описать подробно как это делать? В интернах этих ваших нашел только два репозитория, активность на обоих 6+ лет назад
Из того, что надо - банально получение чатов, отправка сообщений/файлов
через пару месяцев планирую перекатываться в масквабад
на мидол позицию. В своем милионнике год проработал джуном с джавой, но без спринга контора известная так шо на собес думаю попаду.
собсна вопрос большой ли акцент на собесе уделяется фреймворкам или больше гоняют по азам и джаве?
Подтянуть вообще не проблема когда впервые устраивался дрочил все это
> год опыта, да еще и без спринга
> что на собесах спрашивают не знает
> считает себя мидлом
Откуда же вы такие самоуверенные и ахуевшие без негатива. Знанием устройства ебучей хэшмапы ты на мидловую позицию не прыгнешь. А без знания DI и на джуна завернут.
да не, все по чести сорт оф бигдата
git, maven, docker
kafka,redis
java8/11, concurrencyжестко с этим ебался
sql базы и mpp тож юзал
паттерны использую
на джуна я уже год назад со спрингом прошел в другое место
Тогда удачи, если и правда умеешь в докеры, брокеры, хуекеры и многопоточность то все ок.
>git, maven, docker
>java8/11, concurrency
>sql базы
>паттерны использую
Ещё ворд, эксель добавь. Напиши, что знаешь хоткеи в идее. Можешь открыть командную строку и знаком с линуксом.
С руками оторвут. Ведь в мАААскве такие же требования как и в твоём селе, просто платят больше.
Никто тебя не будет спрашивать про спринги, noSQL, кишочки хибернейта, асимптотическую сложность обхода красно-чёрного дерева (ты же сможешь без гугла назвать пример, где вообще в джаве оно используется?) в ширину...
Шутки шутками, а джирой то далеко не все пользоваться умеют. Проебанные описания, оценки, релизы, спринты, закрытые тикеты без единого комента - мммм, классика!
Подробно разумеется не могу, треда не хватит. Основная ссылка вот:
https://core.telegram.org/mtproto
Читаешь, вникаешь про "матрешку дурова": (транспорт(шифрование(сообщение))).
Сообщение это RPC-пакеты TL Language.
Далее пробуешь создавать авторизационный ключ, там детально есть какие байты как получаются.
Далее проходишь авторизацию:
https://core.telegram.org/api/auth
Ну и собственно это всё - можно слать сообщения API, например messages.getChats:
https://core.telegram.org/method/messages.getChats
Да я хуй знает, зачем они там в своём оракле список на дерево променяли в хешмапе. Наколятся своей анашой и ябут друг друга в жопы.
Вопрос про хешмапу - это вопрос на ждуна. Притом классический, как про самолёты зеро, ага. У нас тут кандидат в мидлы. Если ты не знаешь особенности базовых коллекций - то собес хуй пройдёшь. Даже на ждуна. Если тебе интересно - гугл всегда под рукой, он тебе быстро подскажет как связаны эти термины.
и 99% сениоров 300к наносек этого не знают и это абсолютно нормально, а вот долбаебы что это спрашивают на собесах пусть горят в аду
>ты же сможешь без гугла назвать пример, где вообще в джаве оно используется
TreeMap
>асимптотическую сложность обхода красно-чёрного дерева
Линейная
Хз даже, что они там на синьёров спрашивают, меня подобное на ждуна спрашивали, а я вообще за еду работать шёл.
И да, 99% уже работающих это или всякие особенности @Transactional не знает и как-то получает зарплату.
>>675139
>Линейная
Ну вот, ты пизданул хуйню, уёбок по ту сторону стола начнёт улыбаться и спрашивать тебя, каким образом происходит обход элементов в дереве, возможно попросит на листочке написать имплементацию BFS, попутно спросит в чём отличие от DFS. Спрашивать особенности самого дерева, наверное, не будут, хотя если к этому моменту ты не начал потеть и краснеть, могут и это спросить. В итоге то, конечно, тебе подскажут, как связаны бинарные деревья поиска и логарифмы.
Ты же знаешь, что такое логарифм, правда?)
Это что, на каждом собесе спрашивают как что там сортируется, если по итогу все чем я буду заниматься - вебовые запросы с БД связывать?
Так я лучше тогда в жс уйду, кнопки красить за ту же зарплату и divы двигать
Ты в какой-то пещере сидел последние лет 5-10? Это уже давно так. И я не думаю, что со сменой языка что-то изменится. Структуры данных и алгоритмы +- одинаковые везде.
>Обход дерева
>Логарифм
Малыш, ты сперва хоть узнай что такое обход и чем отличается от поиска, прежде чем выёбываться.
> BFS, DFS
На первом курсе проходят.
Что значит асимтотическая
>что такое обход и чем отличается от поиска
Мне это нахуй не надо, раз это на собеседованиях не спрашивали. BFS, DFS, всё нахуй, я ж не в яндекс иду, а в маленькую контору за еду сохранять сущности в репозитории. Но всё равно запомню, что это разное.
>На первом курсе проходят
И через неделю после сессии забывают.
>Мне это нахуй не надо
Захотел анон имбирь.
Пошёл искать
Так и не зашёл в магазин
Обходил
>И через неделю после сессии забывают
Ну как крутить AVL RB деревья забыть сам бог велел. Но что делать с BFS, DFS понятно из названия.
Ну, если просто обойти итеративно все элементы или сделать это с пониманием того, как они отсортированы, то имбирь найдётся в любом случае. Разница в скорости.
>понятно из названия
Да много что из названия понятно, бинарный поиск, пузырьковая сортировка, инверсия зависимостей, ещё много терминов, которые в своём названии уже содержат подсказку.
Тем не менее, раз вопросы про связный список всё ещё задают, значит кто-то на них не отвечает?
Книга про алгоритмы на джаве. У меня на компе скачана, но я сейчас за ноутом.
Алгоритмы на Java и Алгоритмы. Справочник с примерами на C, C++, Java и Python. По моему брал в Телеге на канале Библиотека программиста. Там по поиску найдешь.
сорян, анону выше писалось
сделал гуй для сревера: поля для порта и других настроек + кнопки старт/стоп
Сейчас понял, что сервер фреймворка, который я решил использовать, хуй заставишь стартовать не сразу, а в рантайме по нажатию кнопки.
Пока вижу выход: делать два jar файла - для гуя и для собственно сервера, гуй будет запускать jar-ку сервера.
Как это провернуть мавеном?
Нужно сделать два независимых модуля, или один в другом? сори если ебланский впорос
cerf!
В C++, например, я смотрел в заголовочный файл и видел полную информацию об интерфейсе класса, могу я как-то тоже самое посмотреть в джаве?
> перейти к определению этого класса и там смотреть метадату
А что тебе не нравится в этом способе? Делается в один клик, думать не надо.
Вот, допустим, в Android Studio я решил создать наследника от библиотечного класса android.view.SurfaceView, попытался скомпилить, пишет, что не определен такой-то абстрактный метод. Определил его, попытался скомпилить, пишет теперь про другой абстрактный метод. Пошел посмотреть на SurfaceView, чтобы скопировать оттуда абстрактные методы и определить все сразу. Посмотрел, таких методов там нет, но этот класс наследуется от какого-то com.android.layoutlib.bridge.MockView, возможно, они там есть. Попробовал перейти, но среда не знает ни про какой MockView и перейти не может, и вот теперь хз что делать
Вообще-то IDE сразу должна подсвечивать это.
Ну, в идее есть Ctrl-I, которая сама генерит стабы для абстрактных методов. В студии должно быть аналогично.
https://www.jetbrains.com/help/idea/implementing-methods-of-an-interface.html#
>>BFS, DFS понятно из названия.
>>BFS
>>На первом курсе проходят.
Поиск в ширину (англ. breadth-first search, BFS)
Прям так и проходят? Алгоритм бредх фист сирч?
>>DFS
Distributed File System — компонент Microsoft Windows, использующийся для упрощения доступа и управления файлами, физически распределёнными по сети.
bruh
>задрачивать все методы класса Object
На каждом третьем спрашивали.
>разницу между интерфейсами и абстрактными классами
Один раз был такой вопрос.
Вся эта хуйня просто наизусть учится за полчаса, как и контракты метода эквалс/хешкод, модификаторы доступа полей, SOLID, O-большое коллекций, иерархия исключений и прочие шаблоны.
ну вот кст да. смотрел какой-то сайт из фака по вопросам для собеса,так там про переопределения equals and hashcode сразу несколько вопросов как это ручками писать. только зачем это все, если в идее двумя кликами их можно сгенерировать?
Если даун 2 страницы текста запомнить не может, чтоб собес пройти, то такому никто даже круд не доверит.
Говно, вот единственный тру метод
https://www.yegor256.com/2017/07/11/how-to-redesign-equals.html
Unsafe не хватает.
Потому что есть котлин.
Потому что есть JS.
Да, это конечно надо, но я недавно зашел в тред к айос господам и охуел от всего там происходящего. Всякое желание пропадает это все делать, боюсь, ебнусь это все один делать, а если и сделаю, то к тому времени это уже нахуй никому не надо будет. Единственная надежда сейчас на то, чтобы выстрелить на андроиде и нанять программиста под ios.
Или сделать все на RN
> retrofix
retrofiT.
Android Development Thread /android/
https://2ch.hk/pr/res/1534623.html (М)
Retrofit Rxjava Android Example
https://www.zoftino.com/retrofit-rxjava-android-example
Используем RxJava и Retrofit на Android, учитывая поворот экрана
https://habr.com/ru/post/305478/
Integrating Retrofit with RxJava
https://www.baeldung.com/retrofit-rxjava
Ебать, ну он и мудак.
По сути он предлагает:
1) Сделать все объекты сериализуемыми;
2) Сравнивать их по сериализованному значению.
Из-за п.2 какая-нибудь сортировка вообще охуеет.
Пиздец, как этого долбоеба вообще можно всерьез воспринимать после этого?
>Из-за п.2 какая-нибудь сортировка вообще охуеет.
Можно контрпример, у меня чёт не очень.
мимо
Не, я про пиздануться
Недавно тут? Его же регулярно вкидывают в тред. Это такой вялый троллинг.
Перед ним какой бекграунд в джаве надо иметь? Хочу задрочить хорошо джаву перед тем как в спринг вкатываться.
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.
А почему джаву так нельзя?
>Скормил две задачи, как мне объединить их результаты?
Зависит от "объединить результаты" конечно, но задача сильно смахивает на задачу для parallel streams - в коллекторе объединяешь что там нужно.
> че?
Кастрированное подмножество котлина можно транспайлить в JS, а его уже запускать в браузере.
> А почему джаву так нельзя?
Можно, есть несколько убогих компиляторов.
> есть несколько убогих компиляторов
Тащемта есть GraalVM, его правда заебёшься конфигурить чтобы вся reflection-based хрень таки скомпилировалась.
Хз, не пробовал.
Тогда тебе нужна не джава
сеньор
Я спринг смотрел последний раз много лет назад, ещё когда бута не было. Работал с легковесными di-либами. Сейчас голова кругом от бута. Вроде многое искаропки, но пока вникнешь, откуда что берётся, конфиг аннотации, тесты - голова кругом.
Посмните раз и на всегда,твердо и четко что за магия происходит в этой хуйне
>public static void main (String[] args)
гугли сколько каких классов может быть в файле. гугли про локальные классы
Можешь не значит должен. Ты же можешь какать в автобусе не снимая штаны и свитер. И публичный класс все равно только один на файл, а у этих без модификатора доступа вообще какая видимость трудно сказать, с одной стороны package default, а с другой это так давно делалось что все уже забыли как и для чего. В общем это старинная фича и так никто сейчас не делает, и ты не должен, если нужен класс в классе, делаешь его private static внутри родительского класса.
Про main: этот метод вызывается джавой когда ты ей говоришь "запусти такой то скомпилированный класс"; в args она передает аргументы командной строки.
ноэскуэл, хадуп, спарк, хайв, кафка и прочая хуйня
нужны синьеры-помидоры или крепкие мидлы
с опытом Java от 3 лет или на Scala от 2 лет
с зарплатой не обижают (даже из-за рубежа переманивают)
> с опытом Java от 3 лет или на Scala от 2 лет
А писать на чём надо будет в итоге?
> с зарплатой не обижают
Можно конкретнее? Если говорить про сениор уровень.
Спасибо, с меня нихуя.
у нас некоторые и не скрывают что заходят на двач
или хотя бы друг рассказывал что это такое
>>678241
у нас с 1 марта все на удаленке. по крайней мере пока. но и до карантина не было проблем поработать из дома
если покажешь свою саморганизованность и ответственность, нет проблем договориться так работать напостоянке после карантина
кстати, забыл сказать, что годовая премия 15% годового заработка
при зарплатке 250к - бонусом получишь 450к (но может и больше)
> у нас некоторые и не скрывают что заходят на двач
Ага, а потом будет тред в программаче СМОТРИТЕ КАКОЙ БИГ ДАТА ВКАТЫВАЛЬЩИК РЕЗЮМЕ ПРИСЛАЛ))
Взгляни на Completable Reactor
Да это зелень какая-то, реальному работодателю не затруднило бы дать ссылку на hh.
Бамп вопросу
Что я должен весь этот год делать для того, чтобы в следующем с гордостью заявить что у меня год опыта в погромировании
Причём по трудовой и фул тайм.
Ну и рассказать, чем вообще занимался этот год. Над какими проектами работу работал, чем будешь полезен следующему белому господину
Нехочу бабу, слишком много суеты с ней. Хочу ламповый майский вечер, ютьюб и пивко
Кор офк, чтобы понимать примеры
Работал и с EE, и со спрингом. Ничего противного в ЕЕ нет совершенно, одна и та же хуйня.
Как ты думаешь, его ебет?
В энтерпрайзе засилье жабы и спринга, шарпик и другие языки тут вообще не конкуренты. Может, в "бекенде, который не энтерпрайз" получше, но не в сфере спринга.
jhipster не подойдет?
> А ведь рано или поздно появится убийца спринга. Это уже будет новое поколение.
Это ж джава. Пройдет лет 10 между его появлением и моментом, когда его юзать начнут. Спрингу тоже лет овер дохуя, но маст хевом он не так давно стал.
String addPrefix(String s) {
return "main_" + s;
}
Строка "main_" будет создаваться заново при каждом вызове метода?
Нет, это будет один и тот же объект, он не создаётся каждый раз, а хранится в пулле строк и берётся оттуда.
>>676454 - кун
Ты про андроид или бек? Если андроид, то спринг для него не годится, это серверный фреймворк, а не клиентский. Если бек, и у тебя там сырые сокеты, спринг не поможет, он на HTTP работает (разве что вебсокеты, но они тоже HTTP юзают).
>спринг не поможет, он на HTTP работает
Нашему убийце Дурова спринг может и не нужен, но не надо думать, что это исключительно такой веб-фреймворк
А какой это фреймворк?
Cloud? Веб. Data? Но куда-то надо ее показывать. Actuator? Эндпоинты веб. Security? OAuth. Аспекты? Не знаю, не использовал. Да, наверное там еще много интересных неизвестных штук, я непрочь ознакомиться, но лично у меня все проекты так или иначе связаны были с веб или мессенджингом (по веб).
А кто так думает?
Речь про то, что именно сырых сокетов там нет, а не про то, что в спринге якобы только HTTP.
Да хоть AMQP, хоть SMTP. Сомневаюсь, что там у анона что-то сложнее сокетов, раз у него такой вопрос. Если бы он юзал HTTP, то вряд ли стал бы спрашивать про спринг.
>Речь не про то, что в спринге якобы только HTTP.
А раз так, спринг может пригодится на сервере, даже если сообщения этот сервер принимает не по http.
-_-
> Котлин более гибкий чем матёрая портовая шлюха. Вот ЭТО компилится и работает. Похоже, вернуться на джаву уже не выйдет.
1С какой-то
Неудобно раскладку всё время переключать.
>>ИсключениеНезаконногоАргумента
>>сломать()
Гугл транслейтом переменные называл? Интересно как бы ты перевел методы спринга. изначальныйРегистрационныйМетодБобовойФабрикиПослеВычислитель
О, замена 1с растёт!
не
Это расово-верный Русский язык программирования, а точнее демонстрация возможностей котлиновского синтаксического сахара. С таким "языком" можно ехать на выставку в Сколково, чтобы распилить пару грантов.
>>679997
Проскальзывала шальная идея запилить плагин на идею, который прогоняет весь проект через гуглтранслейт, заменяет все импорты из внешних либ на алиасы, а их методы обёртывает в extension. А конструкции языка кроме можно сделать либой, кроме fun, val/var, return и т.д.
ебать.ты(кожевенник)
Не спрашивали.
Можно поверхностно пройтись за вечерок, чтобы иметь представление и мочь написать хеллоуворлд. Больше не нужно.
JSP был заменён шаблонизаторами типа thymeleaf и freemarker, а они в свою очередь заменены SPA в виде всякие реактов и вуе.
Большое спасибо за столь развёрнутый ответ!
Ну и проблемы у тебя.
Можно добавить префикс, к примеру org._9999. Да, это формально будет другой домен, но это не играет особой роли, такое соглашение придумали лишь для снижения вероятности совпадения имён пакетов. Разве что другой джавист зарегает этот домен, но это ещё менее вероятно, чем то, что тебе придётся отказаться от этого домена и переименовать пакеты.
Ну, стараюсь соблюдать соглашения. Не зря же их придумали.
Как и цифры.
А часто ты видел сайты с подчеркиваниями, которые относились бы к какому-то Java-софту?
Я не буду разглашать, сука!
>>Что за ноунейм?
https://www.youtube.com/watch?v=AshxbePAbCM
Справа от Жеки и Баруха. Один из персонажей джава комьюнити. Пока Жека потрошит спринг, Бугаенко рассказывает что ваш ООП неправильный слыш купи книгу
Баруха кстати терпеть не могу тоже. Клоун какой-то.
Борисову за потрошителя спасибо. Ему бы ненужной артистичности убавить тоже, и было бы идеально
govno.setHuinya(String.valueOf(jopa.getZalupa()));
или
hueta = String.valueOf(jopa.getZalupa());
govno.setHuinya(hueta);
?
Проще говоря, стоит ли плодить лишние сущности и улучшит ли это читабельность кода?
Линию видишь справа беленькую? Вот код должен до нее быть. Если govno.setHuinya(String.valueOf(jopa.getZalupa())); вмещается до нее, то и отлично. Ну и плодить переменную только для того, чтобы один раз ее использовать на следующей строчке, - это моветон.
Это так не работает. Можно написать в один оператор хоть в 500 символов, но не в одну строчку, а с переносами, чтобы не заходить за линию. Всевозможные лямбды, стрим апи и билдеры так и пишутся.
мимо
Так я же и не спорю, что нельзя переносить. Допустим, если у него класс govno имеет дохуя сеттеров, то можно написать весьма эстетично:
govno.setHuinya(hueta)
.setParasha(manda);
Главное правило - чтоб это читать было удобно.
Сборщик мусора потом лишнее всё равно уберёт, не парься.
А вот глаза ломать над хуетой, написанной на 50 строк, не нужно.
Оки.
Шилдт
От нехуй делать по паре страниц в день тирибонькаю. Может что то да получится, потом, когда нибудь нет
Зубочистку?
Дебажить удобнее будет. Пароли надо прятать как в первом варианте.
>Следовательно, нужно стремиться к тому, чтобы классы были как можно более компактными, но в разумных пределах! Ведь классы, реализующие лишние функциональные возможности, делают код сложным для понимания и плохо структурированным, но классы со слишком ограниченными функциональными возможностями приводят к тому, что программа становится неоправданно фрагментированной. Как же найти золотую середину? В поисках ее наука программирования превращается в искусство программирования. Многие программисты считают, что соответствующие навыки приходят с опытом.
Только и всего? А разговоров то было
Зачем обращать внимание на такие мелочи.
Если после фора нужно будет потом добавить код, придётся править только одну строчку, а не две.
А ещё "выполнение процедуры" завершает достижение её конца, как в случае с break.
Что за разговоры? Мне регулярно попадаются классы-сервисы на 2-3К строчек и методами по 200. Рефакторить всем лень, оставлять как есть удобнее, и получается, что лучше компромисса, чем лапша из пррцедурного программирования, ещё не придумали.
Если бы в методе еще что-то было, выполнение бы продолжилось после цикла, а return выходит сразу, вот и вся магия.
Если используется больше 2х раз, то переменная.
В этом никакого смысла нет. И переменную до цикла объявлять в этом случае смысла нет. И вообще это уже лет 5 можно сделать через .forEach(System.out::println).
Возможно, это просто начало книги и он основы так объясняет, не знаю, не читал.
>>return
Это просто выход из метода
>>заместо break
Это выход из одного цикла, но не из метода.
Такой код идея подчеркнет, а компилятор просто выкинет.
Стабильность это хорошо.
LEGO дарят списанные?
В гугле.
sdkman
Если энтерпрайз и хайлоад - то джава. Если десктоп и игори - решетка. Может шарпеи и добрались до бэкэнда, но вытеснить джаву в ближайшие лет 10-20 не выйдет. Как они там в бэке по сравнению с нодой/питоном хз.
Есть же соответствующий тред: >>1666711 (OP)
> опыт
Почти год.
> нравится ли вам программировать до сих пор
Вполне. В свободное время пишу не только на джаве.
Понял, принял
можешь фабрику построить и использовать ее методы, вместо конструкторов
Загугли ломбок.
аче?)
Да, у войда есть враппер класс, и что?
Алло нахуй. Кто не обьяснит мне причину почему:
Integer i = -128;
Integer j = i;
i--;
i++;
System.out.println((i==j)); //print true
а
Integer i = -129;
Integer j = i;
i--;
i++;
System.out.println((i==j)); //print false
тот гей.
Уже миллион раз поясняли, даже в этом треде было. Integer содержит кеш объектов, по умолчанию -128..127, но меняется параметром в командной строке. Эту инфу несложно найти самому, заглянув в соответствующий класс.
Потому что это размеры твоей мамки. Отвечаю.
Ты хабру или еще какое говно почитал и умничать пришел?
дефолтное значение для пула интежеров 128, его можно изменить, но нахуя? А если и станешь, то с лонгами все равно обосрешься - там константы
Объхты сравнивают через equals, тебе же идея это подчеркивает и заменить предлагает, че ты такой тупой?
Очевидно, что чем числа ближе к нулю, тем чаще используются. Поэтому оптимально создать заранее примерно в таком диапазоне, чем потом не было ебических тормозов при создании жохуищи копий чисел типа 100. Но и не больше, чтобы жаба не жрала ещё больше оперативки, они и так жрёт дохуя.
Тебя это ебать не должно
Полтреда таких.
Иди нахуй!
https://github.com/FasterXML/jackson-module-jsonSchema
Да.
Это Core.
А макось почему забыл, ламер?
В каждой второй строчке map/reduce/flatmap, в каждой третьей функциональные интерфейсы, на собесах спрашивают про монады, лямбды уже даже из СУБД на меня смотрят и ехидно подмигивают стрелочками.
Но раз ты сказал, что не надо, то я с тобой спорить не буду.
Винда либо мак
> map/reduce/flatmap
Это ещё не ФП.
> функциональные интерфейсы
Тебя слово "функциональные" сбило с толку?
> на собесах спрашивают про монады
Интересно. А единороги на собесах тоже бывают?
Он конечно часто специально набрасывает, но все таки у него аргументированная позиция. Не обязательно же с ним соглашаться на 100%.
Например
https://www.youtube.com/watch?v=99mU1gSLbkU
название специально провакационное, но по сути то все верно. Автоматизируйте все - тестирование, релизы, деплоймент и не идите на компромисы - упал тест - нахуй релиз, починишь придешь.
Опять этот егор погром.
>Это ещё не ФП.
Ты слово "основы" пропустил?
>функциональные интерфейсы
Stream API, надо было так написать. А уж ты сам разбирайся, где там фп, где конкуренси, где ещё что-то.
В моём мозгу ассоциации проходили примерно так "Опшионал ->Где я это видел?->Да это ж мейби из хаскеля!->А, да это ж фп"
>А единороги на собесах тоже бывают?
Не видел. Вопрос про монады (в математическом и более прикладном смысле) был у меня на собесе в одном банке.
> Вопрос к уже работающим джавистам, у вас разработка в офисе происходит под виндой или линуксом?
Линукс, убунту
Нет!
Сохраним его как стринг, а потом руками будем убирать [] и сплитить по запятым!
Ахуеть, я думал такое только в анекдотах бывает, пока на работу не устроился.
Нормализация порой обходится слишком дорого, и приходится идти на уступки в виде денормализации.
У меня было такое, что при сохранении 100500 записей (масштаб реально такой был) транзакция тупо не укладывалась во время и откатывалась. Пришлось писать через запятую.
Ну допустим, все равно генерация схемы по джава классам. В джаве же нельзя написать такой класс, чтобы одно из его полей преобразовалось как в пункте Tuple validation отсюда
https://json-schema.org/understanding-json-schema/reference/array.html?
У нас OpenAPI 2.0 там такие выкрутасы невозможны. Максимум
| schema:
| type: array
| items:
| type: object
но на практике мы таким не пользуемся, просто используем объект с именованными полями.
Я хуёво выразился, наверное. Из бд приходит массив чисел. Он сохраняется как строка в сущности. И потом обрабатывается обратно в массив.
String result = Select Array From table
грубо говоря. Я хз как там типы приводятся, неважно.
А потом result обрабатывается, из него удаляется в начале и конце [], а потом сплитится через запятые и вот на выходе массив чисел, который куда-то там идёт дальше. Это как отдельный метод идёт, сделан на страницу кстати.
Преобразование строки "[1,2,3]" в 1,2,3.
Пиздец!
Я сначала понять не мог же, почему там в одной строке идёт стринг, в другой уже числа, чзх вообще происходит, а потом когда осознал то заорал в голосину.
Привет, я автор этого метода. А как по-другому надо было сделать, селект в цикле?
солнышка, не быкуй, луччччше сурс бы дал
Spring in action
Потом посмотри Spring-потрошитель от Женьки Борисова. Если всё понятно - ты чего-то знаешь про Spring и на интерна, а может и джуна, пройдешь
https://pastebin.com/RJAacgUk
Но js движок в HtmlUnit ругается на то, что в js скрипте "unterminated string literal", видимо, потому что там используются multiline шиблонные строки https://stackoverflow.com/a/805113 И из-за этого я не могу вызвать ни одну функцию из этого js скрипта, просто выбрасывает ошибку, что функция не определена. В обычном браузере никаких ошибок с unterminated string literal нет. Пробовал разные браузеры ставить, но всё равно не работает.
Как это можно пофиксить? Версия HtmlUnit самая последняя 2.40.0, если что.
Под пивом.
>В данном случае я бы подергал за апи напрямую, вроде все вменяемо.
Да, ты прав. Спасибо за совет.
СПб, вjobываю в хорошей компании, получаю 150к на руки.
Если судить по зп, то МИДДЛ ИЛИ ЕЩЁ НЕТ?
Стремаюсь спрашивать начальство, типа если миддл и спрашивает об этом, то тупой миддл, а если джун - то охуевший джун.
Табуреткой по ебалу?
А че так много?
Что там мидол - сеньоры минимум столько получают.
Может через кастомные процессоры аннотаций можно.
Вопрос нахуя?
Если критически важно избежать создания инстансов - сделай класс абстрактным. Тогда его даже через Unsafe не инстанциировать.
Если просто как часть API - то простого приватного конструктора хватит.
Конкретно для этого случая есть JEP-325
Можно просто настроить мавен/грэдл, чтоб он валился при сборке, если кто то использует свич.
Без стримов какой нибудь спринг может отвалится. Да и в стримах ничего особо плохого нет, в отличие от свичей.
Че ты высираешь тут, ебанушка?
Не обращай внимания на шизика.
Падажжи, я сначала статистику в экселе должен запостить.
>джавахуисты, кто хочет вкатиться в биг дату?
>ноэскуэл, хадуп, спарк, хайв, кафка и прочая хуйня
>нужны синьеры-помидоры или крепкие мидлы
>с опытом Java от 3 лет или на Scala от 2 лет
>с зарплатой не обижают (даже из-за рубежа переманивают)
нужно еще
>>>1678229
>присылай резюме @jvmguru
>ктсати, если кто имеет опыт от года со Spring - тоже присылайте
>>678238
>Щас бы палиться что ты двачер
некоторые уже кидали.
моя цель - закрыть дыры в штатке, а не палить вас
Но ни подробностей проекта, ни даже названия компании мы не узнаем. Идите нахуй.
Куча проектов на кучу разных направлений.
Смысл тут все расписывать, если ты все равно пошлёшь нахуй?
Кому надо - пришлёт.
Он уже ничего не решает.
Да ваще охуеть можно с этой ебически сложной стековой JVM, вся эта изичная хуйня типа UB, CISC x86, FPU, прерываний BIOS и системного API просто нервно курит в сторонке и учится на раз-два.
Интересует Caffeine. Щас увидел на проекте эту ебалу, я хуй пойми вообще чё там, как. А делать надо.
Гайдец бы какой с примерами было бы вообще шикарно.
Не хранятся они в виде ссылки. Хранятся они в базе, где есть какая-нибудь табличка из колонок юзер_ид и роль_ид. Ссылка же указывает на роут, роуту соответствует контрллер, контроллер (не напрямую) дёргает базу. Если при GET-запросе к твоей ссылке сервер возвращает список ролей, то можно сделать обработку аналогичного POST-запроса по этой же ссылке (ну или другой) и написать контроллер, принимающий JSON-ку со списком, и этот контроллер будет уже обновлять данные в базе.
В общем, гугли понятия REST и MVC и то, как они организованы в спринге.
Так же как и все остальное меняешь. В каком нибудь юзер сервисе через контроллер.
А что за ссылки в твоем джейсоне гугли hateoas.
>int cannot be converted to int[]
Как начать быть таким же охуенным как ты и хотя приблизиться к изучению подобного?
Просто я особенный, пиздец.
Зачем тебе жаба? Бери HTML и JS.
>>Надо сделать простенький сайт
>>простенький
Wordpress, JS, PHP, Python. Хотя может тебе и просто html хватит.
>>сайт на яве
Spring MVC + Thymeleaf/FreeMarker + Boostrap.
Потому что у тебя трехмерный массив, в массиве массивов должны быть массивы, а ты инт сунул.
Я хотел добавить Vaadin, но почему то не стал.
делаю у атома два поля с аннотациями
@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]
возможно стоит в pom.xml поменять значение в теге <release>
ладно с этим разобрался. Но как вот это распарсить в Map<String, String> parameters?
В помнике указаны maven.compiler.source и maven.compiler.target?
Влезло вроде, 2д точно влезло. Дальше 3д не получается, да и нахуй не нужно
Ух блядь, надо было в школе учится, а не в комплюктер играть
Не повторяйте моих ошибок, зумерки ебаные
учиться*
Уже сам разобрался.
Под вторым вариантом я имею в виду, что токен хранится в БД, и когда клиент отправляет токен, то мы лезем в БД и ищем юзера по токену.
А в случае с JWT бэкенд не лезет в БД вообще видимо
ну и можно проверить не протух ли токен
В очередной раз убеждаемся, что шарп - это делфи.
Ищешь что то по джаве для веба, предлагают свинг, да еще и на эклипсе/нетбинсе. Как вообще можно этим пользоваться, если ты жава программист? Вроде и идея совсем недорого стоит, тем более с зп программиста.
Проект на джаве? Ну вот джерси, джакарта. JSP и JSF это то что тебе надо в 2к20 году!
Ищешь спринг. Ага вот тут проект проект целиком. Ага дто, слои, джейсоны для фронта. Вроде понял, но мало. Смотришь следующий. Тут МВС с шаблонизатором фримаркерспасибо что не jsp, дао нет, кладем все в модель. Так, а что в третьем проекте? Микросервисы с месенджером. Ну охуеть теперь. Репозиторий примерно такой же как в прошлом проекте, но анотации на полях совсем другие. База данных не постгрес, а мускл? Ну это ж наверное похуй, ведь JPA! А че спринг не запустился? Мускл не смог таймзоны выставить нормально и хибернейт упал. Спасибо стак оверфлоу за ответы на любой стектрейс! Эксепшен хэндлинг вообще хуй знает как делать. Свои эксепшены/спринговые/опшионал/валидация. Чекед/анчекед вперемешку.
Как все это собрать воедино то и написать что то больше hello,{username}! Из всех проектов пока только 1 нашел более-менее внятный на спринге, но и там только юзерсервис и обвязка. Сайт на который можно залогиниться(и имеил по коду подтвердить, как без этого!) Зато hateoas, валидация, дто с мапингом и все крутится на томкате в докере на амазоне.
Ну так две крупнейшие айти державы в мире джавы же.
В чём вопрос?
Не зацикливайся на чтении чужих проектов, а пили свой. Попутно доучивай необходимое по туториалам и докам.
В нулевом проекте нет ничего, кроме минимальной конфигурации, чтоб всё необходимое работало, и больше ничего. Дальше пишется логика и впиливаются по необходимости всевозможные валидации, маппинги, очереди, секурити, вебы. Но впиливаются они при возникновении реальной нужды в них, а не заранее.
Так книги - точно такие же хэлоуворлды, только текстом. 100500 способов настроить конфиг. Какой то конкретный момент нагуглить я могу, а вот общей картины не хватает. Как строить архитектуру? Нужны дто между сервисом и контролером или в модель все фигачить? Один дто на сущность или на каждый запрос отдельно? Бест практис какие-нибудь. Я для этого и смотрю всякие видосы от васянов с юдеми "как сделать хуйня-нейм от и до".
Всё-таки лучше Васянов не смотреть. Правда, такого говна понахватаешься.
А ты работаешь? Вообще, такое с опытом приходит обычно.
А по книгам - не знаю, мы наверно разные книги читаем. Я как раз в книгах черпаю общую картину, а за деталями лезу в доку.
>Нужны дто между сервисом и контролером
Иногда нужны, иногда нет. Может у тебя сервис не только http-контроллер вызывает, а какие-нибудь другие модули дёргают или какие-ниудь события и прочее. Тогда я бы отдельную дто для контроллера, и отдельную для сервиса делал. Для http-дто может быть своя специфика.
Аналогично Entity для JPA ну или какую-ты там либку для слоя данных юзаешь.
>Один дто на сущность или на каждый запрос отдельно
Тоже по ситуации. Если архитектура рест, то скорее всего это будет одна сущность. А может где-то на каждый запрос лучше создать отдельно.
Вот это вообще забей нахуй. Год назад научил бабку пользоваться ютьюбом, так она по изотерике угорела с утроенной силой, пзидец, сисяна из всех щелей сука лезет смотреть начала.
Сука, что не сектант уровня кашпировскоо или йобамаг в йобашлеме который пророчествует будущее по вспышкам - то пан ебаный хохол, тысячи их, астрологов и херомантов. Просто заполонили нахуй, и просмотров у них тыщ под 600
> Project Loom
Загуглил, что это. Думаешь, на котлин бегут исключительно ради компайл-тайм корутин, а не потому что всех заебал синтаксис жабы?
Я вот реально не понимаю жалоб на синтаксис. Я писал на котлине примерно полгода. Не понравился. Такое чувство, что синтаксических изменений "лишь бы не как в джаве".
Null Safety ещё более менее плюс, но я как-то привык уже аннотациями всё размечивать и Optional юзать.
У них там целый мир, блядь
https://www.youtube.com/watch?v=dIVveEXn7f4
https://www.youtube.com/watch?v=JJscXQnF6sk
https://www.youtube.com/watch?v=Fp6XNbzJIJE
https://www.youtube.com/watch?v=-BxVineAzP8
https://www.youtube.com/watch?v=Pb0VAJ4JZF8
https://www.youtube.com/watch?v=Ojj8TIJAdAY
https://www.youtube.com/watch?v=qLDrZbmRlsY
Полгода опыта, в основном всякие REST сервисы на спринге делал, но тема биг даты интересна +люблю с алгоритмами поковырять я. Можно к вам?
Мне-то уже всё равно после сишки. Но вот если послушать большинство местных котлинистов, так все разговоры про С И Н Т А К С И С.
>>А ты работаешь? Вообще, такое с опытом приходит обычно.
Не, только собираюсь вкатываться. Пару недель улажу дела и пойду по собесам. Я догадываюсь что многие вопросы отпадут когда я увижу как это на практике делается, но пока не особо понятно как и почему.
Про книги - вот есть например Pro Spring 1к страниц. Читаю, и вроде по делу, но про DI я и так знаю, как там контекст с бинами работает понятнее было у спринг потрошителя. Углубляться в какие то детали особого смысла нет - забуду без практики. Да и в гайдах на каком-нибудь баелдунге или на спринг.ио примерно тоже можно найти. Думаю уже на уровне мидла буду вникать в нюансы.
>>Иногда нужны, иногда нет
Ну вот допустим на том же юзере. Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг, но это с перспективой на микросервисы всякие их тоже надо поверхностно изучить, они вроде как в тренде, да и не хочу давать сущности из базы контролеру, там хэши паролей и просто ненужная ему инфа. Так вот эта дто, что идет в сервис из контролера может быть большой со всеми полями сущности(имя/пароль/емеил/список любимых тредов двача), тогда просто замапятся все поля из реквеста, оставив часть пустыми. А можно делать отдельные дто для каждого обращения к сервису - регистрация/смена пароля/обновление профиля - тогда пустых полей не будет, но будет больше классов. Вообще я склоняюсь к последнему, чтоб ничего лишнего не передать контроллеру да и проверять наличие пустых полей проще.
Что мне читать чтоб получить ответы на подобные вопросы? Другие книги по спрингу поискать или гайды какие то? Или таки осилить книгу, хоть она и весьма занудная
>моделмапер или дозер
Знакомые вещи. Поиспользовал их и понял, что мне проще вручную конвертер написать, чем трахаться с этими либами. Гораздо нагляднее. Но это субъективно.
>Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг
Да, правильно. Так обычно и делается.
>регистрация/смена пароля/обновление профиля
В смене пароля скорее всего можно и без дто обойтись, просто перечислить параметры. Обновление - стандартная дто (её и для создания), в базе апдейтишь все поля, которые пришлёт фронт. Если фронт апдейтит одно поле - то все старые поля он всё равно присылает.
Регистрация - хз, надо смотреть.
Если ты для смены пароля создаёшь общее дто и заполняешь только пару полей - это точно плохо (если конечно я правильно всё понял).
>Что мне читать чтоб получить ответы на подобные вопросы
Да просто придёт с опытом. Само придёт, когда ощутишь боль от неправильных чужих или своих решений.
Тебе сейчас самое главное - это идти работать. Получай опыт. Можешь договориться с тимлидом (или кто тебя будет сопровождать первое время), например, что будешь составлять вопросы и в конце дня их спрашивать (чтобы не отвлекать во время работы). Я прямо ручкой в блокноте писал и ответы тоже записывал, чтобы не забыть. Скорее всего тебе попадётся адекватный коллега и будет отвечать на нубские вопросы.
> Я получаю пост реквест от фронта(в виде json), делаю мапинг в дто (использую моделмапер или дозер) и дто засылаю в сервис, а там мапинг в сущность userEntity (которую можно сохранить в базу или передать другому сервису). Может и оверинжениринг,
За ~10 лет видел сто разных способов сделать это, кто-то делает так как ты, кто-то пишет свои конвертеры, кто-то вообще энтити сразу хуярит в рест. Я сам остановился на самодельных конвертерах как этот анон >>691211 так как это нагляднее, и например если добавили новый филд в энтити то нужно явно пойти и прописать его в конвертер если хочешь его заэкспозить в апи. Тоже хотел как-то найти какой "правильный" способ это делать, но так и не нашел ничего стандартного, все делают по-разному.
Тебе уже выше анон ответил, но я тоже добавлю.
Спринг про по диагонали читай, там дохуя ненужной хрени. Секцию с конфигурацией черех xml я вообще пропускал, щас всё на аннотациях. Кучу всякой подкапотной хрени вообще не найти, пока не столкнёшься с ней сам ты и знать о ней будешь.
По поводу дтошек и прочего - это действительно только на опыте приходит, когда будет неебический проект на 9000к строк кода и начнёшь в нём копаться.
По архитектуре - я вот Мартина читал, мне норм зашло.
И, да, тебе пора по собесам бегать. Свои круды с сохранением сущностей в постгресс ты ещё напишешь на тестовых, не заморачивайся.
Mongo
Cock roach
Да
Нет, должно быть int[]. Скобки после типа. Иначе ты пидор.
>Этим занимается BeanFactory. Но и здесь можно добавить кастомизацию, написав и зарегистрировав свой FactoryBean.
ору лол
Так действительно правильнее, но это режет слух и глаз, поэтому приняли сокращать до фактори если фабрика. А bean добавлять только если требуется специально указать что это бин, а не какая-нибудь скажем удаленная RPC фабрика (но тут тоже будет FactoryDataAccessBean, лол).
а че)
Или около того? Как лучше сказать?
Боди шоп.
Бодишоп — основная форма существования АйТи почти на всей постсоветской территории. Морфологически является слиянием двух англ. слов и дословно переводится «магазин тушек» или «магазин тел» и в буквальном понимании описывает основную бизнес-модель разработки ПО. Некоторые Ыксперты утверждают, что более правильным понятием будет «brainshop», хотя, как доказывает рынок, правильным семантически значением будет именно первый вариант.[1]
[1] https://ebanoe.it/dictionary/
Ненавижу ебучий РКН, он принципиально блочит все украинские сайты? Пришлось включать VPN и выбирать все изображения, где есть светофор
Ахуеть информативно.
Днем всякой хуйней занимаюсь, а после полуночи приходит озарение и код писать проще.
Это как контора-прокладка. Вася пишет код за 100 рублей в час, Джону нужно написать сайт за 300 долларов. Но сам морочиться с организационной частью он не хочет.
Тут появляется хитрый уроженец Одессы, который собирает Васянов под своё крыло и продаёт их Джонам втридорога, забирая половину себе. Потогонка, постоянно меняющиеся однообразные задачи, наебалово во все поля, говнокод (ведь джуниоров продают как опытных), кручение на хуе трудового кодекса.
>>692408
> почти на всей постсоветской территории
Опять хохлы судят по себе. Я хз где в ДС найти бодишоп, если спецом не задаться такой целью. Тут банк, там банк, здесь блядь пыньдекс, там мейлсру, тут вообще стартап.
> По гайдам в каждом методе ДАО нужно открывать сессию и стартовать транзакцию
Да.
> но это хуйня какая-то
Да.
> нужно в ОДНОЙ транзакции обновить баланс юзера через юзерДАО и создать платеж через платежДАО. По гайдам в каждом методе ДАО нужно открывать сессию и стартовать транзакцию
Ну да, очевидно, в твоем случае такой вариант "по гайдам" не подходит. Открывай не в каждом дао, а там, где тебе нужно. В чем именно сложность?
> переписывать удобные и понятные нативные запросы на неудобное говнище с кучей неявной магии и подводных камней
>нужно в ОДНОЙ транзакции
Я хотел написать сначала @Transactional(propagation = Propagation.MANDATORY), но увидел потом
>только без спринга плиз
Так что хз.
>>692717
>Писать в десять раз больше кода с кучей возможных ошибок, вместо миллион раз проверенных автогенерируемых методов.
Ты и массив обходишь по-старинке, с итератором?
Стримами обохожу.
Новое - не значит лучше, показательный тому пример - Gradle. Да и ORM как явление, у них нет никаких преимуществ, т. к. они ничего не упрощают, только усложняют.
Я вот вообще чистым хибернейтом не пользовался, сразу вкатывался в спринг.
Объясни мне, как использование автогенерируемых методов вроде findFieldById вместо написания их руками может быть сложным? В редких случаях, когда действительно нужно написать что-то на SQL, просто хуяришь над методом native и пишешь на SQL.
Т.е. ты предлагаешь в сервисе, использующем дао, открывать сессию и передавать как аргумент в метод дао?
Ну мой следующий шаг действительно спринг, но я не думал, что хибернейтом сложно пользоваться без спринга.
Да. Либо, чтобы не таскать как аргумент, изобретать что-то в духе того, как работают менеджеры транзакций в том же спринге - укладывать в ThreadLocal.
Для хеллоуворлда с крудами из пары небольших табличек может быть всё просто и красиво.
Стоит появиться необходимости сделать хотя бы нетривиальный JOIN - начинается пиздец: https://stackoverflow.com/questions/29366785/join-entity-with-table-that-has-no-entity-assosiated-in-jpql
Какая-то муть с кешированием
Хуита с @OneToMany, @ManyToOne
Странный способ вызова хранимых процедур
Но это конечно же всё нинужно, да и вообще ниасилил.
Этот прав, я нахуй ORM. Это прикольно, когда у тебя тупой круд. Но что-то посложнее проще на sql писать. И отлаживать запрос легче в разы, и оптимизировать. С ORM больше времени потратишь.
А у тебя всегда будут запросы уровня хеллоуворлда, вот для них эта хуйня и нужна. Для чего-то сложного юзай натив. Смешивать же можно.
>Хуита с @OneToMany, @ManyToOne
А чё там? Если правильно всё делать, то хибернейт за тебя объединяет всё, создаёт промежуточные таблицы и реализует нужные связи. Тебе остаётся только классы писать, а не искать где ты в SQL запросе запятую пропустил.
>ниасилил
Там пару статей прочитать, например https://dou.ua/lenta/articles/how-to-use-hibernate/ и всё, круды сами себя писать будут в большинстве случаев.
Ок, просто у меня дао создаются в фабрике 1 раз, т.е. на все инстансы сервисов у меня 1 инстанс каждого дао. Я так понимаю, это делать неправильно?
>хибернейтом сложно пользоваться без спринга
Я такого не писал. Да и сам по сути ньюфаг, использовал сразу спринг после ликбеза по JDBC. Вообще не знаю, как оно там всё по отдельности, для меня это всё едино, даже не отличаю где какие аннотации от спринга, где JPA, где ещё что.
С самой джавой такая же история, не представляю как решать задачи без Optional, потоков, лямб и прочих try catch with resurses.
В твоём случае, если один инстанс дао, то придётся передавать сессию как аргумент в каждом методе. Или создавать дао каждый раз, чтобы передать сессию в конструкторе.
Сам решай, что красивее.
Если хочешь, то здесь можно применять абстрактную фабрику (чтобы создать дао), но не обязательно
В реале конечно это будет один инстанс дао, а всю магию с транзакциями сделает спринг.
>хибернейт за тебя объединяет всё, создаёт промежуточные таблицы и реализует нужные связи
У тебя реальный опыт работы есть?
С вот этим "за тебя создает таблицы" тот анон перегнул, конечно, но общий посыл поддержу - хибернейт не для НЕтривиальных джойнов, (их никто не запрещает писать нативно) а для большого количества тривиальных. От которых никуда не деться все равно, и которые иначе заебешься писать и поддерживать руками. Главное понимать, что это не волшебная херня, которая позволит вообще не уметь sql, а скорее что-то вроде такого генератора типовых запросов.
Да. На проекте почти всё на нём написано, что можно написать, хотя я бы в половине случаев использовал спринг репозиторий просто, но кто я такой чтоб выёбываться, что дают то и делаю с заваленным ебалом. JDBC там, где проще написать на нём. Ну это когда запрос на страницу и половина его на диалекте.
И у меня нет никаких проблем со всем этим, когда делаю свои таски.
> всегда будут запросы уровня хеллоуворлда, вот для них эта хуйня и нужна
В принципе, у нас иногда для нового простого функционала иногда юзают, при усложнении почти всегда перепиливают на JdbcTemplate.
< А чё там?
В этом-то и дело, что что-то. С нативными запросами нюансов нет, а тут они иногда возникают, и каждый раз приходится гуглить.
> пару статей прочитать
Добавил в закладки, может, когда-нибудь изменю своё мнение об ORM.
>у нас иногда для нового простого функционала иногда юзают
Я тебе про это и толкую. Для хуйни, буквальных CRUD-операций, его и надо юзать. Это код уровня геттеров-сеттеров, пускай машина им занимается. Там читать то нечего, это уровень ломбока, на мой взгляд.
Вот когда всякая ебала, вроде встроенных сущностей, транзакций, тут уже фломастеры. Мне удобно пару аннотаций использовать, тебе может ещё как, вкусовщина же. Ну и от команды зависит, наверное. Я вот точно, 100% в ближайшие годы выёбываться на эту тему не стану и буду делать так как скажут.
Я сотворил javafx программу (жарник) юзая х64 ждк на своем компьютере, но она не запускается на компе с х32 операционкой.
ELF: ELFCLASS64 (Possible cause: architecture word width mismatch)
Скорее всего нельзя. Но разве бывает ждк 11 х32 ?
> 32 бит
Лучше взять C++ Builder, ну или Delphi, но он какой-то хипстерский.
Мб это: https://github.com/javafxports/openjdk-jfx/issues/376
Это называется репозиторий.
На идиотах. Как можно платить за возможность писать бесполезные сообщения в чат или спрашивать хуиту с донатом? Лучше бы в ломбок донатили, они реально дело делают.
Можно и на клиент при желании.
Пилить функционал vs пилить тесты для функционала.
Работу найти легче, зарплата в среднем выше. Да и воспринимаются разрабы как более высокие в социальной иерархии, чем даже очень крутые тестеры, лол.
На вход методу подается коллекция итераторов. На выход он должен вернуть один итератор.
Например, подается коллекция из трех итераторов:
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
}
А где тут квадрат, ты же один раз по всем элементам проходишь?
Куча бесполезных абстракций, когда в 90% случаев хватило бы OkHttp.
Но ведь можно ими заменить boolean переменные, если хранить true и false в битах int переменной. Экономия памятию
Вообе-то ее и задумывали для браузера, лол. Это конкурент m$ silverlight. Сейчас остался только проект JPro от сообщества.
>public Iterator<Integer> method(Collection<Iterator<Integer>> iterators) {
>// method
>}
Тебе по работе, или лаба?
С такими мыслями тебе в C++-тред, там любят каждый бит экономить.
Ну а здесь хеллоуворлды жрут по 200 метров.
В джаве принято экономить память людей, на память машины всем уже давно похуй. Можно сервак помощнее докупить, если что. Нанимать сеньора, чтоб он разобраллся че там индусы написали чтоб 2 байта сэкономить дороже.
Я так-то по фану отвечаю
EnumSet
Да, сам удивился, что теперь всегда надо нажимать комбинацию клавиш и какая-то пипка со значком мавена справа висит.
>Сопоставление с образцом
Бля, пока на англюсик не переключил, не мог понять. Не читайте на русском.
Это ещё ничего. Как тебе, когда "commi" переводят как "фиксация"? Будто слово стало более русским.
Commie
У меня есть проблема со след задачей
В ArrayList с обьектами одного типа и двумя полями - день и число,найти день с общей наибольшей суммой,дни могут повторятся,расположен в возрастающем порядке
Я уже вроде бы реализовал алгоритм , но он нихуя не работает,можете пару строк кода написать, пожалуйста?
Я ваще не понимаю, почему код не работает и чувствую себя идиотом,помогите, пожалуйста
Ну хз, наверно сначала надо про паттерны, сервлеты, лайеред архитектуру и роботу с дб (jdbc) почитать, прежде чем в спринг нырять.
Напиши компаратор для своего класса, напиши пару тестов - если все работает - делаешь Collections.sort(list, comparator).
А, тебе один объект только нужен, а не все по порядку, тогда Collections.max(list, comparator).
Что именно вызывает сложности? Берешь и без задней мысли делаешь свой итератор, на вход принимая что угодно. Для тебя важно понять что итератор это еще НЕ выходные данные, это инструмент выдачи данных, он - lazy, т.е. в момент создания и выдачи итератора из метода у тебя еще нет никаких данных вида "1 2 3 1 2 3 1 2 3 1 2 1 2 1 2 1 1 1 1 1", они появятся только тогда когда с выданным тобой итератором начнут работать (в пограничном случае - никогда).
>день с общей наибольшей суммой
Что, простите? Я непонимяу. Каркас вот, условие сам добавишь.
Если нет отрицательных чисел, то просто бери последний день.
Пару минут в гугле:
LocalDate maxdate = dates.stream()
.max( Comparator.comparing( LocalDate::toEpochDay ) )
.get();
Тебе надо будет компаратор чутка изменить, взять object.getDate сначала.
Если возрастающей порядок - это по дате, то у тебя все показания за определенный день лежат рядом. Все что нужно - это идти по списку и суммировать значение за текущий день. Когда начинается новый - сравнивать сумму текущего с суммой лучшего предыдущего (на первый день лучшего предыдущего нет, конечно же). Если сумма текущего больше, то он становится лучшим предыдущим. Всё. Сложность алгоритма линейная.
Можно, пустой массив будет. Именно для этого они и идут последним параметром - быть опциональными.
test message
static void func(String ...args) { }
func("1", "2", "3");
func(new String[]{"1", "2", "3"});
main() можно вызвать без параметров. Значит массив тоже можно игнорить.
Напиши для начала какое-нибудь говно на голых сервлетах.
Тогда со Spring`ом потом будет попроще, особенно если в кишки полезть придётся.
А лучше сразу Java EE 6.
В том, что проще нихуя не будет. Тебе не будет легче учить ту же жабу, потому что ты учил си. Будет по-другому. Но не проще.
мимо
Это говно мамонта. Максимум пару статей прочитать, чтоб в общих чертах представлять, как это работает. Да и то забудется через неделю.
Мало кто хочет целенаправленно изучать то, что умирает, нужно всё меньше и не пригодится вообще уже лет через 5. Если и учить, то ровно настолько, чтобы решить какую-то проблему здесь и сейчас и забыть.
Ясненько.
Задачи
Написать программу Java, которая моделирует свойства, поведение и взаимодействие объектов в этой галерее игровых автоматов. Вам также потребуется тестовый класс, который содержит главный метод. Используйте главный метод для моделирования определяющих действий программы, таких как создание экземпляров объектов и считывание карт. Все поля должны иметь значение private. Предоставьте метод получения и все необходимые методы установки.
Карты
Магнитная полоса на игровых картах имеет ограниченное место для хранения и не имеет вычислительных ресурсов. В картах сохраняется информация о текущем кредитном балансе, балансе билетов и номере карты. Ни один баланс не может быть отрицательным. Отдельные карты не способны ни выполнять вычисления, включая простое сложение, ни анализировать возможность того, что их балансы могут стать отрицательными.Каждая карта создается с уникальным целочисленным идентификационным номером. Хотя каждая отдельная карта не способна выполнить простое сложение, тем не менее, можно выполнять вычисления со свойствами, относящимися ко всем картам.
Игры
Для игры на автоматах требуется определенное количество кредитов. Каждый игровой автомат оснащен считывателем магнитных карт и ЖК-дисплеем. При считывании карты уменьшается ее баланс, но слу чайным образом выдается неотрицательное количество билетов. Выведите номер карты, число выигранных билетов, а также новую итоговую сумму. Если на карте недостаточно кредитов для игры на автомате, должно выводиться соответствующее сообщение.
Категории призов
С каждой категорией призов связаны название, количество билетов, требуемое для завоевания приза, и число элементов этой категории, оставшихся в терминале. Призы никак не связаны с терминалом, к которому они относятся.
Терминалы
Каждый терминал содержит считыватель магнитных карт. Терминал принимает деньги, которые преобразуются в кредиты на карте. Деньги принимаются в виде целых чисел. Кредиты выдаются в соотношении 2 кредита на каждый рубль. Игроки могут использовать терминал для проверки балансов своих карт. В выводе также должен указываться номер карты. Между картами можно переносить кредиты или билеты, полностью или частично. При доступе к кредитам или билетам всегда должны выводиться балансы карты. Наконец, в терминалах билеты можно обменивать на призы. Если на карте недостаточно билетов или если в терминале нет приза конкретного типа, должно выводиться сообщение об ошибке. Должно выводиться сообщение о присуждении приза и о количестве призов нужного типа, оставшемся в терминале. Терминал предлагает 3категории призов.
Главный метод
Создайте экземпляры 2 карт и любых других объектов, необходимых для тестирования вашей программы.
•Загрузите кредиты в каждую карту.
•Сыграйте в различные игры, используя обе карты. •Перенесите баланс кредитов и билетов с карты1 на карту2. •Запросите призы, используя карту 2.
•Попытайтесь сыграть в игру и запросить приз, используя карту1.
•Выполните любые другие действия, необходимые для тестирования вашей программы
Задачи
Написать программу Java, которая моделирует свойства, поведение и взаимодействие объектов в этой галерее игровых автоматов. Вам также потребуется тестовый класс, который содержит главный метод. Используйте главный метод для моделирования определяющих действий программы, таких как создание экземпляров объектов и считывание карт. Все поля должны иметь значение private. Предоставьте метод получения и все необходимые методы установки.
Карты
Магнитная полоса на игровых картах имеет ограниченное место для хранения и не имеет вычислительных ресурсов. В картах сохраняется информация о текущем кредитном балансе, балансе билетов и номере карты. Ни один баланс не может быть отрицательным. Отдельные карты не способны ни выполнять вычисления, включая простое сложение, ни анализировать возможность того, что их балансы могут стать отрицательными.Каждая карта создается с уникальным целочисленным идентификационным номером. Хотя каждая отдельная карта не способна выполнить простое сложение, тем не менее, можно выполнять вычисления со свойствами, относящимися ко всем картам.
Игры
Для игры на автоматах требуется определенное количество кредитов. Каждый игровой автомат оснащен считывателем магнитных карт и ЖК-дисплеем. При считывании карты уменьшается ее баланс, но слу чайным образом выдается неотрицательное количество билетов. Выведите номер карты, число выигранных билетов, а также новую итоговую сумму. Если на карте недостаточно кредитов для игры на автомате, должно выводиться соответствующее сообщение.
Категории призов
С каждой категорией призов связаны название, количество билетов, требуемое для завоевания приза, и число элементов этой категории, оставшихся в терминале. Призы никак не связаны с терминалом, к которому они относятся.
Терминалы
Каждый терминал содержит считыватель магнитных карт. Терминал принимает деньги, которые преобразуются в кредиты на карте. Деньги принимаются в виде целых чисел. Кредиты выдаются в соотношении 2 кредита на каждый рубль. Игроки могут использовать терминал для проверки балансов своих карт. В выводе также должен указываться номер карты. Между картами можно переносить кредиты или билеты, полностью или частично. При доступе к кредитам или билетам всегда должны выводиться балансы карты. Наконец, в терминалах билеты можно обменивать на призы. Если на карте недостаточно билетов или если в терминале нет приза конкретного типа, должно выводиться сообщение об ошибке. Должно выводиться сообщение о присуждении приза и о количестве призов нужного типа, оставшемся в терминале. Терминал предлагает 3категории призов.
Главный метод
Создайте экземпляры 2 карт и любых других объектов, необходимых для тестирования вашей программы.
•Загрузите кредиты в каждую карту.
•Сыграйте в различные игры, используя обе карты. •Перенесите баланс кредитов и билетов с карты1 на карту2. •Запросите призы, используя карту 2.
•Попытайтесь сыграть в игру и запросить приз, используя карту1.
•Выполните любые другие действия, необходимые для тестирования вашей программы
А я поддерживаю. Я тоже за то, чтобы до спринга пробежаться по сервлетам и фильтрам. Сделать что-нибудь простенькое.
Да. Так-то и без них можно хеллоуворлды писать. Но для понимания лучше их знать. Spring MVC использует DispatcherServlet, а Security - сервлетовские FIlter.
Ты ему и C тогда предложи выучить, для понимания.
Байткод не меняется в зависимости от разрядности CPU, архитектуры и ОС. Хочешь 32 бита - запускай на 32 битной JVM.
Если нет нативных компонентов (типа SWT), то все будет работать.
>Скорее всего нельзя. Но разве бывает ждк 11 х32 ?
Оракловой не бывает, но есть альтернативные https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=hotspot
Первые версии FX были полностью на базе Swing и ничего не требовали, но как я понял сейчас это не так. И тебе нужна сборка FX под твою ОС и разрядность.
Вроде там до сих пор делают сборки под разные разрядности https://gluonhq.com/products/javafx/
Ну вон люди х32 обсуждают, может и это кто использует.
В легаси, например. У нас вот жирный монолит на EE, крутится на вебсфере, спринг четвёртый.
Как уже сказали, в легаси, но я добавлю, что это не обязательно совсем древнее легаси уровня ЕЕ. Просто если приложение уже было написано без бута, то смысла его добавлять довольно мало. Сам спринг при этом может быть и вполне новым.
Кобола им пока хватает
Но если высоконагруженный монолит с кластеризацией и прочим, то смысла не вижу.
Ща придут адепты микросервисов и скажут, что любые монолиты - зло, и что их нужно срочно переписать на микросервисы.
Поясни, какие из фич бута важны для микросервисов, но для монолита смысла не имеют. Афтоконфигурация? Актуатор?
Это не ты недавно "робота" написал?
Короче,в классе с лентами лежат только поля и все,а в классе с терминалом можно пополнять баланс,получать призы и прочее говно.
Так вот,как это реализовать?Как сделать чтобы пополнять баланс можно было только через терминал и более никак. Учитывая что во всей программе поля с балансом и номером карты лежат в отдельном классе.
Можно все эти классы вынести в отдельный пакет, сделать все поля с балансом и прочим приватными, сеттеры для них - package-private, и только у терминала поля будут public. Package-private разрешает доступ только в пределах данного пакета, у терминала будет к ним доступ, а извне доступа не будет.
Это при условии, что разраб не будет добавлять новые классы в пакет, но для адекватных требований этого достаточно.
На поля package private, класс ленты и терминала в один пакет.
Звучит неплохо,но вот в чем загвоздка.Это задание к курсу,а конкретно к теме с модификаторами доступа,там говорилось,что использовать можно только private,static и public,но при этом все поля приватные
Плюс я не пойму как мне в методах к ним обращаться,поля ведь лежат в одном классе,а методы в другом
Создаёшь класс терминал, в нём поле с типом лента.
В конструкторе это всё объявляешь.
Потом обращаешься Терминал.полеСЛентой.
Почитай про агрегацию.
> поля ведь лежат в одном классе,а методы в другом
Не должно так быть, они должны быть в одном классе, причём поля должны быть private, а геттеры/сеттеры - не обязательно. Лично я с этим не согласен, но соглашение таково.
Таково условие,я просто его скопировал и никак не изменял.Подразумевается,что магнитные ленты не могут выполнять вычисления,а могут только хранить инфу о номере и балансе.Но мы с этими картами насаемся то к терминалу,чтобы пополнить баланс,то к играм чтобы баланс потратить и поиграть.И терминал и игры тут отдельные классы. Такие уж задания на курсе оракла для начинающих
Да.
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
}
А для чего в параметры Терминала писать ленту,у нас же операции типо пополнения баланса будут представлены отдельными методами и в них мы уже напишем,разве нет?
Ой точно,и последний вопрос,как реализовать метод при котором с одной карты на другую переносится часть кредитов
public void perenos (Lenta lenta1, Lenta lenta2, int chast) {
if (lenta1.a>=chast) {
...//изменяешь значение ленты1 через метод терминала
..//изменяешь значение ленты 2 через метод терминала
}
else throw Exception ("Недостаточно средств")}
1. Сколько учили язык? В свободное время / во время работы?
2. С какой и на какую позицию перекатились? Сильно ли просели по зарплате?
3. Интересные ли задачи по сравнению с плюсами? Много ли своих заморочек?
Работаю НЕ в НИИ, пишу на современном C++17 с пакетным менеджером, CI и всеми возможными плюшками, но чё-то пердолинга всё равно многовато.
1. Язык как таковой - гораздо проще чем С++, по началу скорее будет бугурт от невозможности сложить два указателя. Сложность скорее всего в "обвязке" всего этого: спринги, кафки и прочий кубернетис в клауде.
3. Тут сильно зависит от того что тебе нравится и куда попадешь. 95% это унылый веб CRUD или sort of ETL. Но бываают и интересные проекты, но за ними надо побегать. С другой стороны унылый веб CRUD как правило тихая гавань, где можно годами неспешно пилить одно и то же, не напрягаясь и не перерабатывая.
Ну так сколько писали ВИМ и сколько уже разрабатывают Постгрес.
1. Я и не складываю указатели (может кто микроконтроллеры пердолит занимается подобным. У меня МашОб и нейроночки.
3. Я правильно понимаю что можно освоить этот стэк и дальше можно до пенсии сидеть в хуй не дуть в каком-нибудь банке?
Можно подробнее про зарплату?
1. Я указатели не складываю (это скорее кто микроконтроллеры пердолит). У меня МашОб и нейронки.
3. Я правильно понимаю что можно выучить это стэк и дальше до пенсии сидеть в хуй не дуть в каком-нибудь банке?
Можно подробнее по зарплате? Если я джуном вкачусь но с опытом пару лет на C++?
Есть один проект, который идет по лицензии. Дату истечения лицензии определяю я. Итак.
Есть machine-id у клиента - /var/lib/dbus/machine-id. Он передает его мне, я вставляю его в гуишку, там же выбираю дату конца лицензии. Ключ генерится по private key, machine-id и expirationDate, который я указал. Выходит что-то типа:
617055C6A1BC312E4DCDC7BE4FBE3A43BA78509BB09F9343EB2F55600DC9EA9DB99A93425CA99CACEA785AF98114E9A30B875523B23D5B1C0ADD4A70CCEE3B32
Я передаю этот ключ клиенту, он вводит его и тут хуяк:
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
Внимание, вопрос. В каком месте я поел говна? С меня тонны нефти за помощь в любом виде.
https://gist.github.com/jerdys/98ad193201dec81c98490144ba6d8364
Ремарка - с шифрованием работаю впервые, поэтому знаю во всем этом примерно нихуя, просьба не бить сильно тапками, если где-то сильно проебался
> Ключ генерится по private key, machine-id и expirationDate
Можно вычислить хеш-функцию от private key, machine-id и expirationDate, а ключ генерить уже от него. Взять хеш-функцию такую, чтобы влезала в 64 байта. На клиенте тоже вычислять эту хеш-функцию и сравнивать.
Чет погуглил поверхностно, ничего не нашел, завтра еще поищу. Если тебе совсем делать нехуй - можешь кинуть ссылку или, боже упаси, написать примерный код для всего этого?
Я не писал подобного на джаве, но это, наверное, должно быть похоже на проверку цифровой подписи.
Передаёшь на сервер machineid
Вычисляешь data = encrypt(priv_key, sha256(machineid + expirationDate))
Передаёшь data и expirationDate на клиент
На клиенте сравниваешь sha256(machineid + expirationDate) и decrypt(pub_key, data)
Нужно, чтобы callback hell был не только в JS.
библиотека А зависит от библиотеки Б, Б зависит от А.
Они обе сейчас на 11 джаве.
Есть необходимость сменить их таргет версию джавы на 8, т.к. выяснилось, что в одном из проектов анал жепы с 11 джавой, а в этих либах фишки 11 джавы не используются даже, ибо котлен.
Как это сделать?
меняю в одной - билд фейлится, т.к. в зависимостях либа с 11 таргетом.
Аможно пояснить за яхидный спойлер? Хочу заплатить в джава раш, но не хочу, стоит ли? Бесплатный курс воспринял легко стоит ли продолжить? Или дрочить уроки на ютабе и искать бесплатные курсы в интернете?
Это вопрос-загадка как на зоне, там петухов не берут.
как функционал исключения тут поможет? не совсем понял. Я могу исключить в проекте А либы проекта А из зависимости Б. Но Б то останется со своей таргет версией 11. и сломает мне билд
В целом да, но надо осторожнее чтобы не получилось так, что банк закрылся а ты "Senior COBOL Developer". Все таки за тенденциями надо хоть немного следить. Но тихие гавани есть и много.
Зарплаты сейчас - фиг знает, я 2 года не в России живу. Когда я уезжал конец 2018 в ДС джуны получали 100-120, сеньоры от 200 мне лично предлагали 350.
Как ты их вообще билдишь? Мавен и грейдл не дадут тебе создать циклические зависимости.
Я в ДС2
> Так перебирайся в дс.
А разницу в зп отдавай на хату и услуги, которые в дс дороже мухосрани
Зато в будущем рост будет, в отличие от мухосранска.
Ну так не ной тогда, что получаешь как джун в дс.
Навешал кодеркам на уши лапшу про передовые технологии, вручил каждому по лычке сенёра, денег не платишь, а они и рады. Профит!
Оно тебя сожрет, а работу ты не найдешь.
Я пару лет назад хотел вкатиться в эту отрасль, притом что в вузе у меня были и сапры (inventor, nx), и компьютерная графика.
А особенно нас дрочили по вычислительной геометрии и численным методам с упором на то, как решать определенные инженерные задачи с использованием метода конечных элементов и прочих прикольных математических штук.
Я потыкался в разные вакансии, но джуны не были нигде нужны и я забил, а потом перекатился в джаву к началу 4 курса.
К слову сказать, разработка САПР в России выглядит немного удручающей. Геометрическое ядро (как раз та часть, которая отвечает за йоба-геометрию) делает только одна контора - АСКОН, которая собственно и разрабатывает известный всем компас-3D.
Располагаются они в Коломне и по зарплатам сеньоров там все грустно - те самые 110к за знание С++ и вычислительной математики, чуть выше чем джава джун в ДС.
У T-FLEX аналогичная ситуация.
Правда вот видел недавно, что Align разрабатывает сапр для зубных лекарей - моделирование челюсти, и т.д, платят там неплохо, но нужно хорошо уметь в линал и алгоритмы.
>Компас 3д
Я б на их месте убрал вообще три дэ из компаса, ибо нинужно там, и кривое, а в целом прога, конечно, пиздатая
>А я ещё мечтал перекатиться из жабы в кресты
Если интересна компьютерная графика или байтоебство, то перекатывайся. В других случаях не стоит, хотя например бекенд на плюсах тоже в некоторых местах пишут.
Мне кажется это крайне плохая практика хотя понятное дело так делать не запрещено
Что про них читать то, можно просто в функциональном стиле кодить и никогда не встретится с такой ситуацией, просто я сегодня весь день переписывал такой код, все работало, тесты были, но я не мог нормально расширить функциональность, и понять логику, хотел услышать мнение когда бы анон это использовал и зачем?
Когда бы я использовал не чистые функции? Никогда. Только если и цель этого метода изменить поле.
Как это говно потом тестировать? Как в нём разбираться? Когда помимо возвращаемого значения там ещё внутри какая-то хуйня меняется.
Но у меня опыта, мало, пишу с дивана.
В ДС это новый тренд, вейп уже вышел из моды.
Смысл почти такой же.
Препод по тфкп в треде, все в матлаб
Стек стандартный, джаваспринг, правда майбатис вместо хибернейта, но его и так уже включил в список.
Хочу каждый день тратить по часу в день после работы на чтение статей и книг, по выходным пилить пет-проект на новых выученных штуках
Так все верно, лучший код - тот, которого нет.
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.
Не могу до конца понять что надо именно сделать ? Вывести последовательность возрастающую что ли ?
Ну глицину попей.
Всё правильно, идеальная функция это как сферический конь в вакууме.
На работе параллельно читаю клин код, решаю задачки на литКоде, пишу пет проект с коллегой после работы, но есть еще целые выходные, когда коллега не хочет столько прогать, а задачки решать впадлу. Посоветуйте плс список мб книг или технологий областей, что должен знать хороший программист, что может помочь с переездом из Раши в будущем (это не главная цель, хотя мотивирует)
Это че, жетбрейнс академи?
>переездом из Раши
Как вообще заводится трактор? Типа, работодатель подходит и говорит: "Сычев, ты хорошо трудился, вот тебе виза на забугры"? Что для этого нужно?
Можно найти вакансию на западе, допиздеться там, тебя примут и дадут рабочую визу
А причем тут рашкинские работодатели? Запрос, или как там это хуйня называется, его делает работодатель другой страны
> Что полезное за лето выучить, чтобы осенью попросить зп повыше(хочу х2, вкатывался на джуна с не самой высокой по рынку зп) либо уебать в другую компанию?
Ну спроси блять у своего тимлида/ПМа, что тебе нужно. Мы то откуда знаем, что вы там делаете у себя.
А по другой компании - смотри требования на hh на должности, которые тебя интересуют
Не. Я вижу это так, я вот ща поучусь, буду тру прогером, по хорошему поработать либо в топ IT компаний России типа Яндекса\Сбер Технологий, чтобы в резюме можно было написать "работал в топ банке России" или "в топ поисковике", чтобы люди видели что в своей стране я хорош и нужен. Далее по хорошему сертификаты сдать по джавке и еще по чему-нибудь, это надо еще гуглить. Ну а далее я прохожу онлайн собесы на линкедИне каком-нибудь много штук, и мне могут прислать приглашение работать у них в стране -> переезжаю.
Я это вижу так)
какие таблетки пить, чтобы информация луче воспринималась\запоминалась?
какая зп на старте? изначально стажером берут?
Если ты не логичный, не любишь цифры, тебе не давалась хорошо математика в школе - что-то из этого, то будет очень сложно, я бы не советовал. У нас иногда джунов таких вижу, они очень медленно обучаются, у них нифига не выходит, понимают с 5 раза, у нас таких недавно двоих уволили, честно хз как они будут работу искать дальше, не скажу что много у нас научились.
А если ты в ладах с матаном и логикой, то велком.
Таблетки вряд ли помогут, ни разу не слышал таких историй.
В зависимости от региона, в Москве 40-80к джун. Что подразумеваешь под стажером?
>работал на заводе, 30лвл
Если есть техническая вышка, то можешь попытаться вкатиться.
Если нет, лучше не стоит лезть в джаву. Во многих вакансиях очень желательно высшее образование, особенно на позициях джунов и стажеров.
>>704207
цифры люблю, вышка есть, дс2
если таких берут, как ты описал, значит шансы у меня есть
сейчас жру ноотропил, вроде эффект небольшой есть
как то на первом курсе жрал фенибут, сессию под ним быстро закрыл
ну типа стажер это когда ты неофициально работаешь в компании, они к тебе присматриваются и обучают тому, с чем ты будешь работать, платят печеньем
>Если нет, лучше не стоит лезть в джаву
В моем городе в вакансиях вообще ни слова про вышку, значит ее не требуют? Или во - само собой разумеющееся?
К сути:
У меня есть несколько классов-сервисов для обработки изображений, которые используют каждый свой enum с параметром указывающим способ смешивания цветов.
В DTO используется общий интерфейс для enum.
Для десериализации строки к определенному enum используется класс наследник StdDeserializer. Проблема в том, что метод deserialize не вызывается. Конструктор срабатывает.
https://pastebin.com/h5XwC9MZ
Как видно, сериализуемый интерфейс помечен аннотацией @JsonDeserialize, а судя по https://www.baeldung.com/jackson-deserialization более ничего и не требуется. Где я обосрался?
>>704281
Тоже очень редко видел такие требования, может быть Ошибка выжившего? По мне ссылка на гитхаб со своими проектами сейчас важнее, разве что в каких-то гос организациях слышал такое бывает, повышение упирается в вышку.
>>704222
Не, такого что ты описал - нигде не встречал.
Есть стажировки типа от сбера, от яндекса и т.п., я сам такую в свое время проходил, довольно прикольная штука, кратко, чтобы попасть, надо пройти собес на знаине основ, далее тебя бесплатно учат какое-то время (меня 2 мес. по скайпу несколько раз в неделю) и тебе нужно все в срок выполнять и сдавать, иначе ты вылетишь. Ну в итоге остаются человек 5-7 из 40, и им кидают оферы в разные отделы\компании и нужно еще внутр. собес пройти, но во время стажировки дается хорошая подготовка.
Если переезжать в Украину или Беларусь, то шансы такие же, да.
Вопрос решен, я невнимательный.
https://youtu.be/d_n4Kpte7_Q
Но почему? Они реально думают, что если возьмут 19-летнего, он до пенсии у них работать будет?
или читать все подряд по 4 книжки в месяц?
У меня у другана знакомый вкатился через стажировку в сбере на джавараба. Друган не вкатился.
Для чего? Чтоб на полку поставить к прочитанным книгам? Читай раскраски тогда - там букв меньше.
Не-а, ведь есть PL/SQL.
Лучшая была 4, а в пятой добавили ненужные енумы, аннотации, дженерики и прочее говно.
В общем, не знаю, правильно или нет, но задачу решил вот так:
public List<T> filter(List<OfficeWorker> officeWorkers){
List<T> approved = new ArrayList<>();
for(int i = 0; i < officeWorkers.size(); i++){
if(officeWorkers.get(i).getPerson().getAge().getYear() < YEAR_OF_BIRTH){
approved.add((T) officeWorkers.get(i));
}
}
return approved;
}
Ну ты конечно говно написал. Где объявлен параметр T? В объявлении метода его нет, неужели ты весь класс параметризовал? Если так (пик 1), то по смыслу получается что у тебя HR менеджер всегда только к одному типу работников принадлежит. И использовать его можно только сырым, без параметра, т.к. если добавишь параметр (пик 2), то не сможешь пользоваться методом вообще. Заебался объяснять, в общем корректный вариант это пик 3.
Спасибо, анон. Я знал, что тут дадут хороший совет.
Не, ща просто в каждой конференции должна быть тян, афро, азиат и т.п., посмотри любую презинтацию эпл или любые конфы международного уровня. JPoint (наряду с joker) это топ конфа в Раше по джаве и они стараются соответствовать
Ну и я не исключаю, что она любит матан))
вроде да, 30лвл молодой же еще, че себя в деды записал?
Ох уж эти универские задачки по ООП. Не имеют никакого отношения к реальной разработке.
Почему не имеет? Была простыня из 4 методов, стал 1 метод. Это же более читаемый и гибкий код, разве нет?
T extends OfficeWorker как-то так примерно.
одно другому не мешает
Они заебали. Ладно бы в жс, но у нас(!). А это еще и скалистка. Мерзость.
Я их панически боюсь. Наверное, готов работать за втрое меньшую зп каким-нибудь байтоебом в НИИ, лишь бы там не было женщин, которые пугают меня до смерти.
У нас процентов 15%, если прикинуть. Это среди кодеров. Среди тестеров/аналитиков больше.
Ну если среди кодеров 15%, то еще не страшно.
А то один знакомый шарпист рассказывал, что у него в команде прям очень много тян, чуть ли не больше половины.
Хотя наверное ко всему можно привыкнуть и научиться с людьми общаться тоже.
Среди аналитиков и тестировщиков много тянек, в программистах вообще нет. Но с аналитикой и тестированием каждый день общаешься.
Нет, просто с презрением смотреть на хипстеров-нитакихкакфсе
так вот Идея создала мне форму (фото ниже) та которая меньше, а на курсе показывали то что больше
так вот в чем разница и что лучше?
>>706434
Различающаяся часть (не учитывая автоскан) называется xml-namespaces - xmlns. Для спринга абсолютно пофиг что там прописано, скорее всего и на голом <beans> без аттрибутов все заработает, проверь. А нужны неймспейсы для автоматической валидации xml документа, т.е. редактор кода - в данном случае IDEA - при помощи неймспейсов знает какие элементы и с какими аттрибутами могут включаться в другие элементы, может подсвечивать ошибки и предлагать автодополнения и подсказки по ctrl+space. Неймспейсов существует уйма, по количеству модулей как минимум, см. пример.
>>>1706441
>без аттрибутов все заработает, проверь.
не прокатило
ну в общем я понял, огромное спасибо. так мне стоит знать что каждая из них значит? и вообще сейчас в разработке на спринге все еще юзают xml? нужно ли углубляться в это?
хехехехехе
тогда подскажи еще пожалуйста вкратце какие привилегии в работе со спрингом есть у ультиматки?
>не прокатило
Ага, проверил, действительно не работает. По тексту ошибки - внутренний XML парсер ругается на невалидный XML. Ну, он слишком придирается, можно и так работать, но на самом деле приятно - спринг, как всегда, качественно выполняет свою работу.
>так мне стоит знать что каждая из них значит?
Выходит что стоит. Точнее, тебе нужно знать из какого неймспейса берется тот или иной элемент, и если такого ns нет в описании, то добавлять. В гайдах обычно прилагается нужный xml с аттрибутами всегда.
>сейчас в разработке на спринге все еще юзают xml
Комбинируют. В XML ты указываешь бины и их свойства, которые ты хочешь вынести из кода. Такое аннотациями не сделать, либо выновить в свойства (проперти). Но свойства они для значений переменных, а чтоб именно класс бина нужный подгрузился это только XML. Можно велосипедить и с пропертями, кладя в них текст класса, а потом делать Class.forName, но зачем, ведь именно это и делается на моменте конфигурации контекста через XML. В общем - для каждой задачи свой инструмент. В больших приложениях часто все совмещено - и аннотации, и xml, и проперти файлы, и даже java конфиг (кодом).
>>706452
Мой скриншот.
>>706454
Не мой ответ. Да, у меня ультимейт 2018.3, я нищук. Не могу сказать чем точно отличается. В Коммьюнити отсутствуют некоторые вещи, предположительно (не проверял) это поддержка EE, всякие подключения к EE серверам/контейнерам, дополнительная поддержка спринга, поддержка фронтенда.
спасибо
>проперти файлы
на русском как в интернуте найти, чтоб почитать
может кто знает есть ли задачки или еще чтото по спрингу, а то теории много а на практике как применить для укрепления не знаю, может летература какая-то
>>Не на базовом уровне
Почитай про SOLID и наверни GoF паттерны.
>>чтобы полную картину и осознание
Мартина и Фаулера почитай
Properties - неспринговый стандартный (и морально устаревший, но еще дышит) джава класс для хранения данных в виде "ключ = значение", типа современного интерфейса Map. Позволяет не только хранить в памяти, но и сохранять/загружать с диска/на диск эти данные. Файлы, предназначенные для использования данным классом, обычно имеют расширение .properties. В спринге такие файлы используются например в аннотациях @PropertySource, @ConfigurationProperties, а в спрингбуте есть дефолтный файл application.properties. Ну вот по выделенным словам и можешь гуглить.
Жаба позорная.
>открываю linkedin
>пишу relocation software engineer
>индусы и diversity в описании компании
>2 звездочки в glassdoor
помогите я застрял в росии
Треды теперь реже тонут, мвп сделали бесконечным.
Плюнул тебе в ебало
Да, ресурс-бандлы работают на проперти файлах. Но этот класс можно использовать и напрямую:
Properties properties = new Properties();
properties.load(inputStream);
держи в курсе
Где задачки подрочить, чтобы с проверкой и с разделением по темам? Ну и чтоб комменты были. На кодварсе как то нет разделения. На степике очень мало заданий. Думаю закинуть 6к на год жабараша, правда говорят там даже лямбд нету.
В гуголь зааплайся.
Если хочешь сидеть в большой конторе и копаться в миллионах строк кода, написанных задолго до твоего прихода в айти, то можешь вкатываться, а иначе лучше что-то похайповей.
Вообще не актуален, мертвее только Perl.
или пробовать читать документацию на англиском https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/
просто там ничего не понятно и еще и на англиском
Вчера в комментах на степике нашел их.
https://hyperskill.org/knowledge-map
Буду дрочить пока. Надеюсь мой околонулевой инглишь не помешает.
Инглиш там очень легкий. Но мне кажется странным, что после изучения джавы они начинают тебя учить скале.
А что странного? Скала же jvm язык. Не нужна скала - не идешь до этого уровня. Я смотрел интервью скалиста и он вроде говорил, что для скалы нужно знать основы джавы.
Всё хорошее из скалы рано или поздно добавят в жабу, какая разница на чём учить общие концепты? Обмажешься там мапами флетмапами и потом Stream зайдёт на ура.
Также и с типами, акторами, иммутабельностью и прочими футурами.
Так это сайт жидбрейнс. Поэтому котик и отдельно.
Особого смысла задрачивать кор нет, это всё используется при реальной необходимости, а не просто так.
Но можно, например, написать на сырых сокетах свой недоHTTP-сервер или недоСУБД.
>>1709946
>>1709948
Все, кто не осилил виртуальные клавиатуры и пишет транслитом - долбоёбы.
7 лет опыта
Да тут половиной классов никто не пользуется, если не больше.
Кто хочет тесты по джаве пройти на сайте quizful у нас есть коллективный фейкоакк для треда
JavaDaun
2ch
Щас бы сравнивать божественные названия типа Buffered Input Stream, где все написано человеческим языком для людей, с fopen, которое придумывал какой-то скрипт-кидди, который буквы экономил.
Это всё легаси, в сишке действительно экономили на названиях из-за каких-то ограничений, не помню уже каких
576x720, 0:51
Вот решил искать новую работку, а везде Java Fullstack Developer. Spring/Angular/Java Script. Я весь этот веб-сегмент знаю поверсносто и вкатываться особого желания нет.
Но как-то выходит так что вся работа на рынке примерно в таком ключе сейчас и есть. Я как-то не так искал? Или сейчас альтернативы особо и нету? Просто немного "не моё это". Ну никогда я не любил особо Апач настраивать и всякие веб-приложения пилить. Неужто все остальное мертво?
Вообщем я думаю:
1) Начать всё это учить чтоб вкатиться как Fullstack Dev
2) Стоять на своём, и искать работу Java SE Destktop кодер
Как думаете?
Твои вкусы весьма специфичны... больной ублюдок))).
За последнее время я только одну серьезную высокооплачиваемую позицию для десктопов видел: ребята пишут софт - "сорт-оф-автоматизатор/автокликер" - по скриншотам экрана распознает объекты и кликает куда надо и другие штуки выполняет, в реалтайме само собой. Казалось бы зачем, когда есть Сикули. Но может они его авторы, я не интересовался особо. Зато я читал их тестовое задание: нужно по набору скриншотов покерного стола определять какие карты на столе и их области/координаты.
В общем, ниша у тебя действительно очень узкая. На Java сейчас пишут именно бекэнд. Не фулстэк, прошу заметить, можно найти позицию именно чистого бекэндщика, без JS и прочих ангуляров. В основном это и есть SE, только без свинга, ну и чучуть добавить EE, в основном это сервлеты и JPA, который ты вроде говоришь уже знаешь.
Самое простое для тебя - потратить 2-4 недели на книжку по спрингу и искать позицию на бекэнд, либо продолжай искать десктоп, но их прям очень мало.
1. А... ну тоесть мне не показалось. Таких позиций правда мало? Я думал может я гуглил где-то не там. Я не из рахи, так-то. Ввожу просто java в поиск вакансий, и там 100 объявлений Fullstack.
2. Backend это писать обычную серверную логику. Ну типа там начать транзакцию, что-то куда-то записать , роллбекнуться итп? Ну это я умею и собвенно у нас десктоп с таким примерно работал. Просто бекендом это никто не называл. Но вообще-то всем сейчас вроде нужен Fullstack. Я так понимаю эти пидоры хотят меня заставить верстать.
0. Да не вкусы у меня. Просто я всегда... ну с неким пренебрежением относился к веб-программированию в целом. Ну я с него начинал php+flash но потом быстро перекатился в обычное. Но ради бабок могу и CSS сверстать, хуле я не гордый. Или зазубрить какой-нибудь Spring.
Тоесть я правильн понимаю что java в 2020ом году почти что равнозначна вебразработки на Spring Framework? Никаких других ниш особо и нет чтоли?
Иронично.
>1
Да, не показалось. Я не знаю где ты сейчас работаешь, что вы там делаете на свинге, но в целом по рынку GUI на Java сейчас это сплошь веб-странички.
>2
Да, вытащить из очереди на RabbitMQ, преобразовать как-то, записать в бд - это бекэнд. Вытащить из бд, отдать юзеру - это бекэнд. Только не на форму, а в браузер. Вот я и думаю что ты с таким примерно уже работал, поэтому нужно только современную обвязку изучить.
Кстати Spring Framework это многоцелевой фреймворк, а не веб-фреймворк. Ты и свинговые приложения, и консольные на нем тоже можешь лепить. Попробуй, это удобно. Большинство позиций сейчас да, требуют спринг. А те кто не требуют пишут на чистом EE для какого-нибудь громоздкого аппликейшн сервера. Есть несколько фреймворков поменьше, например, от создателя Hibernate там какой-то есть, но им всем не тягаться со спрингом, и глубоко их учить смысла нет. А спринг это вообще сборище различных проектов: хибернейт, валидатор, джексон, сиджилиб, логбэк... Ты наверняка с какими-то работал, и вкатиться будет легче.
>java в 2020ом году почти что равнозначна вебразработки на Spring Framework
Я в дс почти ничего другого не видел. Один раз только встретилась какая-то контора, которая пилила какой-то анализатор кода или типо того, там спринга не было.
>>710546
Спасибо за разъяснение. Короче не показалось. И особо на другие вакансии расчитывать мне не стоит.
Всё таки как-то странно всё это. Java что, стала серверным языком в итоге, навроде PHO. Лол.
Эх... и как 10 лет прошло... даже не заметил. Вообще я никогда на яве работать особо не хотел, но просто место хорошее предложили. Даже и не знаю, стоит ли дальше с ней связываться. Я хоть с ней работал много, никогда всерьез становится java-программистом не собирался. даже и не знаю. Короче если становится то и правда надо начинать учить все эти angular/spring. Ну или уёбывать по добру по здорову (в юнити-гейдев).
>Java что, стала серверным языком в итоге
Именно так. Java апплеты из браузера выпилены давно, а на замену свингу пришел JavaFX, но особо не поменял ничего, вообще вакансий на него не видел ни разу. А вот на серверах Java очень хорошо зашла: надежна, предсказуема, кроссплатформенна. А еще Java есть в Андроиде, но надолго ли, это главный вопрос - после разбирательств за права гугол уже несколько лет там пилит свою отдельную ось-убийцу Андроида.
Хочешь продолжать заниматься десктопом - твой путь лежит в си шарп или дельфи (не шутка, там свои преимущества типа собственной библиотеки компонент). Если по ветке си шарпа пойти то преимущества следующие: очень похож на Java и тоже работает в managed-среде; можно говнокодить на юнити как ты хочешь. У серьезного десктопа есть еще третий путь - c++, но это для вката не подойдет, высокий порог.
Ах, точно. Android Dev это единственное что видел кроме backend/fullstack ваканский.
Собвенно откуда столько вакансий на серверный код? Что им всем нужно? По сути это просто люди которые пишут сайт для каких-то компаний? Вроде например заказа полётов, или какой-то веб-магазин или система документооборота. Тупо чтоб сайт работал и пользователи могли логинется и производить какие-то дейтвия вроде пополнения баланса? В итоге за всеми этими вакансиями это стоит?
А на c# какие типичные вакансии? Там не только серверный код писать? Ну я где работал писал на яве некое подобие редактора векторной графики. Обычное десктопное приложение по сути. Ну оно умело PDFки для печати создавать и хранить данные в hibernate. Так как куча клиентов хотела удалённо работать. Ну обычное десктопное приложение-редкатор по сути. Неужто такое особо нигде сейчас не нужно? Может на шарпе это восстребовано?
>Стоять на своём, и искать работу Java SE Destktop кодер
Ну это вообще пушка.
>Начать всё это учить чтоб вкатиться как Fullstack Dev
Основы понимать нужно обязательно.
Фронт можно и не трогать особо. REST-хуест API-шку набрасать для для JS-макак, например, а дальше пускай сами веселятся со своим реактом.
>>710516
>java в 2020ом году почти что равнозначна вебразработки на Spring Framework?
Spring - это не только ценный мех вэбразработка. Spring - это в первую очередь DI, который оказался настолько удобным и популярным, что понаписали обвязку ко всему чему только можно. Шлёпнул @Component, вставил @Autowired. Лепота!
>Никаких других ниш особо и нет чтоли?
Почему же . Например, финансовый сектор (HFT, биржи), Big Data там всякая.
Плюс со статиком не нарвёшься на проблемы с циклическими зависимостями.
>>сайт для каких-то компаний? Вроде например заказа полётов, или какой-то веб-магазин или система документооборота. Тупо чтоб сайт работал и пользователи могли логинется и производить какие-то дейтвия вроде пополнения баланса?
Вроде того - страховые, банки, сервера для онлайн дрочилен. Иногда переписывают внезапно выросший сайт с какого-нибудь питона.
>>Ну я где работал писал на яве некое подобие редактора векторной графики
>>Неужто такое особо нигде сейчас не нужно?
Сейчас все переносится в веб. Такая же прога - в онлайне будет востребована. Ничего не нужно устанавливать, легко обновлять легко монетизировать продавая доступ
Статики тестить сложно. Смена логики может все переебать и повалится 500 тестов, вместо 2-3. Что исправлять не понятно.
>>не нарвёшься на проблемы с циклическими зависимостями.
IDE тебе скажет о циклической зависимости, хотя спринг и с циклической зависимостью работать может.
>Spring - это в первую очередь DI
Я не согласен. Spring - это в первую очередь экосистема на все случаи жизни. Ради DI он нахуй не впёрся. Я лучше возьму какую-нибудь легковесную либку типа джуса, если мне нужен DI.
Исторически - в первую очередь DI. Остальное уже "само" наросло.
>Я лучше возьму
Бери. Всем похуй.
2. DI этож просто замена зашитой переменной на ссылку, если простым языком. Лол, ради этого точно надо 10гб джарок в проект добавлять? Не проще тупо функции аргумент добавить, ради такой архи-сложной задачи?
бля, опять ютюб смотреть
Это такой же манямирок, как заранее делать все поля приватными и генерить к ним геттеры и сеттеры из веры "бля буду, там появится логика".
вот никогда не смогу понять, что за цирк с этим в джаве - нельзя напрямую к переменным обращаться, ибо аряяя приватность, но при этом никто никогда не делает логику в гет/сет методах. Нахуй тогда это всё нужно?
тимлид в щелку коммита заглядывает, спрашивает, что я ебанутый, что я там делаю. Посыпает все бины гет/сет методами, говорит "я так делаю, и ты так делай"
Куча библиотек/фреймворков смотрит именно на названия методов, ломать это поведение небезопасно. Но если обрабатывать данные сам, то мог бы и публик сделать, а хуй, не принято.
Зато можно делать методы без реальных полей и вычислять значения на лету.
>Не проще тупо функции аргумент добавить
Нет. Мне надо 10 бинов заинджектить. Пробрасывать 10 параметров не собираюсь.
Стань тим-лидом, хули.
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.
Че делать?
Но мне в курсе сказали учить,без этого говна я не смогу получить сертификат
Тогда качай идею.
Ну или можем вместе на 15 вопросов по FX ответить и я забью на это дело и тебе котика скину
А аннотация чтоли как "find/replace" тупо по имени инджектит локальную переменную как ты в xml укажешь? Пробрасывать аргументы через 10 фунцкий я тоже не люблю.
Я выполнил,но что-то все равно идет не так
Фанатский решейд второго котора,сам пока первый только устанавливаю
И последний сезон Войн Клонов
Ну если ты щелчок мыши как moved написал, то я не знаю. Прочти книжку гослинга по джаве 1.0.2 хотя бы.
Друг,я там выставлял рандомные значения потому что тест не давал перелистнуть страницу пока я не проставлю ответы
От бекграунда всё зависит же. Раз две недели на даунские задачи, то наверняка курс для тех, кто в кодинг как таковой вкатился недавно. Если уже кодил на чём-то, то долго сидеть на знакомых темах смысла нет.
Работал в компании около года по направлению Java/Spring. В момент начала "самоизоляции" и прочих прелестей компания сказала идти нахуй. Пошел собеседоваться, а меня на первом же почти послали, мол хуево отвечал. Вот и призадумался, почти год так или иначе пилил эти ваши spring-сервисы/репозитории/контроллеры, но базового знания самого спринга не чувствую (тот же DI вроде понимаю зачем, но необходимости на проектах в нем жуткой не видел). На собесах постоянно спрашивают что-то по многопоточке, в которой я тока теорию издали знаю, а вопросы там такие, будто я этот год тока многопоточкой и занимался.
По итогу хочется узнать, что должен знать jun/mid разраб, как именно тестить себя в навыках и что почитать (философия Java и Spring in Action читал) или пописать.
А казалось бы в ДС-2 найти работу прогером не так сложно...
Читать заумные талмуды на 1000+ страниц жутко скучно, я когда вкатывался тоже задачки решал. Пытался решать сам, потом смотрел как надо, попутно гуглил всё, что не понимал. И по разному получалось, мог за день решить много, а потом начать гуглить одну и читать про что-то несколько дней.
>разжёвывая по сто раз
Я всегда вникаю в смысл до тех пор, пока полностью не пойму что и как делать надо. Не просто запоминаю алгоритм, а чтоб именно понять чё как и почему. Если надо то и 100 раз буду перечитывать.
Тебе как удобнее так и делай. Главное, чтоб не получилось, что вот это ты вроде понял, а чуть поменять условия и ты жидко дрищешь под себя.
Нихуя не понял что ты понаписал. Шлёпнул @Component на бин, а в нужном месте заинджектил в поле через @Autowired.
Надо с использованием этого проекта описать метод, который строит двоичное дерево, в котором N полных уровней и на
каждом уровне i располагаются узлы, информационные части которых равны i.
Разумеется не бесплатно
кого заинтересовало - пишите в telegram @alexanderstud
> джава 1.5
Бля, я по приколу переключался на древние коммиты десятилетней давности, и там без спринга реально большинство классов с бизнес-логикой каждый раз создавались через new. А вместо ApplicationContext был огромный класс с кучей полей static, и они инициализировались при старте сервера вручную. Что там @Autowired - даже @EJB и @Inject не было.
Для этого есть AbstractTestNGSpringContextTests.
Ты написал вэб приложение. Его надо сделать доступным пользователю. Твои действия?
Как ответишь, подумай что будешь делать, когда нагрузка пиково вырастет в сотни раз, т.к. маркетологи нагоняют трафик как могут.
Незачем, разраб всё на локалхосте разворачивает.
>Нахуй вы так вообще на DI дрочите? На случай если вдруг в вашем же приложении ВНЕЗАПНО надо будет декаплануть какой-то объект? Ну так когда понадобиться тогда и отцепите, хуле. Зачем заранее везде DI делать? Какой юз-кейс у всех этих танцев с DI?
Ну например, чтобы не протаскивать везде зависимости которые конкретному бину не нужны.
Например у тебя есть бин ЗалупаКонтроллер, который использует ЗалупаСервис, который использует ЗалупаДао. Если создавать зависимлсти внутри ЗалупаКонтроллер, то тебе надо будет передавать туда ДатаСорс только для того, чтобы он прокинул его в ЗалупаСервис, а тот в ЗалупаДао, а тот еще что-то там создал. И ЗалупаДао будет создан в нескольких экземплярах.
Можно заморочиться и сделать все кодом в майне, но тогда надо руками отслеживать все зависимости и порядок инициализации. Если бинов больше 10 - то будет не код, а каша. А если ты его захочешь что-то то вызывать на пост-инит, то веселье удваивается.
1168x908, 0:32
>Если создавать зависимлсти внутри ЗалупаКонтроллер, то тебе надо будет передавать туда ДатаСорс только для того
Мне лет 10 все интернеты прям кричали что это правильно. А нарушать инкапсуляцию сайд-эффектами плоохо. И вон как теперь запели.
Ну спасибо за разьяснение. Может он на практике "проще быстрей лень ебаться". Просто на десктопе никогда не юзал да и среда там не настолько распредленная, хотя один сервис был с ебучими сертификатами.
Возможно DI это ответ на типовую задачу которая всех заебала в бекенде.
У клина отдельный lifecycle со своими фазами, и автоматически он не запустится, если не указан.
https://stackoverflow.com/questions/6018701/how-is-mvn-clean-install-different-from-mvn-install
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
а ты шо думал? в сказку попал? мавен - это тест на минимально необходимый интеллект, чтобы работать на божественной жабе, в которой WHEN CODED WELL IT IS VERY FAST.
алсо
не юзаешь мавен - значит пидор
Опа, а я думал site вместе с deploy идет, спасибо.
Актуальная ли там информация?
Да, там тысяча+ страниц отборной нудятины, ты её 100% дропнешь нахуй и одним вкатывальщиком станет меньше.
Внатуре!
Ну я немного не то имел ввиду. Вот есть у меня класс @Value class Something { String description }, и есть Json {"description": "..."}, так вот, есть ли такая тулза, которая сгенерирует : var something = new Something("...");, на основании данного json? Естественно предполагаются очень большие json со списками и внутренними объектами.
Jackson object mapper, gson.
В спринг буте да.
Ну а что, это хорошая стабильная работа.
Если бы не распад, сидели бы сейчас на коболе, бэкенд госплана писали.
Ну, как вариант, ещё могли быть ФОРТРАН и АЛГОЛ.
Статичные штуки общие для всех объектов класса. Поэтому их можно вызывать и без создания объекта, типа MyClass.myStaticMethod()
А поля static final лучше, чем просто final, потому что их не нужно инициализировать при каждом новом инстансе, а они получат значение при первом же обращении к этому классу в коде. Да?
Обращение к ним не берем, допустим они private.
хз
Наверное, как-то так (если не так, то сорян, xslt впервые увидел 15 минут назад):
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<entries>
<xsl:for-each select="entries/entry">
<xsl:element name="entry">
<xsl:attribute name="field">
<xsl:value-of select="field" />
</xsl:attribute>
<xsl:apply-templates select="entries" />
</xsl:element>
</xsl:for-each>
</entries>
</xsl:template>
</xsl:stylesheet>
https://youtu.be/oNiOUiAS70w
Реальные девелоперы тут писали о любви к чекед эксепшенам? Нет? Вот и пошел нахуй.
Кто их любит? Их ненавидят ВСЕ. Давно поря задепрекейтить Exception и юзать RuntimeException. Хорошо хоть в котлине их нет.
От Error.
Integer b = 13;
b = Math.pow(b.DoubleValue(), 2.0).IntegerValue();
Math.pow(b, 2) в таком случае не будет работать. Приходится тоже (int) добавлять.
>.IntegerValue();
Где ты вообще это взял? Есть метод intValue у Integer. У тебя метод возвращает примитив double
b = Double.valueOf(Math.pow(b.doubleValue(), 2.0)).intValue();
Впервые за несколько месяцев открыл галерею ЛОРа, увидел этот скрин, зашёл сюда, и опять он. ШОК.
В глаз. Ну или в попу раз, но это с джаваскриптом перепутали.
Можете пруфами развенчать эти мифы? Хочется разобраться для себя, действительно ли джава тормозная, будет ли тормознее скала или кложурь (потому что жвм же) и так далее. Что годного можно почитать на эту тему?
Джава - это не медленно. Медленный только старт жвм. Памяти конечно нужно больше. Паузы зависят от сборщика мусора. Современные сборщики быстрые. Есть такие, у которых вообще пауз нет.
Пруфов не будет, ищи сам.
Скорее на третьем.
Пет-проекты были, но на них всем похуй. Делал тестовое, сделал. На собесе решал задачки, решил.
Вилку дали без дырки, а я и не против.
Ещё и квадрипл, ух бля.
Неиронку начал писать - ахуел от того, как не похуй. Иногда скачиваю новые приложения в плей маркете, элементарно фризят на пустом месте на моем OnePlus6, и просто на них забиваю, так как скляпанное за пол часа макаками говно жрать не особо хочется. Хотя не факт, что его на жабе писали, но такой подход не нравится, лично сам хотел бы писать качественный код, а не курица лапой.
Да это зумеры на котлине сваяли.
Так юзай правильные инструменты.
Или ты берёшь ложку и удивляешься, что хлеб хуёво режется? Жаба это энтерпрайз, банкам похуй на твои нейронки, тут легаси говно и обратная совместимость в приоритете.
Давайте, какую мне либу написать?
Прям как пхп.
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
Почему не работает?
Десктоп не нужен.
>Maven используй
Это шутка щас была?
Кто-то на полном серьёзе не использует его в 2020?
Может ещё и код не в среде пишет?
Так я его и использую.
Слишком непохипстерски, дитё?
ну вимоклоуны, например, в среде не пишут, у них консольное лялиховое говно прямо из восьмидесятых.
Добавил зависимости в мавен, добавил этот файл module-info.java. Почему эта ошибка?
java.lang.module.ResolutionException: Modules spring.jcl and commons.logging export package org.apache.commons.logging.impl to module j2objc.annotations
Без файла modul-info.java работает.
Мавеном бы подрубил фх и не мучался в зад.
>Хочешь сделать ГУИ. Добавляешь зависимости в мавен. Не работает иди нахуй. Гуглишь. Оказывается что-то там куда-то не может получить доступ. Создай module-info.java и пропиши там эти модули JavaFX
Пиздабол.
>>712592
Запускай приложение с classpath а не модулями.
>Добавил (...) не работает
>Без файла (...) работает
Я с модулями не работал, пусть другие подсказывают, но тут смело можно предположить, что либо внутри файла что-то некорректно прописано, либо файл не там лежит где нужно. Найди еще примеры таких файлов, сравни со своим. Значение может иметь любая запятая, точка, скобка - внимательно все сравни. Отдельное внимание удели путям на диске или именам пакетов, может там откуда ты файл копируешь написано com.example.TestClass, а ты выебнулся и у себя создал ru.vasya.TestClass.
Это не пердолинг, а первоначальная настройка энвайронмента. Именно для этого был придуман мавен с архитипами. Тут проблема скорее в том что JavaFX это мертворожденное поделие и никому не надо его поддерживать или что-то на нем писать, т.е. коммьюнити чисто JavaFX очень мало тебе крупно повезет, если ты найдешь специалиста здесь; а если он еще и ответит тебе - ваще джекпот.
>pip, make и npm
Внутри они наверняка сложнее мавена. Хотя мавен внутри наверно охуеть вообще какой сложный.
аряя ваша джава легаси говно
Что там сложного? Нужные депенденси в репозиториях искать сложно?
ctrl c + ctrl v нажимать?
Или ты вайтишник и никогда XML и подобные форматы не видел?
Нет ты. Я просто добавил в пом две зависимости для 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. Я добавил, но после того стала вылетать ошибка с которой я начал.
Поясните пожалуйста для чего используются интерфейсы. Я вроде понимаю (для того чтобы в них писать универсальные методы?) а вроде и нет.
>Гуглинг показал, что надо добавить файл modul-info.java. Я добавил, но после того стала вылетать ошибка с которой я начал.
Пиздабол.
Это одна из реализаций полиморфизма. Допустим, ты хочешь, чтобы у тебя какой-то метод принимал разные типы и с ними работал, и с этими типами ты работаешь через их методы. И вместо того, чтобы писать десяток копий одного метода с одинаковым телом, но разными типами параметров, ты указываешь один интерфейс, в котором указано, какие методы должен реализовывать тип. Ну и передаёшь.
Чтобы написать только один метод вместо нескольких одинаковых. К тому же с перегрузкой придётся для каждого нового типа этот метод писать заново.
Если я тебе покажу pom-ник и main проекта на фуфыксе без модуле-инфо ты признаешь, что ты лох итт?
Бобра
Какие тут аргументы и доказательства? Я их не осилил, значит, не нужны.
Я не тот анон с javafx
Я не шарю но по английски написано что класс Employee не замапен.Not mapped. Мапай его.
нет
100% что нет
https://stackoverflow.com/questions/51462345/hibernate-cannot-resolve-table-in-entity-class/51462562
я вот что нашел но вроде у меня все так но все равно то же дерьмо
Так, окей, я немного потыкал модули. Возможно, нужны. Хз правда, как они уживутся с мавеном, у которого свои модули, да и версионирования как в мавене нет.
>>717840
Можно разбить код большого приложения на несколько взаимозависимых модулей, у каждого наружу будет торчать api, внутри будет impl. Код получается более структурированный и менее связанный. Своего рода инкапсуляция. Будет несколько небольших жарников/варников, которые можно деплоить отдельно, вместо одного большого, Но это всё в теории.
И что? Я скопировал и не работает нихуя.
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
Что ты на это скажешь?
Чтобы ты не подумал, что я пиздабол. Просто руки нахуй опускаются.
Ясен хуй. Только JavaFXне работает.
Отлично. Все для людей нахуй. Никакого пердолинга. Не работает, значит тебе не надо.
Не нужен.
А что есть разница для 11?
Блять. Ты заебал. Модешь нормально сказать что к чему? Работало с пусто сценой. Стоило добавить загрузку из fxml и перестало. Перестало, потому что там стал вызываться этот ебаный FXMLloader из-за которого надо стало добавлять этот modul-info.java из-за которого все сломалось.
А модули вообще удали. Я не знаю, что ты там нахуевертил, хоть заново проект создай на мавене без них.
Ну бляяяяяя...
[ERROR] Could not find goal 'compile' in plugin org.openjfx:javafx-maven-plugin:0.0.4 among available goals jlink, run -> [Help 1]
Ну почему все так сложно. Почему все через жопу. Почему ничего не работает?
У менч нету никаких модулей. Я еще раз говорю. Этот модуль FXMLLoader не может получить доступ к Контрол. Это не работает без файла modul-info.java.
Я создавал новый проект, все то же.
>:0.0.4
Анахуй ты на 0.0.4 поменял? Я тебе для 0.0.3 показывал! Куда ручонками лезешь своими? в 0.0.4 надо
mvn clean //вытереть жопу
mvn compile && mvn javafx:run
Ну вернул 003, перезапустил и... сосу хуи
[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
Там в конце написано, что версия джавы не та.
Ты весь день не мог прочесть, что надо запускать плагином, а не просто тыкать main
Не нужен тебе дииплом.
Блять, это не мой диплом. Не спрашивай почему так называется. Но, во-первых,все работало нормально и через запуск через идею.
Во-вторых, что значит версия не та? какого хуя?
Теперь вот это дерьмо:
Ну за что?! Почему?! Ненавижу, суука!
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
Если долго мучиться - что-нибудь получится.
Иче?
>Можно разбить код большого приложения на несколько взаимозависимых модулей, у каждого наружу будет торчать api, внутри будет impl. Код получается более структурированный и менее связанный. Своего рода инкапсуляция. Будет несколько небольших жарников/варников, которые можно деплоить отдельно, вместо одного большого, Но это всё в теории.
Не неси хуйни, тут речь про Jigsaw. Который хуйня. Но ничего сложного там нет.
Да.
Ну, мне кажется, что бд должна лишь хранить сырые данные, а обрабатывать их представление только в коде, чтобы не расплющивать логику.
Нормально, если юзать самые общие оконные/агрегатные функции, встроенные в СУБД. Плохо - когда начинаешь писать хранимые процедуры с бизнес-логикой.
Так и думал, спасибо.
Да. Принципы ACID, уровни изоляции, всё такое. Ещё нужно знать особенности спрингового @Transactional.
Запили пример эндпойнта, который ты бы использовал для клонирования сущности.
я-не-он-я-просто-мимо-крокодил
POST /api/users/123/clone
Location: https://example.com/api/users/777
Как уже сказали выше, для остальных операций оспользуй 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"}
>Сомнительные HTTP-коды не нужны
Тут действительно стандарта нет, есть две схемы - использовать http коды или обходиться кодами только в пейлоаде. Выполнил по фасту квик сюрвей, результаты:
1) тумблр: 201 Created и другие коды
2) слак: похоже, везде 200 и коды только в пейлоаде
3) твиттер: 201 нет, но какое разнообразие кодов ошибок
>Локейшн не нужен
Не нужен. Но так принято. Почти всегда в теле будет нужный ресурс с его id. Но если тело просто не нужно, например, вебстраница тут же сделает редирект, то можно одним локейшеном обойтись. Но в наше время уже не принято экономить на теле ресурса, несолидно.
Ты не можешь переопределить статический метод, у тебя каша в голове.
Переопределение - это обязательно новый инстанс метод. Инстанс метод переопределяет другой инстанс метод. Но инстанс метод не переопределяет статик метод (пикрил 1).
А то, что ты наверняка имелл ввиду под "переопределением статического метода" - объявление нового статического метода с тем же именем в потомке, не является переопределением, не использует полиморфизм (пикрил 2), и вполне безопасно и допустимо.
Когда уже в джаве задепрекейтят наследование классов, чтобы не нужно было учить хуйню наподобие этой чисто ради собесов?
Надо вообще убрать к хуям ООП, скобки, code conventions, чтобы было просто полотно кода через ; и всё с маленькой буквы.
И в одном файле ещё.
Хотел узнать, зачем это нужно. Переопределенные методы можно вызывать ссылкой на базовый класс. Статические же будут вызываться в таком случае всегда из базового класса. Получается, просто для красоты сделано, а какой-нибуть недо-макакер вроде меня может допустить ошибку на пустом месте. Хотя, java в этом плане все равно лучше c++, не делается 1 действие 10 разными способами.
Статические методы не положено вызывать на объекте класса, это bad, terrible practice. На пикрил 2 в >>719067 я показал что так можно сделать и будет вызван метод типа ссылки, а не типа реального объекта. Но так делать никогда не нужно. Статические методы всегда нужно вызывать на самом классе, тогда и не будет путаницы: Def.a(), Abc.a().
Сравни строки 1597 и 1598 на пикриле 1. Результат будет один и тот же, но семантически выражение в 97 не имеет смысла: нельзя получить абсолютную дату (данным методом) из относительной текущей. Поэтому статические методы и вызываются на классе и принадлежат классу а не объекту - они делают какие-то общие штуки, не относящиеся к конкретному инстансу класса. А вводить новый статический метод в классе-потомке может быть нужно чтобы переопределить логику старого метода, напр. пикрил 2.
Ок, спасибо за пояснение.
Нет джавы кроме хотспота!
Ну это перекрытие метода, а не оверрайд.
карантин пока не сняли, так что держимся
Сериализуют обычно в JSON или XML. На ObjectOutputStream и подобное всем пох, потому что он языкозависим.
Посоны, вместо мурзилки metanit лучше читать это:
http://firststeps.ru/java/java1.html
Эту ссылку нужно добавить в шапку, я считаю.
Не переходите, там вирус.
>2003 год
>Устанавливаем JVM 1.2 настройками в реестре и перемещениями DLL на диске
Понравилось, я беру. Артем, а по спрингу у тебя есть что-то похожее?
И в XML Jackson. И в YAML тоже.
Он врет, у boolean нет четкого размера.
Типичная задача: получить данные (1), обработать (2), записать куда-то (3), потом выдавать по требованию (4).
Формат: микросервис.
Наш воркфлоу обычно такой: компоненты 1, 2 и 3 (предполагается что они достаточно большие) выносим в отдельные артефакты; они ничего не знают друг о друге, обеспечивая loose coupling еще на этапе архитектуры. Каждый артефакт разрабатывается отдельно, вплоть до того что разные команды могут писать разные артефакты одной системы (это уже не начинает выглядеть как микросервис, но не придерайтесь, речь не про это). Артефакт содержит свои классы, выставляет апи наружу, имеет возможность конфигурации извне, собственные тесты, иногда метод main, что позволяет его использовать как консольную утилиту. Артефакты устанавливаются в приватный мавен репозиторий. Далее спринг-бут приложение (4), в депенденси три артифакта, создаем контроллер, связываем все быстренько. Компонент (3) проектируется как I/O, позволяя не только записывать, но и доставать данные для выдачи в (4). Поддержка такого приложения: апдейтим компоненты 1/2/3, перекомпиливаем, перепаковываем, устанавливаем в репо, в основном приложении апдейтим версию измененнго артифакта и перепаковываем.
Вопрос: нам стоит перейти на модули?
Так вот у нас как раз и получается что компоненты это типа либы, но они редко когда используются более чем в одном проекте.
Я поэтому и написал про общее пользование. Типа JUnit, или Апаче коммонс. Если это только для своих проектов, то смысла нет.
Оукей, благодарю
Спасибо, я в курсе.
Ты точно выбрал не тот язык, чтобы писать либы, и за полгода вопросов "чёбнаписать" уже можно было это понять. Здесь реально написано вообще всё, сиди да пиши бизнес-логику,
Лучше возьми какой-нибудь Rust, где с либами всё действительно плохо.
>Здесь реально написано вообще всё
И что? Это не повод не писать ничего нового. То, что уже написано может быть неудобным, неэффективным и т.д. Есть вещи, которые уже не переплюнуть, например AssertJ, но это все же редкость.
> То, что уже написано может быть неудобным, неэффективным и т.д.
У тебя есть конкретные примеры? Если да, тогда в чём вопрос? Бери любой и улучшай. От этого пользы намного больше, чем решать несуществующие проблемы и в очередной раз писать рейтрейсеры/крестики-нолики/строковые шаблоны./идентиконы.
>У тебя есть конкретные примеры? Если да, тогда в чём вопрос?
Нет, но я и не знаю абсолютно все существующие библиотеки и их проблемы. Для тех задач, которые я обычно решаю, все уже нормально написано.
Большинство уже всё устраивает.
Вообще, у меня появилась идея. Поищи крупные опенсорсне проекты на джаве и:
- почитай их багтрекер, вдруг появятся идеи
- поищи классы-утилиты, их обычно пишут как раз из-за недостающих либ.
Но вряд ли там можно достаточно наскрести для полноценной либы.
Ааа, кажется, понял, эта ебала нужна только для того, чтобы вернуть ссылку в первоначальный вид?
Да. В идеале такое допускать не следует, ибо не типобезопасно, да и код, принимающий предка, ничего не должен знать о свойствах потомков. Но в реальности всем похуй.
Про какой-то сакральный смысл подумал, хотя логично, что будет дырка в памяти, если сделать Child c = (Child) new Parent(); Кароч надо спать идти, как всегда начал ночью учить.
По той же причине, по которой нельзя записать:
Б б = new А();
В Б есть поля, которых нет в А. Чем их инициализировать, если есть значения только для полей из А? Можно было бы инициализировать дефолтными null/0/false, но более вероятно, что кодер ошибся, чем реально этого хотел.
Мда уж, а я думал, что логичнее возвращать более общий объект.. Вроде бы год уже учу, а элементарные вещи иногда недопонимаю. Спасибо.
Почитай внимательно super и extends в generics. Похожая ситуация.
Сап java господа.
Хочу написать метод для коробки class Box который будет выдавать оставшееся место после того я с помощью метода положу туда какую-нибудь форму например цилиндр или шар.
Объемы шара и цилиндра у меня есть. Но есть одна проблема. Метод коробки putInTheBox не хочеть принимать объект. Говорит что это не статический контент. Если текст метода поместить в main то все получается, но когда я запускаю метод происходит ошибка. Я новичок и не совсем понимаю, что я делаю не так. Но я знаю что не хочу в main держать ничего кроме вызова метода.
public double putInTheBox(Shape volume){
spaceAvailable = spaceAvailable - Shape.volume;
return spaceAvailable;
}
Твоя проблема скорее всего в следующем. Ты не стал для классов коробки и цилиндра делать отдельные файлы, а зафигачил их "внутренними классами", причем не указал для них модификатор static.
Привет бумерам. Винертон говорит что джава это для ООП макак. https://youtu.be/zqxVI_kEdq8?t=833
Ну да. Только не библиотека а твой пакет. Библиотека это cборник уже готовых классов общего пользования.
Закрыл прям на твое ебало.
Ок, спасибо.
Вот пример лога, высравшего исключения в файлах:
>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.
Исходники на джаве из java-файлов компилируются в байткод в виде class-файлов. Можно декомпилировать с помощью какого-ниубдь jd-gui или аналога, результат намного более читаемый, чем ассемблерные листинги в плюсах, но названия переменных будут скорее всего похерены.
Попробую.
Вопрос на будущее: если удастся декомпилировать и исправить код, достаточно будет отдельно скомпилировать этот файл обратно в .class и засунуть в .jar? Или нужно будет все файлы из .jar доставать и компоновать их все вместе с помощью какой-нибудь утилиты для компиляции?
Думаю, заработает, но не пробовал. При компиляции (javac) нужно будет указать этот жарник, чтобы декомпилированный класс смог найти определения, которые он юзает.
Возможно нарушатся связи между файлами и тогда надо будет исправлять связанные файлы тоже. У меня мало опыта но это мне кажется очевидным.
В теории, да. Но на практике могут быть трудности.
Типа транзитных зависимостей которые отсутствуют в приложении с ленивой загрузкой классов, это нормальное явление
Плюс обсфуцированный код может не декомпилироваться нормально.
>Как правильно разделять логику модели и логику контроллера?
В общем случае твоя модель должна делать бизнес-логику вне зависимости от выбранного способа клиент-серверного взаимодействия.
Возьми свой аккаунт-сервис и представь, что завтра захотят добавить к нему веб-сервис, т.е. JAX-WS; после завтра захотят RESTfull API для SPA фронтенда, т.е. JAX-RS; после после завтра засунут в кластер и захотят инжектить в другие бины как JNDI-ресурс.
Та, общая для всех способов, функциональность, которую в итоге ты вынесешь в EJB-сервисный слой, и будет моделью; остальное — контроллерами. То же справедливо и для десктопных приложений; так же и для SPA.
>Пользователь отправляет данные в виде юзернейма, email и пароля. Я минимум должен проверить что эти поля не пустые иначе вернуть ошибку. Это я должен проверять в контроллере, верно?
Да, это валидация веб-формы, специфического способа клиент-серверного взаимодействия.
>После мне нужно проверить, что юзернейм не используется и почта не занята.
Это условия создания нового аккаунта, т.е. бизнес-логика данного приложения. Значит она уедет в сервисный слой. Обычно в случае нарушения условий из сервисного слоя кидают кастомные checked-exception-ы, которые затем обрабатываются в контроллерах.
ЛУЧШИЕ JAVA-ИГРЫ НА ТВОЙ ТЕЛЕФОН!!! ОТПРАВЬ SMS С КОДОМ 3031 ЧТОБЫ НАСЛАДИТЬСЯ ЛУЧШИМИ ХИТАМИ 2009!!!
Ну что стакан наполовину пустой или наполовину полный?
Я в детстве когда видел логотип джавы на мобильнике при запуске игры, даже не предполагал, что это учить буду.
Я тогда даже не думал стать кодером. И думал, что джава - это некий формат, чтобы делать игры для мобилок.
Ещё нужно было редактировать манифест, чтобы приложение было правильного разрешения и не спрашивало каждый раз, можно ли opera mini ходить в интернет, лол.
Зачем ты 410chan сюда реплицируешь?
Твоя будущая работа разбираться с этим.
Да, jd-gui сработал. Даже названия всех переменных сохранились. Осталось только в этом пиздеце разобраться...
Что значит опять? Я с жавой не имел ничего общего ранее. Алсо, это не майнкампф, это сервер для ЗБТ Аллодов Онлайн (v1.1 2009 года). Раньше писал только для себя сервера на Node.js для web-сайтов, тут же все как-то сложнее и иначе.
Вообще, не имел еще дела с такими громоздкими проектами. Даже боюсь, что потрачу дохера времени и не получу выхлопа/заброшу, но пока, вроде, интересно.
Вообще, интересно, как можно взять и написать сервер для закрытого проекта без исходников? Это напрямую связано с реверс инженерингом? Или есть способы проще?
Да, реверс-инжиниринг. Ну или утечки.
1. variable = 1;
2. B.variable = 1;
Если является, как лучше оформлять в коде? Если нет, то чем отличаются два вызова?
Вот вот. Напоминает Го, с его уебанским синтаксисом, как будто делали специально, лишь бы не как у других.
Потому что var - это вывод типов, а не дженерик или вариант. Компилятор выводит тип из инициализирующего значения. В качестве параметра метода он этого сделать не может, ведь заранее неизвестно, с каким типом он вызовется. А тип должен быть один конкретный, а не меняющийся от вызова к вызову.
Ты прав, но в 1 случае можно определить как static.
Понял.
Какого из?
Нет бы кусок кода сфотать или скопировать, нет, блядь, будем долго объяснять словами чтоб запутать сильнее. У тебя код под 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, но ты наверняка вызываешь, значит объяснил херово.
В общем, разбирайся сам, доброй ночи.
как открыть порты для троянов на белкине, надо замутить чат между двумя компами в локалке на яве.
Тогда это в документации роутера надо смотреть. Сама джава об этом ничего не знает, она просто юзает порт, если удалось подключиться. А если не удалось, ничего с этим поделать не может.
забей
https://github.com/adolfintel/WaifUPnP
Роутер должен поддерживать UPnP и он должен быть включен.
потому что в классе Color нет метода getName()
Метод getName() есть в классе Color$1, но константа RED имеет тип Color
Потому что ты тупой.
Значит, нужен абстрактный метод, спс.
Нет.
Там функция типа Object, те, это не переопределение на самом деле?
Похоже, ты путаешь override и overload. Ответь мне, что у тебя здесь происходит из этих двух?
Переопределение метода clone() интерфейса.
Мне не понятно, как работает слово super. Если бы мы обращались к области памяти суперкласса в нашем классе, то по идее, мы должны наткнуться на эту же функцию и зациклиться, так как мы ее переопределили. А тут получается, переопределили метод и вызвали метод интерфейса. Где в таком случае хранится метод?
У того анона сделано, чтоб Author. Это вроде неправильно, нужно всегда обжект и катовать потом.
Тогда если сделать подкласс у Author, и у него реализовать clone(), то придется возвращаемый тип менять.
>>722371
Ну вот, так намного понятнее, спасибо.
TL;DR: Всегда используют (1), никогда не используют (2).
Обращаться к полю log в данном контексте можно и так, и так - (1) и (2) полностью тождественны и взаимозаменяемы. Разница та же самая, как и с обычными не-статик полями класса: можно указать ключевое слово this, а можно не указывать (this.abc = 1). Соответственно, и применение такое же: если происходит shadowing - скрытие поля класса за локальной переменной при одинаковых именах - то используем уточняющий способ. Пик 1 и пик 2 соответственно примеры shadowing для разных случаев.
В случае с логгером ситуация еще более интересная: static + final поля это т.н. константы, а по контракту стиля константы во многих языках, и в Java в том числе, пишутся капсом (пик 3 из стандартной библиотеки). Но логгер это такое интересное исключение, когда люди хотят писать меньше, хоть это и константа. Поэтому тут не LOGGER, а короткое log, именно для юзабилити. Следовательно, обращаясь к логгеру через имя класса, ты руинишь данное юзабилити.
Понял, спасибо. А static переменные без final помечают префиксом "s_"? В смысле: это оговорено стандартом оформления? Или дело вкуса? Вообще, не понятно теперь только для чего все эти стандарты существуют, если каждый разработчик волен делать сотню другую своих исключений.
"s_" в статиках никогда не видел. Вот "m" (от слова "member") в инстанс полях класса ставят часто, например,
int time = mTime; // префикс в mTime указывает на то что это поле класса
Но лично я именно этого правила не придерживаюсь, мне кажется это лишним - во-первых, по-уродски выглядит, во-вторых, любая IDE все равно подсвечивает поле класса по-другому нежели обычную переменную. Единственный практичный юзкейс данного правила - это при написании имени поля начать писать его с "m" и автодополнение подсказывает тебе в первую очередь поля класса, т.к. они все начинаются с "m", и можно выбрать из списка. Так что да, у многих свои предпочтения, формируются с практикой.
Статики, к слову, вообще не часто используются. Это типа глобальный переменных, а глобальные переменные (в любых языках) любят новички, но совершенно не любят люди постарше. Вот хоть даже котлиниста спроси. В джаве статики подходят для хранения констант, и все. Хранить в статиках какое-либо состояние класса это bad practice, это делает класс сразу по-умолчанию не thread-safe и ограничивает применение. Многие сейчас вообще отходят от хранения состояния класса даже в обычных полях, это т.н. stateless классы и чистые функции.
>serialVersionUID
Я думаю это не исключение.
Сокращения принято писать с большой буквы же. А если написать всё капсом SERIALVERSIONURL получится хуита.
>>722545
>глобальные переменные любят новички
Удобно же. Забил в одном месте название какой-нибудь таблицы, например, и везде используешь, потом когда нужно поменять эту константу, то ты поменяешь её только в одном месте, а не везде.
Вероятность ошибки тоже снижается.
>потом когда нужно поменять эту константу
>константу
Я и сказал что константы это единственное безоговорочно-оправданное применение статиков. А с новичками не то. Они любят хранить в них состояние приложения, потому что это удобно. Я часто на ревью кода вижу такое:
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);
}
}
Теперь, если ты не новичок, попробуй объяснить почему это плохо.
Ну, наверное, как минимум, с точки зрения архитектуры неверно, что класс одного монстра знает какую-то информацию всех монстров.
мимо новичок, не бейте, если неправильно сказал
В плюсах же есть куча способов блокировки критических секций кода, когда дело касается работы с потоками. Неужели в java нет похожик механизмов? Если есть, то что плохого в использовании static'ов?
мимо
>Я часто на ревью кода вижу такое:
Это на работе так пишут или ты какие-то говнокурсы ведешь?
Всеми любимые собесы. Это кандидаты выполняют мое тестовое задание с использованием своих лучших практик ООП, пре-интервью (домашнее задание). Консольная игра, не интерактивная (запуск через command-line), с многопоточностью, да. Тестируется автоматически на ввод/вывод, а потом я еще код смотрю. В прошлом или позапрошлом месяце на хабре статья была "Кандидаты не умеют кодить" или что-то такое, в общем про то что людям даешь задание написать реально что-то и многие тут же сворачиваются в трубочку. Наблюдал лично не раз.
>>723013
Да
>>723015
Есть блокировки конечно же.
>>723025
>Такие константы - это по сути глобальные переменные. Со всеми вытекающими.
Вот этот анон понял идею.
Но я ожидал услышать больше)
Например, очевидное нарушение инкапсуляции в примере, но это видимо слишком очевидно и никто не стал упоминать. Но с этого следует начинать. Спрячем переменную за методом, получим статический метод.
Чем плохи статические методы?
1) Наследование. Не наследуются. А зачем? Ну вот хочу я в class DigDigMonster extends Monster тоже считать монстров, но уже подтипа. Не могу. А если я не просто их считаю, а в статик методе какая-то логика выполняется, то либо копировать код, либо выносить в отдельный метод - данные тут, обработка там. А если есть объект класса и нужно посчитать свой тип? Было бы неплохо вызывать метод прям на объекте... И тут мы изобрели ООП.
2) Тестирование. Не тестируются. Mockito не мокает статики принципиально. Другие либы мокают, но пострадает твоя совесть в энтерпрайзе не используются.
3) Класс-лоадеры. Вот тут наверное многие реально удивятся, кто считает что статик - это гарантированно уникальное поле. Берем второй класслоадер, загружаем класс, и Monster.count опять 0. Зачем второй класслоадер? В стандартном EE сервере в вакууме обычно несколько класслоадеров, каждый ответственнен за свой домен классов - пользовательские, системные. Не нужно гадать как именно твой класс загрузится двумя класслоадерами сразу, важно осознавать что такое в теории возможно и применять превентивные меры.
Всеми любимые собесы. Это кандидаты выполняют мое тестовое задание с использованием своих лучших практик ООП, пре-интервью (домашнее задание). Консольная игра, не интерактивная (запуск через command-line), с многопоточностью, да. Тестируется автоматически на ввод/вывод, а потом я еще код смотрю. В прошлом или позапрошлом месяце на хабре статья была "Кандидаты не умеют кодить" или что-то такое, в общем про то что людям даешь задание написать реально что-то и многие тут же сворачиваются в трубочку. Наблюдал лично не раз.
>>723013
Да
>>723015
Есть блокировки конечно же.
>>723025
>Такие константы - это по сути глобальные переменные. Со всеми вытекающими.
Вот этот анон понял идею.
Но я ожидал услышать больше)
Например, очевидное нарушение инкапсуляции в примере, но это видимо слишком очевидно и никто не стал упоминать. Но с этого следует начинать. Спрячем переменную за методом, получим статический метод.
Чем плохи статические методы?
1) Наследование. Не наследуются. А зачем? Ну вот хочу я в class DigDigMonster extends Monster тоже считать монстров, но уже подтипа. Не могу. А если я не просто их считаю, а в статик методе какая-то логика выполняется, то либо копировать код, либо выносить в отдельный метод - данные тут, обработка там. А если есть объект класса и нужно посчитать свой тип? Было бы неплохо вызывать метод прям на объекте... И тут мы изобрели ООП.
2) Тестирование. Не тестируются. Mockito не мокает статики принципиально. Другие либы мокают, но пострадает твоя совесть в энтерпрайзе не используются.
3) Класс-лоадеры. Вот тут наверное многие реально удивятся, кто считает что статик - это гарантированно уникальное поле. Берем второй класслоадер, загружаем класс, и Monster.count опять 0. Зачем второй класслоадер? В стандартном EE сервере в вакууме обычно несколько класслоадеров, каждый ответственнен за свой домен классов - пользовательские, системные. Не нужно гадать как именно твой класс загрузится двумя класслоадерами сразу, важно осознавать что такое в теории возможно и применять превентивные меры.
А в классах-утилитах делают статик методы. Даже популярные библиотеки апачей тому пример.
Такие классы делают, когда лень пилить ооп и паттерны?
Не лень, просто ООП плохо для такого подходит. ООП - это в первую очередь много однообразных данных. В утилитах данных, кроме констант, нет, и лучше всего здесь подошло бы процедурное программирование, но поскольку в жабе принудительное ООП и тупо нет функций, делается именно так, даже в стандартном java.lang.Math.
Важно, что статик методы в утилитах никак не влияют на глобальное состояние, они просто принимают одни объекты, что-то с ними делают, возможно, возвращают другие объекты. И в таком использовании проблем нет. Проблемы начинаются, когда статик методы начинают лезть в статик поля. Да и вообще, не-final статик поля - зло.
мимо
Назовёшь так поле, потом в спринге будешь писать SERIAL__VERSION__URL. С двумя __, да.
Уж лучше с маленькой, как в оригинале.
>>722985
Я новичок, не могу объяснить почему, но делать статическое поле изменяемым интуитивно мне кажется плохой затеей.
Статик методы/поля они ж доступны без инстанса класса. А какое тогда значение будет изменять count? Когда оно инициализируется? Что будет если несколько монстров создать?
А хуй знает.
Думать надо. А думать лишний раз мне лень.
Поэтому я бы не стал делать так.
В классах-утилитах статик методы это скорее функции.
А выше анон про методы классов расписывал и почему их там плохо использовать.
Это разное, короче. В первом у тебя просто универсальная штука, грубо говоря, как отвёртка, взял её, сделал что нужно где угодно и бросил обратно.
А во втором случае это электродрель и она наглухо приварена к столу (классу) и без него работать не будет. Вернее не должна, но кто-то её зачем-то сделал паблик, да ещё и статик. А значит найдётся ещё такой же дятел, который обязательно попробует.
>Назовёшь так поле, потом в спринге будешь писать SERIAL__VERSION__URL. С двумя __, да.
Че ты выдумал блядь?
Monster monster = Monster.createMonster(Type.LOVECRAFTIAN);
int count = Monster.totalCreated();
И че?
>А какое тогда значение будет изменять count? Когда оно инициализируется? Что будет если несколько монстров создать?
Иди в учебнике прочти про static. Когда оно инициализируется у него, охуеть вообще. У тебя ИДЕшка под рукой, иди проверь.
Да нахуй мне это надо? Создавать классы со статик полями и ещё изменять их потом, блядь, это шизофазия чистой воды.
Ещё и думать, что там получится в итоге, ахуеть!
Это не я выдумал.
В спринг дата _ это как /.
И если ты захочешь написать метод, например findbySERIAL__VERSION__URL, то надо будет второй андерскор ставить.
tldr code convetions не просто так написали.
Я тож так на собесе сказал и меня взяли.
Рекомендованные системные требования для твоей IDE подойдут.
Вот у intellij например 8 гб оперативы и ссд.
>В спринг дата _ это как /.
Нихуя не понял.
>И если ты захочешь написать метод, например findbySERIAL__VERSION__URL
Какой код по МКБ должен быть, чтобы захотеть такое?
значит окей всё будет, просто подумал, что вдруг там нужно по 200 гигов озу минимум
Ты такие охуевшие проги пока не сможешь в соло написать.
Хотя можно зациклить new Runnable -> охуенныйАлгоритмOn!(), чтоб забить озу в миг, но это уже приколы.
спасибо за ответы
НО КАК? Самый очевидный способ это через Враппер и переопределение GetWriter, чтоб он записывал все это в приватное поле и выдавал потом, но это как-то костыльно.
Есть идеи/мюсли, господа?
Хочу переслать ByteBuffer через UDP, нужно разбить его на части и по частям отправить
Нет, мне текстовый файл открыть после записи надо. Не хочу в ручную открывать.
Что значит получить?
Есть limit и position, которыми можно задать откуда и до куда будет работать get().
Есть get(byte[]) который копирует данные с текущего position в указанный массив байт, есть аналогичный метод с ByteBuffer.
Есть slice() который возвращает view над текущим буфером в границах limit и position.
есть 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 в пакет и т.д. иначе с границами ебатория такая...
>>723779
Есть более кошерный способ
https://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)
Можно position поставить в 0, limit не ставить. У packet сделать reset(). Потом payload.get(packet) - это автоматически переместит position, так что надо просто проверять сколько там еще осталось.
Но это будет вызывать копирование данных, а position + limit позволяют обойтись без копирования. Все го то делов один счетчик + проверка границы.
counter = 0;
while (counter != packets_number) {
payload.position(countermax_packet_size);
payload.limit(max_packet_size(counter+1));
packet.put(payload);
channel.send(packet, addr);
counter++;
//проверку на последний пакет еще сделать надо, потому что размер у него не max_packet_size
}
сделал так, не работает где может быть ошибка?
Можно, но глупо, лучше статиками оставиь.
packet.put(payload); - не нужно.
Надо сразу channel.send(payload, addr); ты уже выставил у буфера диапазон для отправки.
спасибо, будут теперь заголовки к пакетам лепить
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 '
acSqdcountserver.context. ANUSor|B@g PUNCTUMjRz3etbrains PUNCTUMannotation+&Ys PUNCTUMNotNDqhull AccountServerContext' to 'system.base.Context'
Код писал не я. Я в нем только разбираюсь, подтягивая постепенно требуемые файлы из import'ов, но он должен быть рабочим.
п.с. В import был только этот интерфейс "import system.base.Context", содержимое которго указано в самом начале поста. Других файлов в пакете "accountserver" с именем Context нету.
В общем, добавил я еще десяток файлов в проект, передумал выебываться и подключать сразу новые версии библиотек, где структуру классов/методов могли изменить/мигрировать (заменил на пакеты .jar, которые использовал именно он).
Конкретно эта ошибка пропала, но я все равно не понимаю суть этого интерфейса Context с его методами со странной записью:
><E extends T> E sure(int paramInt);
Что это? Как это называется?
Ответы на подобные вопросы всегда есть в нашей мурзилке: https://metanit.com/java/tutorial/3.17.php
Ого нахуй
send(DatagramChannel channel, ByteBuffer payload) {
// разделить payload на пакеты
// отправить один пакет
// ждать ack отправленного пакета в том же канале (вызывается функция снизу!)
// if (ack получен): отправить следующий
// esle: ack не получен через некоторое время, отправить пакет заново
}
это в потоке:
while(true) {
recv(DatagramChannel channel) {
// получил пакек
// отправить ack
}
}
Хороший сайт, недавно его нашел.
Кстати, так и не допетрил, в чем разница между
Сlass Transaction<T extends Account>
и
Transaction(Account from,Account to, int sum){...}
Было что-то про небезопасность типов, вроде, но я не понял, в чем разница.
Можно предположить, что с помощью метода public T getAccount()
мы можем получить целый объект, а с помощью public Account getAccount() только базовую ссылку, которую нужно приводить обратно, и это небезопасно. Но если мы это не используем, нет смысла использовать
<T extends Account>?
Впрочем, нет, забей, я сам не до конца понимаю, о чём говорю.
почему eclipse параша а intellij рулит?
джаверсы
А что , кодер должен только вслепую писать код? Собирать и запускать должны сисадмины?
Что вы вытворяете с мавеном? Это же просто штучка для удобного подключения библиотек, зачем с ним еще и танцевать?
Ага, сначала просто подключаешь либы, затем хочешь правильно копировать ресурсы, подключать плагины для сборки фронтенда, плагины для миграция, плагины для линтера, деплой, модули, профили, и вот твой помник уже на 10К строчек.
Намного удобнее ведь это делать мавеном, чем самописными кривыми скриптами.
Зачем в сборку бэка совать фронт вообще? У меня на всех местах работы было всё отдельно.
А в бек никто ничего не суёт. Бек собирается отдельно, фронт отдельно, затем мавен всё кладёт в один war-ник. Ну, у нас так.
МОНОРЕПОЗИТОРИЙ
А зачем фронт в war его класть? Обычно фронты билдят свой проект - кладут, куда nginx смотрит и всё.
А у нас нет нгинкса, всё напрямую сервер приложений раздаёт. Но у нас в основном SOAP, веб используется постольку-поскольку.
CRLF, еблан
Дело не в кодировке. Вместо \n юзай \r\n.
Сложно представить вопрос, лучше подходящий для /s/, чем этот.
Вот примеры на пиках:
1. Жалуется, что такого типа исключения в принципе не может выбросить. Что остается делать? Удалять/комментировать строчку...
2. Далее, в этом же методе нет return'а вообще. Чья ошибка? Хуй его знает, ставлю заглушку return null.
3. IDE, либо компилятор не могут различать типы List<Boolean> и List<Integer>, поэтому перегрузка не возможна. Может это особенности языка? Я не знаю. Но факт остается в том, что этот код, блядь, написан был кем-то в какой-то IDE, возможно, с какими-то особыми флагами компиляции, которые позволили игнорировать такие конструкции. Иначе я хз, как можно объяснить такое.
И таких ошибок тысячи! Я не знаю что делать, если ли смысл продолжать долбить этот код, чтобы придти к тому, что декомпилятор криво восстановил код, который изначально можно было спокойно удалять и забыть про эту идею вообще? Или таких критичных ошибок у декомпиляторов быть в принципе не может, чтобы пропускать целые куски полезного кода?
Известно одно: код был написан в последнем десятилетии, был скомпилирован, он рабочий, но приложение срет исключениями в консоль (из-за этого собственно и возникла идея разобраться в этом/исправить баги), некоторые функции не работают или работают не так.
Есть идеи/советы?
>2. Далее, в этом же методе нет return'а вообще. Чья ошибка? Хуй его знает, ставлю заглушку return null.
Там выполняется запрос, но его результат записывается в переменную и всё.
Это понятно, но функция с типом подразумевает, что этот тип должен возвращаться, не? Не важно что происходит в коде, важно то, что у меня тысячи ошибок, которые нужно вручную исправлять, а я даже не могу знать - рабочий ли я код вообще правлю или нет... И ведь этот код был в каком-то виде, который был удачно скомпилирован (иначе этих jar файлов бы не было).
> ошибка ли это декомпилятора
Такое возможно, попробуй другой декомпилятор. Я вообще как-то натыкался на декомпилированный код с goto.
> или же ошибка того, кто писал код
Это бы не скомпилилось, разве что автор другим способом сгенерировал class-файлы (вручную, например). Но не уверен, переваривает ли JVM подобное.
>попробуй другой декомпилятор
Если бы еще было из чего выбирать... Я и так использую, наверное, лучший из всех - JD-Core, обернутый в JD-GUI. Даже тот, что встроен в Intellij IDEA - fernflower, оказался хуже. Например, он не распознает коллекции почему-то, типа List<Integer> и декомпилирует, как List. Но с другой стороны, в некоторых частях кода, он исправляет косяки JD-Core, который объявляет переменную после ее использования. Но даже в совокупнусти оба декомпилятора не могут обеспечить 100% верный синтаксически код.
>разве что автор другим способом сгенерировал class-файлы (вручную, например)
Что значит вручную? Вручную компилировал с javac? Даже если так, у этого компилятора есть флаги, позволяющие такое игнорировать? Или может в старых JDK такое можно было компилить? Или может вообще есть какие другие компиляторы у java?
> Что значит вручную?
Это гипотетически, не думаю, что кто-то реально таким занимается. Я имею в виду, что автор, например, сгенерировал class-файлы с помощью какой-нибудь либы. либо вообще изучил спецификацию JVM и сделал сам. Было бы более вероятно, что он взял другой компилятор (да, они есть, в той или иной степени мёртвости), где нет подобного запрета.
Но это всё херня, наверняка декомпилятор просто ошибся, и если jd-gui действительно лучший, то остаётся только исправлять все ошибки и надеяться, что заработает.
UPD:
Проблема еще в том, что я хотел разобраться по этому коду и понять, как это работает в действительности. Поэтому я не могу в 98% случаев понять правильно, что хотел сделать автор кода и подправить косяки. Все что я могу - это надеяться на то, что код правильный и IDE умная, которая советует НЕ хуйню.
Еще касаемо кода. В этих файлах я нашел код, содержащий в себе OpenGL API, представления примитивов. Так же нашел функции с названиями вида drawHUD, drawMiniMap и т.д. Казалось бы, зачем серверу это нужно? Разве не клиент должен этим заниматься?
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.
Хороший ресурс для изучения жабы
> Например, он не распознает коллекции почему-то, типа List<Integer> и декомпилирует, как List.
Ты серьезно?
2. Да это проблема и проблема декомпиляции. Тут надо понять, что там было в оригинале. Варианта 2 попробовать другой декомпилятор или смотреть непосредственно байткод.
3. В байткоде такие методы возможны, потому что там разный возвращаемый тип, а вот в Java коде такое и правда не скомпилируется.
В целом я бы советовал, взять минимум классов которые надо поменять и только их и декомпилировать. Остальное оставить как есть в jar
Для проблемных классов попробуй http://www.javadecompilers.com/ с разными декомпиляторами. Ну и почитай про байткод иногда просто посмотреть байткод помогает понять, что там должно быть в методе.
Да. Без установки своих флагов, он именно так и декомпилирует у меня. Я пробовал ставить свои флаги, но получил только около 80% пустых файлов. Игрался так с ними часа 2, в итоге ничего не вышло, оставалось использовать по умолчанию.
>>725832
Я попробую еще другие декомпиляторы, и попробую про байткод почитать. Вот, сейчас пробую 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, не считая случаев, когда современный декомпилятор по умолчанию требует свою минимальную версию этого пакета?
Объекты должны быть независимыми и каждый должен быть как отдельный организм, который можно запустить. Это правильное ООП от Smalltalk. Все есть обхект и они могут обмениваться сообщениями.
Как ты представляешь класс с 50+ методами? Это бред полный будет.
Тесты пиши, а не такой хуйнёй страдай.
>Похоже, если в байткоде такое появилось, значит он где-то передал параметр с типом 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 возьми лучше их.
Подход смоллтолка в джаве физически неприменим. В смоллтолке ты можешь передать вообще любое сообщение вообще любому объекту и получить "не понял" [spoiler, ]прям как в динамикодрисне python и js[/spoiler]. В джаве это тупо не скомпилится, и полумеры в виде полунастоящего ООП здесь бессмысленны.
А вообще существует открытая спецификация этого кода, где будут описаны все инструкциии их описание на примере кода 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 знаю
Я собираюсь игру с графикой и многопоточностью запилить, но еще не придумал, какую. Естественно, ничего глобального, тип Doodle Jump или Танчики.
>А вообще существует открытая спецификация этого кода, где будут описаны все инструкциии их описание на примере кода 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 запускаешь дебаг и отлаживаешь, ты можешь спокойно ставить брекпоинты в любых класса и выполнять код пошагово.
>Че?
Если у тебя есть класс StringIterator implements Iterator<String> то инфа о том что это интератор стрингов будет сохранена в классе StringIterator.
А вот в случае Iterator<String> iter = stringList.iterator() - тут в байткоде инфы уже не останется.
наглядный пример, игра без графона, а лагает как последняя сука
Спасибочки.
В треде популярно стало так говорить, вот и следую моде.
>А дальше в IDE запускаешь дебаг и отлаживаешь, ты можешь спокойно ставить брекпоинты в любых класса и выполнять код пошагово.
Но каким образом будет выполняться отладка? Декомпилированного кода же нет. Где точки ставить-то? Это я возвращаюсь, получается, снова к декомпиляции всего кода и его тысячам правкам. Или дебаггер в java работает как-то особенно?
Начинаешь изучать программирование. "Да я ХАКЕР!"
Через месяц понимаешь что Питон это недоязык. Переходишь на Джаву. Вот теперь заебись. Я буду востребованным.
Доходишь до паттернов проектирования. Открываешь реальный код с гитхаба. Упс хуле тут так много строк?
Приходит осознание что инновации это для гиков. Всем нужeны развлечения. Закрадываются мысли что все в тысячу раз сложнее. А потом понимаешь что нужно уметь бежать впереди вмени чтобы успеть сделать реальный продукт.
Начинаешь читать про медитацию на Хабре. Вшух - шизофрения, массшутинг, суисайд.
Согласно предварительной договоренности отправляю тестовое задание, жестких ограничений по времени нет.
Сделать 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.
У тебя такие лабы были? Ты в ВШЭ, ШАД учился или типо того?
А что из себя документ представляет? Кроме ID у него можно просто поле content строковое сделать?
Так из JDK вообще выпилили всё что с EE связано, тот же JAXB.
EE это теперь отдельный проект под управлением Eclipse.
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 и использовать дальше.
@
CDI
@
JSF
@
RMI
@
JAX-RPC
Нахуй вы кобру откопали? Она ж сдохла давно.
Только вопрос был в том, зачем CORBA API был нужен в джава-мирке, если EE (EJB) - это и была его реализация в бородатые годы.
Это получается бины дергали методы кобры?
Читал какую-то мурзилку на русском по EJB, там это упоминалось.
Возможно, оно потом работало и без кобры, но по-прежнему юзало сокеты, даже чтобы залезть в соседний класс.
Заранее спасибо!
вот это уже намного интереснее, спасибо.
Баэльдунг.
>У тебя такие лабы были?
подобные вот таким были:
реализовать собственную версию алгоритма слиянием, затем:
написать прогу принимающую на вход несколько файлов, с дальнейшей сортировкой реализованным алгоритмом и записью в файл.
по требованиям:
запрещено использовать библиотечные методы сортировки.
прога должна работать на системе с ограниченным кол-вом памяти.
программа должна быть способна обрабатывать большие объёмы данных.
все исключения должны быть обработаны, а не выброшены.
программа должна быть отказоустойчивой.
при аварийном завершении программы, часть обработанных данных должна быть сохранена в файле и при повторной записи должна быть перезаписана(продолжить запись с того места где остановилась.)
>при повторной записи не должна быть перезаписана(продолжить запись с того места где остановилась.)
фиксанул
Типичная байтоёбская хуйня, как у всех. Ни разу не было, чтоб такую чушь на тестовых давали.
Всегда давали спринг приложение с крудом.
Такие тестовые как у того анона дают плюсовикам.
Или может книги какие почитать? Чёт я на доске тред не нашёл, ткните носом, если что.
На проекте постоянно упоминают эти образы, контейнеры, чую скоро и с меня это требовать начнут, а я почти нихуя не понимаю в этом. Надо навёрстывать, хотя бы поверхностно.
Вводятся данные через JOptionPane.showInputDialog.
А еще isBlank() надо
Название мне кинь лучше и свой отзыв.
Так-то там по любому есть что-то от орейли или типо того, но там опять будет какое-нибудь устаревшее говно на тысячу страниц, уровня спринг про.
Держи видеомурзилку: https://www.youtube.com/playlist?list=PLD5U-C5KK50XMCBkY0U-NLzglcRHzOwAg
Благодарю!
У тебя сломанная иде.
>Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
>А: Вкатиться нельзя, ты должен был родиться программистом.
А если на 29лвл? Помню из вузовской программы сишечку и немного асму.
Двачую, лол. На работе чувствую себя ребёнком в 22.
System.exit(0)
Из под пальцев разработчика.
wait() замораживает тред до тех пор, пока не вызовется notify() того же объекта того же класса, но из другой функции? А если, допустим, освободится монитор, и другой тред вызовет notify() в этой же функции, пока эта же функция заморожена для предыдущего треда? Это работает для всех тредов, которые используют методы данного объекта данного класса? notifyAll() возобновляет вообще все потоки в программе?
MVC что ли?
Ну и популярные "вещи" (паттерны) можно найти в учебных примерах проектов, где-нибудь на гитхабе по кейворду "спринг". Строгого списка подобных паттернов нет, но есть самые известные.
Класс X будет ошибкой, а класс Y нет?
А блок synchronized (/поле класса/){} блокирует монитор только этого поля? Когда synchronized функция блокирует весь synchronized контент в объекте класса?
Если нет, то какой смысл засовывать в synchronized (/эти скобки/) что-то?
Понятно. Ну я вот тут с бд и ждбс разбираюсь, и встречаю эти термины. Думал, может есть общая мурзилка таких вещей в контексте работы с бд.
У БД в основном эти два только, и граница у них размыта. DAO - работа на уровне таблиц, оперируешь строками в конкретной таблице, репозиторий - на уровень повыше, оперируешь уже сущностями ООП. Но это очень условно.
Не будет класс X ошибкой, если доступ к cl есть только у методов класса X (а это позразумевается, т.к. cl - private).
Класс Y дает дополнительную защиту, если cl будет расшариваться за пределы класса Y. И то защита будет только если те другие сторонние пользователи объекта cl будут соблюдать контракт и использовать его с синхронизацией на оъекте как в классе.
Спасибо большое.
Самый верный способ понять что-то это закодить это самостоятельно. Тогда все становится очевидно. Попробуй, реально помогает.
>wait() замораживает тред до тех пор, пока не вызовется notify() того же объекта того же класса, но из другой функции?
Претензии к формулировке, но в принципе да.
>А если, допустим, освободится монитор, и другой тред вызовет notify() в этой же функции, пока эта же функция заморожена для предыдущего треда?
Опять претензии к формулировке. Какая нахуй функция заморожена? Замораживается поток - исполнитель функции. Вопрос непонятен, переформулируй.
>Это работает для всех тредов, которые используют методы данного объекта данного класса?
Вопрос непонятен. Другие методы данного объекта вообще ни при чем, только wait/notify/notifyAll оказывают эффект друг на друга.
>notifyAll() возобновляет вообще все потоки в программе?
Какие нахуй все потоки в программе? Только те потоки, которые "мониторят" объект, на котором они вызвали wait.
В примере на пикриле тебе крайне важно понять почему друг за другом пишутся сообщения "Inside synchronized, before wait". Конечно же это можно просто понять прочитав четвертое предложение из справки по методу, но это очевидно что ты не читал и не будешь (так как не знаешь англ. видимо). Ну и это пожалуй самое сложное и неочевидное что есть в этих методах.
Да я уже все понял. Формулировать вопросы, когда непонятно, помогает, потом сам ищешь инфу на разных сайтах (потому что на одном сайте как правило пишут не про все, а какую-то часть).
а? я технический вуз не оканчивал. просто решил жабу учить, вроде бы получается, но алгоритмы свои реализовывать.
При чем тут диплом?
В англ википедии вообще не пишут для каких языков эта апишка.
цфт
есть такое, да
> разработанный компанией Microsoft
Sun такой: "Ну в пизду с ними связываться, лучше свой разработаем".
Это паттерны доступа к БД
>>Где можно прочитать про дао
обычно в контексте чистого JDBC
>>репозитории
в Spring Data
Там кого только нет, так что пох. Но Sun давно продался ораклу, а оракл, как известно, пидорасы.
ODBC нельзя вызывать напрямую из Java, т.к. там требуется делать системные вызовы.И кстати в Java был драйвер для ODBC https://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html
Но его выпилили за ненадобностью.
> Я собираюсь игру с графикой и многопоточностью запилить, но еще не придумал, какую. Естественно, ничего глобального, тип Doodle Jump или Танчики.
Нахуя делать графическое приложение на java? Это не геймдев язык. И в твоем портфолио будет не к месту.
А что делать, чтобы затронуть большинство важных функций и за одно руку набить на жабе?
Лол, у меня реально спрашивали на собесе, готов ли я к легаси и отставанию от трендов.
Я на тот момент только рест знал и выразил готовность учить легаси. Когда пришёл, реально пришлось копаться в EE 6 и SOAP.
Ну, бета-тестером пока что не хочу быть. Это для тех, кого заебала стабильность в легаси.
Бек или фронт не прогал вообще ни разу в своей жизни не трогал. Прогал только на си, плюсах в универе и вот сейчас джава кор дрочил. Какие подводные? Хочу для того, чтобы получить какой-никакой опыт, а то одно говно писал всю жизнь
> когда ты в чужом говне копаешься
По твоему определению выходит, что если два человека начали сегодня писать новый проект, он сразу же легаси.
Нет, легаси - это когда ты копаешься в коде, который писали давно уволившиеся люди, спросить не у кого, так как сюда давно никто не заглядывал, никто не помнит в деталях, как оно работает, а используемые технологии явно уходят в прошлое, и новые проекты на таком делают редко.
Оказывается, реддит изначально был на лиспе, лол.
Подводных нет. Учишь спринг и параллельно тыкаешь SQL, пишешь пару хеллоуворлдов для понимания и уже можешь писать проект.
год пилил легаси, год на спрингбутах и докерах, перекатчик, сейчас получаю сотку
Если ощущаешь себя миддлом, то 130-150.
1280x720, 0:50
Да-да анимедаун.
Минуту смотрел на этот код, пока не допёр, что это функциональный интерфейс.
Ну, может, какой-то очень сложный билдер (или фабрика).
Для этого нужно начать сначала. Если рассматривать только регулярки в вакууме, то один бекслеш это сервисный символ, поэтому он экранируется дополнительным бекслешем, и вот их уже два. А бекслеш в строковых литералах во многих языках (и в джаве в т.ч.) это сервисный символ сам по себе, чтобы писать \r\n\t\v. Поэтому, чтобы написать даже один сервисный бекслеш регулярки в строковом литерале требуется уже два бекслеша, а чтобы его дополнительно экранировать - еще два.
У нас был некий конфиг который мы читали по ресту с другого сервера, конвертили во внутренний формат и кешировали. Конфиг состоял из большого числа секций.
Код который читает по ресту и кеширует был универсальный, а для конвертации каждой секции во внутренний формат мы использовали подобный интерфейс.
Очень удивлен, впервые вижу эту фичу..
>>729356
Для тех, кого еще в непонятках держит тот кусок кода: вам для понимания недостает увидеть объявление интерфейса UserBuilder, а оно по сути обычный Supplier - принимает ничего и возвращает что-то, а как метод обзовете уже дело десятое. Возможно это хуевое знание SDK - вводить новый функциональный интерфейс при наличии подходящего аналога.
Ошибка, он должен принимать строку, как аргумент для конструктора.
Function<String, User> constr = User::new;
Все верно)
>>729356
>>729487
А нужен этот "костыль" много где, достаточно посмотреть применение Supplier'ов в Stream API - те же коллекторы. В общем случае это просто прием чтобы сохранить или передать "функцию", как в других языках. А в кавычках потому что передается не функция, а реализация интерфейса, вполне себе объект. Просто сделали так что конструктор без параметров подходит сейчас под функциональный интерфейс Supplier. А с параметром - под Function или UnaryOperator (как copy-constructor, например).
>>729499
Так и есть, сорян, не заметил параметр. И да, Function тогда бы подошел.
Потому и хочу искать, повышать не собираются
Разве не логичнее чтобы два раза экранировать бекслеш, писать 3 бекслеша, а не 4?
Почему spring initializr не делает <version> в зависимостях? Так разве можно? mvn compile ошибок не выдает. Это какая-то новая фича мавена по умолчанию новейшее брать? Я не знал этого.
>>spring initializr
он добавляет
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
теперь спринг сам разруливает все зависимости для этой версии спринга
Ну а вообще ЕМНИП можно и не писать версию - мавен последнюю подтянет автоматом.
Мавен может брать новейшую версию, но работает это не всегда, да и лучше указывать явно. Но конкретно в спринг буте версии указаны в родительском помнике, на который ссылается <parent>, оттуда они и тянутся.
В котлине. В ламповую жабу с этим говном лезьть не смей!
Пишите в телеграм @alexanderstud
эта сука выходит за массив, от души, спасибо
просто я слепой и попутал i с j
Шутка в том, что такого нет?
В нетбинсе - если очень слабый комп
В эклипсе - если бумер и любишь свободное ПО
В идее - если зумер или хипстер с макбуком
Поясните за эту хуйню, после джавараша - кажется понятной и адекватной (ещё бы, писать в идее а потом копипастить в эмулятор не надо, лол, ибо жаба душит 1800рэ отдавать).
Задания не такие ебанутые.
Но у меня есть подозрения что либо ресурс хуйня, либо я хоть чему то да научился(что маловероятно).
Начал 2 недели назад заниматься, почти с нуля. Там какая то хуйня с функцией решать задачки в idea. Плагин, через который это работает кривой, задачи отображает криво и если не закрыть после решения - идея может сожрать всю свободную память и повесить комп.
Через месяц станет платной. Жри пока дают.
Если б их писали еще толково, а не "самый полный мануал на 1к страниц по очередной модной библиотеке/фреймворку", в которых куча воды и устаревшей инфы.
Лучше всякие сомнительные курсы, ага.
Даун, для тебя есть книга "жаба для чайников, детей и стариков", точно название не помню, она вроде даже в шапке была.
Там легко и просто тебе дают вводную по жабе. Читается она легко и непринуждённо, после неё ты уже можешь начинать кодить, попутно обмазываясь другими мурзилками, тем же метанитом.
Потом сверху полируешь особенностями 8ой жабы, книгами того же Венката или Коузена, они тоже читаются легко.
Попутно гуглишь всё, что тебе непонятно, в интернетах десятки всяких бложиков и статей вроде того же баелдунга или как там эта хуита называется. Там же можно и спринг изучать начать.
Все эти курсы придуманы для наёба лохов на бабло, тебе в любом случае придётся читать и учиться самому.
Так гиперскилс и не отменяет книг. Это задачник. Я вот читаю Хорстмана. И где-то на середине первого тома понимаю, что без практики даже понятные моменты из головы выветриваются.
По функционалу аналогичны, но лично мне больше freemarker понравился. Нет уебанских неймспейсов из XML, удобные макросы, синтаксис менее инопланетный.
Спасибо. При беглом просмотре тоже он больше приглянулся.
Так бесплатно до января для зареганых. Как раз повод ускориться.
Иди нахуй со своей мукулатурой, я лучше мануалы и доки почитаю на том же баелданге и спринг.ио.
>>мурзилками
Комиксы по джаве? Лол, зумеры уже читать разучились?
>>Все эти курсы
Я разве писал про курсы? Хотя если хочется - есть и норм курсы, но попадаются редко. В основном вода и пересказ теории, надо искать с примерами проектов.
>>для наёба лохов на бабло
Хочешь - плати, не хочешь - не плати. Все есть в открытом доступе на торрентах
Вверху кидали мурзилки по jdbc, там на 10 минут теории, потом можешь на хибу садиться.
Воббще не стоит использовать ORM. Изучать легаси хибернейт стоит только для того, чтобы было потом понятно, как переписать на Jdbc по-нормальному.
Ждбс чуть более муторный только в плане писать, в плане отладки в разы муторнее легаси хибернейт.
Они оба нахуй не нужны, гуй надо писать не на джаве. А если пишешь для себя, бери, что больше нравится.
Спасибо.
Ок.
Сейм было, потом пересилил и вошел во вкус. Читай Хорстмана лучше.
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
Ну и нахуя они это сделали? Там какой-то пидор очкастый написал им, что дефолтная иконка это information leak, которая показывает технологию на сервере. Охуеть теперь.
И че еблан?
> information leak
> JSESSIONID в куках
Ой, даже не знаю, наверное на сервере пыха или нода. А может это питон?
Троллейбус из буханки хлеба.
Нет, их больше никто не использует. Даже более популярный флеш почти сдох, что там апплеты.
Но все-же как?
> почти год
Это потому что работа отнимает кучу времени и сил, и потом сложно себя заставить делать что-то ещё. Главное - не бросать на полпути.
Я и не бросаю, почти книжку для новичков закончил. Полное руководство еще лет на 5 растяну, наверное, а там и помирать.
Читай что-нибудь более сухое и сжатое, того же Хорстмана. Джава - это не кресты, важных тонкостей ты здесь не упустишь, потому что их очень мало. Ну а дальше фреймворки.
Обычно всем пох на оригинальность, смотрят на то, что ты в принципе способен решать бекендерские задачи. Так-то они видели уже сотни социалочек, форумов, интернет-магазинов, блогов и прочих мувисёрчеров.
Напиши лютую энтерпрайз банковскую систему крч
Лучше мессенджер с e2e шифрованием запили.
Ни в чем.
Допустим, тебя похитила некая запрещённая в России организация и заставила писать на Java 6. У тебя нет try-with-resources, но ты хочешь гарантированно освободить ресурсы, а вылетевший эксепшен обрабатывать где-то выше. И ты пишешь такой код.
В честь новых вкатывальщиков?
Не оригинально. Давайте лучше напишем хотя бы 30 постов.
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);
А ты думал, в сказку попал?
System.out.println(Arrays.asList(arr).stream().mapToInt(v -> v).max().getAsInt());
Все кроме массивов - баловство для котлинистов, ежжи.
Electron
TornadoFX
Читал частично. Показалось полной хуитой. Если ты совершенно пустой в программировании то там, по ощущениям, слишком резко вводятся некоторые концепции, так что суть хуй уловишь. А если ты уже что-то шаришь, то она тебе уже нахуй не нужна, потому что есть например Шилдт.
Для начинающих имхо попизже подходит Сьерра и Бейтс
Что за залупу ты здесь написал? Это будет incompatible types. Нельзя присвоить инту массив, как и сравнить их. Ты проебал индексы arr в двух строках
Ясно, это ебаный двач их воспринимает как разметку. Ну тогда похуй [[]]
[¡]Похуй.[/¡]
SD работает поверх хибернейта, но не обязательно, можно и поверх NoSQL сделать.
А он делает наркоманские запросы?
[ i ]
И как тебе поможет это знание?
а вот I и J это какой-то стандарт, типа принято так? просто я слепой и путаю i с j
Если я уже более-менее "выучил" джава-core, написал овердохуя всяких калькуляторов на ней (работа способствует), со всякими пиздецами там в том числе, вроде лямбд, дженериков и прочей хуиты.
Так вот, что дальше поучить? Spring например, или еще что-то? Пока что работа связана со всяким ссаным энтерпрайз-говном.
Это типа конвенция. Но она довольно слабая (в сравнении с большинством других). Можешь пихать туда хоть что, хоть O и X как символ своего очка и заклеивающего его пластыря. Все равно переменные перебора циклов локальные внутри него.
Ну, трудно сказать. Если прям говорить про первый раз когда посмотрел на джава, то года 4. Но это не моя профессия была все это время, да и сейчас я не программист, просто на формальном языке гораздо четче и сжатее можно писать алгоритмы (это и есть моя работа сейчас)
Все что я изучил нормальный человек может запихнуть месяцев в 10, я думаю
Никак нахуй.
Сочувствую вдвойне, лол.
А можно сначала спринг? Я в принципе знаю основы сейкеля. Там же полтора оператора, наверное его можно за неделю поднять в голове у себя.
Не беси меня слышеш!
Не совсем понял о чем ты. Типа что я полный долбоеб и безнадежно мне что-то подсказывать?
Можно и спринг, но без БД там сильно не разгуляешься. Ну, контроллер напишешь, данные будешь хранить в сырых файлах или вообще в переменной. Ещё можно с чем-то поиграться, например, с очередями.
SQL за неделю реально, самые основы можно даже быстрее.
Нет я.
Погуглил видео по спрингу. Так вот там есть core, MVC, boot и еще куча всего. это все независимые вещи, или надо какую-то последовательность их изучения? Еще качал книгу "спринг в действии". Не знаешь про нее, норм-нет? Есть годные книги?
Да, потому что в версии 1.2 сломали обратную совместимость. Т назвали J2SE, это уникальный случай пока.
Хотя оракл должны признать, что на 9-ке тоже немного сломали, потому многие застряли на 8.
В реальности они сильно взаимосвязаны, хоть и предполагается учить в порядке core, MVC, boot. У Boot порог вхождения пониже, чем у классического спринга, поэтому легче начать с него.
Книгу эту не читал, но достаточно популярная, многие спринг учат по ней. Сам больше по курсам/мурзилкам.
jigsaw
Не подскажешь годные курсы по нему? На свободном ютубе или пизженные на торрентах например
Помню, что смотрел это, остальное забыл. Но там не только спринг, но и немного EE.
https://www.youtube.com/watch?v=P_W3NbkwdIM&list=PLVJtKDGxOX1V8NpyHUAkrdezZDvgDhe4b
Окей, спасибо анон. Гляну это.
Надо было быть ебланом чтоб назвать класс var, не? Класс вообще в Java конвенционально называется с заглавной буквы
Да, и всё же это означает, что о 100% обратной совместимости говорить нельзя.
Хотя какие уж тут 100%. https://stackoverflow.com/questions/46398300/glassfish-5-0-exception-and-port-4848-not-responding
Кого ебет эта поебота вообще, которую ты привел в пример. Плохо когда теряется совместимость на уровне какой-то сложной семантики. А это твое говно с варами можно пофиксить пропустив исходник через программу которую любой школопидор напишет.
Будет очередная говнофича из котлина.
Импортировать и использовать, например. Классы же не просто так пишут, чтобы их больше никогда не использовали.
Я может быть конечно не совсем понимаю все тонкости разработки, но как блять можно импортить что-то не из джава кода, а из откомпиленного байта (который тащем-то точно так же можно пропарсить и исправить имена переменных, а машкод если б джава его создавала вообще не имеет имен, только адреса). Ты точно не несешь хуйню? Проверь еще раз плес.
Я хочу прнтврайтером открыть файл и записать туда что-то.
Пишем
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??
>А какое тогда исключение выбрасывает метод println, класса PrintWriter??
Ты настолько тупой, что решил спросить это на дваче, вместо того, чтобы посмотреть в идее?
> как блять можно импортить что-то не из джава кода, а из откомпиленного байта
То есть ты сейчас утверждаешь, что библиотеки в джаве невозможно использовать, если у тебя нет от них исходников, а только откомпилированные классы, да?
> пропарсить и исправить имена переменных
Ну и кто этим будет заниматься, если проще сидеть на древней джаве?
Он выбрасывает FileNotFoundException, но если так написать, то не работает, подчеркивает красным и вылетает ошибка. Я вроде написал выше.
ты уверен что он вообще что-то бросает? попробую удалить к хуям трай-кэтч-сурраунд
Код пиздеж. Тут конструктор только потребует эксепшн.
благодарю
Ну не большинства, но частенько, да.
На самом деле,, везде стремятся заставить бекендеров заниматься фронтом, потому что один фуллстек тупо дешевле двух отдельных разрабов.
Лучше бы jsp писали как раньше и ЕЕ, а то напридумали, что теперь длжавист еще и реакт должен знать.
Создаю form в хтмл, отправляю кнопкой, а мне в контроллер приходят нули. Отправляю через постман через х-ввв-форм - все работает как надо. Где я обосрался?
> везде стремятся заставить бекендеров заниматься фронтом
Где-то стремятся, но далеко не везде
>один фуллстек тупо дешевле двух отдельных разрабов
Если двое отдельных на 100% загружены своими задачами, не дешевле
С JSP джависта всё равно можно заставить заниматься фронтендом. Даже если не будет реакта, будет ебучая вёрстка.
>>733067
Есть другие варианты. Немного увеличить сроки релизов, но зато держать меньше человек, если бизнес это устраивает. Также, если для фичи дорабатывается и клиент, и сервер, один фуллстек быстрее разберётся, что нужно делать, чем пока поставят задачу на клиент, пока фронтендер и бекендер договорятся, и пока решат проблемы, возникшие из-за недопонимания. И если таких фуллстеков целый штат, сроки если и увеличатся, то незначительно, а платить отделу нужно будет меньше.
Изначально умели, а потом, сука, разучились.
Спасибо анон.
Это просто шаблонизатор. Ты можешь подставить какие-то данные или сгенерить несколько элементов в цикле, но ты по-прежнему используешь теги html/стили css.
Впрочем, возможно, в JSF как-то по-другому, но хз, как именно. У меня по непонятным причинам настолько лютое отвращение к JSF, что вообще ничего не хочу о нём знать.
Но margin-left с бутстрапом можно отдать верстальщику, пускай ебется с пиксель перфект, а джавист может просто вставить th:${username} в дивы и все. В jsp скорее всего ебаться придется от и до, в браузере же его так просто не откроешь.
Джавист у себя добавит все эти th, увидит, что после подстановки данных макет съезжает, и фронтендеру опять переделывать. Хз, как было до изобретения модных фреймворков, но предполагаю, что фронтендеры либо делали и переделывали всё вслепую, либо сами учили шаблонизаторы, добавляли th и запускали у себя. Процесс выглядит так себе.
> в браузере же его так просто не откроешь.
А как ты на сайте оракла тогда авторизуешься? Тамл login.jsp
Да хоть login.exe, лол. Клиенту попадёт уже отрендеренная страница, верстальщику же придётся для этого поднимать сервер у себя, что тоже ебля.
мимо
Я как бэкендер лучше б джейсоны выкидывал фронту, а он уж пускай как хочет их отображает. останется только решить вопросы по апи - пост/пут и 200-ок-юзерЕррор-в-теле вместо 404
Поэтому модные фреймворки и изобрели, чтобы были тонкие универсальные json-ки вместо возни с рендерингом на сервере. Бекендеру больше не нужно думать, что там на фронте, фронтендеру не нужно пересобирать сервер, чтобы увидеть результат.
Всегда отправлять POST, всегда возвращать 200. Похуй на рест, похуй на целостность горящих жоп.
Суть задачи состоит в том, чтобы изнутри метода изменить состояние логической переменной, лежащей вне его скоупа. Понятное дело, что с обычным boolean ничего не получится, потому что он тупо передается как значение и не меняется больше никак снаружи. Так вот: почему если я в метод передаю тип-оболочку Boolean, и меняю ее внутри метода, наружу никакие изменения не распространяются (на переданный в качестве аргумента внешний Boolean)?
Помогает только написание собственного типа-оболочки типа
class OutBool{boolean b;}
В этом случае все работает как надо.
Почему не работает с встроенными типами-оболочками? Это компилятор так наёбывает чтоб они минимально отличались от простых типов, или я тупой где-то? Олсо, как-то можно решить подобную задачу в Java более красиво, чем каличные оболочки? (вроде модификатора out у аргумента в C# или var в Поцкале)
>Так вот: почему если я в метод передаю тип-оболочку Boolean, и меняю ее внутри метода, наружу никакие изменения не распространяются
Потому что сцылка копируется. А вообще код покажи.
Не, компилятор не наёбывает.
Встроенные типы-обёртки иммутабельны. Максимум, что можно сделать с ними - создать новый объект и присвоить старой ссылке, что ты, наверное, и делал. При этом изменится только значение аргумента метода, оригинальная ссылка, с которой ты вызвал метод, остаётся как есть, потому что ссылки передаются по значению, то есть просто копируется адрес.
Но в своей обёртке, хоть ссылка в методе уже другая, указывает она на тот же объект. И через новую ссылку можно изменить данные в этом объекте, потом изменения будут видны в месте вызова.
> что ты, наверное, и делал
Нет. Именно переданное в аргументе меняю походу исполнения внутренней логики. Но эти изменения не проходят через ссылку на "наружную" переменную.
Если заменять Boolean на самописную оболочку, больше вообще ничего не меняя в коде, то все взлетает. Олсо, если делать неизменяемой переменную-носитель состояния внутри типа оболочки, то все тоже конечно наебываться (ошибка компиляции, попытка менять final-переменную)
Насколько знаю для String сделаны наебские механизмы, которые делают работу с ним немного особенной (ирл стринги иммутабильны). Похоже, что и здесь то же самое.
ща запилю кусок кода
есть же instanceOf, типа можно проверить является ли какой-то объект типом какого-то класса
Есть еще получение типа класса через рефлексию
Ну да, я так и делал перебором (через instanceOf). Но подумал, вдруг есть какой-то другой крутой способ.
Олсо, я знаю что здесь все по-уебански сделано с прямым доступом к переменной и всем таким. Это не для реальной работы код просто, здесь это похуй
Ну можно проще, но еще более уёбищно сделать: создать в суперклассе, или общем для них интерфейсе, метод который будет возвращать что-то вроде "Я объект А!!!1", и тупо вызывать его for each, фиксируя что оттуда прилетает.
Если arrayList без дженериков то можно сделать какое-нибудь мегауебанство вроде завернутого в try-catch вызова метода, имеющегося только у A (например) с поимкой эксепшенов которые оттуда полетят. и если хоть раз пройдется этот блок, то значит A там есть. Теперь это ебанутых костылей тред
Короче, прочти это. Там пример с Dog dog изучи.
https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value
Зачем ты притащил это говно мне? Я нормально понимаю как в Java передаются аргументы. Нигде на моем скрине не происходит переприсвоение переданной ссылке нового объекта, как с этими собаками.
Олсо, этот >>733371 уже подтвердил то что я так подозревал. Для оболочек компилятор видимо делает такой вызов неявно, примерно как для стрингов.
>Нигде на моем скрине не происходит переприсвоение переданной ссылке нового объекта, как с этими собаками.
На скрине нет, а если бы ты как раньше обычную Boolean присваивал = true, она бы преобразовалась в new Boolean(true)
Ну так откуда это знать, если оно делается неявно? Разве что опытным путем на это наткнуться (как я) или где-то прочитать, но я такое помнил только для стрингов. Да, я такой долбоеб что решил спросить на дваче а не в гугле
Автобоксинг и авторазбоксинг сами по себе тут никаким боком не виноваты. Особенность их реализации, что, оказывается, при присваивании логического литерала вызывается конструктор типа - это да. Но могло бы быть и иначе (литерал просто присваивался бы внутреннему состоянию Boolean-объекта), и это все равно было бы автоупаковкой.
Попробовал сделать вместо присвоения литерала присвоение enum объекта Booleam.FALSE и тогда уже только IDE показало что оно оказывается final
50/50 примерно?
Зависит от бекграунда. Если до джавы не кодил, то примерно поровну. Если кодил - где-то 15/85.
Что, реально во фреймворках зашито столько всякой еба-сложной механики, что она сложнее самого языка в разы?
Вроде того. В языках ведь только самое необходимое, продвинутые фичи идут отдельно, потому что всем нужно разное.
Ты неправильно вопрос ставишь. Надо понимать для начала, что ты хочешь сделать.
"Я хочу сохранять сущность в бд".
Можно сделать это руками, без спринга. Можно использовать спринг. Можно (иногда скорее нужно) использовать и то и другое, несколько бд, кучу сущностей, SQL синтаксис в перемешку со SPeL и прочий пиздос.
Загуглить как это делается недолго. Ещё быстрее открыть готовый проект и посмотреть как делалось там.
Фреймворки созданы не для того, чтобы усложнять жизнь, а наоборот. Я хз что ты там учить собрался, в том же спринге. Круды делать можно научиться за пару вечеров, а всякие кишочки ты может и не увидишь никогда. А если увидишь, то просто за 3 минуты загуглишь, переделаешь под свои нужды и пойдёшь дальше.
>>733370
Не знаю насколько ты хорошо все понял из объяснений других анонов выше, как по мне там не было целостного объяснения, поэтому попробую и я.
Параметр метода можно рассматривать как обычную локальную переменную метода. Локальные переменные метода создаются в стековой памяти потока и недоступны для других потоков. Объекты в 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>.
Хули так рано, 5000 не было ещё.
Сложность предложенного тобой решения - O(n). Конечно зависит от задачи, но это уже попахивает, у нас даже ждунов разворачивают при таких решениях. Кстати, в Java 8 бакеты в хешмапе превращаются из списка в дерево уже при восьми элементах, можно взять на заметку. В общем это повод задуматься, возможно тебе уже нужен класс-обертка или метод хелпер, выбирай.
Да все и так понятно было, но спасибо за такую усердную емкую попытку. Я обо всех этих вещах в курсе, прост не знал что оболочки над примитивами относятся к неизменяемым.
> Решение конкретно твоей задачи сводится к введению нового класса
Да я бы так это и сделал, если б с нуля писал. Просто на момент когда появилась надобность фиксировать это новое состояние, и выпихивать его как-то на вызов, весь остальной код уже был написан и нормально работал. Это стало максимально быстрым решением.
Пожалуйста. Решение публичное, это же форум, может кто-то другой найдет там для себя новое/полезное.
пик 2, 2147: нельзя добавлять у себя, не проверив результат метода родителя, но принцип ты понял.
Давно в разработке? Что бы посоветовал почитать/покурсить новичку в Java?
> даже ждунов разворачивают
а какая у тебя условная позиция в этом буссинесе?
>как-то можно решить подобную задачу в Java более красиво, чем каличные оболочки?
AtomicBoolean
То есть .collect(Collectors.groupingBy(...)). Дальше разберешься.
Что значит удобной? В первую очередь типобезопасной. Если в мапе хранить обжекты и каждый раз их кастить к нужному типу, рано или поздно это выстрелит в рантайме.
Нахуя в мапе хранить объекты разных классов? Я не об этом. А о Map<String, List<BuisinessZalupa>>
> Нахуя в мапе хранить объекты разных классов?
Чтобы не писать новые классы, как в динамической дрисне JS/Python.
> Map<String, List<BuisinessZalupa>>
По-разному бывает.
Сеньор-помидор, часто собеседую кандидатов и коллег, лол, ревьюю код и коммичу в мастер. В тырпрайзной разработке с 10го, конкретно в Java с 15го.
Советовать я ничего конкретного не буду, т.к. это все субьективно и научиться можно по любому материалу, кроме пожалуй >>719717 вот этого. У каждого источника есть плюсы и минусы: книги всеобъемлющи но скучны, видосики наглядны но очень медленны и однобоки, курсики забавны (но беседы с роботами на джавараш это перебор) и интерактивны но платные не могу придумать минусы, курсиков по джаве не проходил. Я открыт к любым источникам. По книгам могу показать свои, вот, но не скажу что читал все, а те что читал, они все похожи (ну еще бы, предмет обсуждения ведь не меняется) и по-своему неплохи.
Ну конечно нам до твоих объяснений далеко, мы и не претендуем.
Эккель не сильно древний динозавр? Видел недавно в магазине думай-джаву его, бумажную, с ёба-скидкой. Решил не брать потому что там наверное какая-нибудь джава-5 еще
Очень древний. Некоторые вещи конечно остались прежними, но очень многое поменялось с фичами языка и SDK.
Взглянул на функцию 1 пик, сначала как не допер, а потом допер.
Пиздишб
Самозванец.
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. - Приемы объектно-ориентированного проектирования (т.н. "банда четырех")
Сам не читал, но это насколько знаю считается библией паттернов
Спасибо, почитаю
Я в проекте использую logback
Библиотека, которую я подключил предоставляет slf4j-api НО у себя в классе использует логгер log4j
Как я должен настроить логирование, чтобы получать месседж и из библиотеки и из моего проекта?
Пиздец какой-то
Не знаю чел, я ебнулся, пытаясь это понять.
JEP: need new universal logging api without shit and lambdas
Delphi 5
>jFX
Откуда они эту хуйню берут вообще?
На каких-то охуенных модных современных курсах "Вкат за 72 часа" ?
Ну как же. Для многих программирование - это когда программа с окошечком получается.
ебать браузерщик запекся. несите еще одного
или ссылОчку, почитаю, ибо уже второй день ебусь с этой хуетой
спасибо
Збс, пойду искать.
Это маски (wildcard) для указания какие классы могут быть подставлены в скобочки. Вопросик это "что угодно", как звездочка в обычном поиске. А super и extends это выше и ниже по иерархии наследования.
Например, Object <- Throwable <- Exception <- RuntimeException
Если указано extends Throwable, то подставить можно любых наследников этого класса, ну и сам этот класс.
А если super Throwable, то только предков этого класса и сам этот класс.
Указываемое ограничение влияет на список доступных методов у параметра-дженерика.
Спасибо.
Дополню этого >>735277 анона.
На практике это выглядит вот так:
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);
Не с той стороны пишешь, mappedBy это атрибут @OneToMany, а не @ManyToOne как ты пытаешься.
Десктоп приложения на Яве не в тренде, про них не говорят на конференциях, не пишут в модных журналах. Потому смузихлебы с подворотами считают, что JavaFX нинужна.
ок спасибо
может знаешь статью где об этом почитать можно было бы
а то я то исправлю а понять то хочется
Это смузихлёбы как раз пишут десктоп на жабе вместо того, чтобы писать на ней то, для чего она предназначена.
Мурзилка - это скорее не статья, а бложик или сайтик с несколькими такими статьями.
"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."
ну вот потому я и не понял в чем ошибка то
Баелдунг это и есть мурзилка.
Это разные типы отношений. @Joincolumn - это однонаправленное отношение. А mappedBy - двунаправленное.
Тоже спасибо.
Но у меня вопрос, почему это скомпилировалось
List<? super Integer> numbers = Arrays.asList(1, 2.2); ?
Вообще все подходят, потому что они от Object унаследованны.
List<? super Integer> numbers = Arrays.asList(1, 2.2, "ABC");
Констраинт extends будет работать на возвращаемые значения
T get()
А констраинт super на аргументы метода
void add(T)
Поэтому из одного листа ты читаешь Integer, но ничего не можешь туда добавить. А в другой можешь добавить Integer, но читаешь оттуда только Object.
Просто запомни PECS.
Сейчас читаю Хорстманна. Через пару недель дойду до глав с gui, а в конце первого тома отдельная глава по javafx.
Не читать ее или как?
Нюфаг не умеющий в гугол навсегда таковым и останется. Ладно бы что-то сложное было, но ответ в первой же строчке и без перехода по ссылкам >.<
Совет говно, если у пользователя изменено дефолтное расположение рабочего стола то эта хуйня не будет работать.
Гуглил конечно. Просто я находил целые телеги кода, которые берут путь из реестра. Меня это смутило.
Я скипнул.
Ещё читал какой-то другой талмуд по джаве, и треть объёма была по свингу. Тоже скипнул целиком.
Ты советуешь только последнюю главу скипануть? Или все gui? Просто я совсем новичок, а у Хорстмана главы не особо независимые друг от друга. А глава "Параллелизм" я думаю мне точно нужна будет.
Бесспорно, решение от 2009 года не идеальное, хотя бы потому что наверняка сейчас более свежее есть, как например System.getProperty("line.separator") и новый System.lineSeparator() из Java 7. Но оно будет работать и сейчас в 99% случаев. Во-первых, только долбоебы начинающие пользователи используют рабочий стол как свой workspace, у нормальных людей там лежат только пара ярлычков. Во-вторых, мало кто знает, особенно среди людей из первого пункта, что можно переопределять путь таких директорий. В-третьих, тому нюфагу, который задал вопрос, хватит и такого решения, он другие может не понять. А если ему всё-таки не подойдет, посыл поста был - попробуй найти сам. Самое идеальное будет дернуть винапишку SHGetSpecialFolderPathW, ты это предлагаешь?
>>735886
Так и есть, можно через реестр, а всего стульев примерно 5:
1) Через систем проперти что выше
2) Через реестр
3) Вон там предлагали свинг, возможно и через него, он GUI-ориентированный, вполне может сработать
4) Через винапи (самый годный, но не самый легкий)
5) Через сервисные имена папок, CLSID (может не сработать, не знаю, щас попробую попробовать)
"Параллелизм" читай, конечно. Остальное по gui скипай.
Ну или прочитай всё, но это будет чисто для себя, на работе почти наверняка не пригодится.
Лучше сделай диалог с выбором пути и сохраняй там, где укажет пользователь. Если будешь принудительно лезть на рабочий стол, то многие пользователи тебя будут ненавидеть, у них там и так либо срач, либо чистота, за которой они следят.
У меня переопределены Downloads, Pictures и Documents, но не Desktop. Рабочий стол никогда не видел смысла переносить.
Спасибо. Просто я хотел узнать, какой стул более кошерный, если будет условное задание "создай ярлык на раб.столе у пользователя".
Классический пример "Проблемы XY" - хотел спросить "как создать ярлычок на рабочем столе у пользователя", а вместо этого спросил "как получить рабочий стол". Следующим этапом у тебя по идее будет идти "как создать файл в формате ярлычка windows", и тут опять же нет легкого пути - чрлычки не текстовые, а бинарные - либо изучать их формат и писать сырой файл, либо дергать винапишку.
А в общем хотелось бы заметить что у тебя задания странные, и знаешь почему - потому что они платформозависимые. Никто на собеседовании по джаве или в тестовом задании тебя никогда не должен попросить о таком, если ты только не на десктоп идешь. А отношение к десктопу на джаве очень плохое, даже в этом треде уже всплывали нехорошие слова.
Нет, про ярлык я для примера написал. Просто, решил сделать некое подобие программки, которая очищает папку TEMP в винде от мусора, после чего создает на рабочем столе txt файлик с записями: "Такие-то файлы успешно удалены".
Нет, через CLSID не получается - ни Paths, ни URI не распарсивают "file:///::{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}/hello.txt", жалуются на ":" в строке (после схемы file:// уже). Винить их в этом нельзя, это действительно не валидный файловый путь, а хуйня какая-то, только виндус эксплорером распознаваемая. Наверное можно найти нужный OLE компонент, разобраться как общаться с ними из джавы в принципе, и передавать CLSID туда... Так что это тоже такой себе путь.
>Самое идеальное будет дернуть винапишку SHGetSpecialFolderPathW, ты это предлагаешь?
Я предлагаю >>735864
Swing вполне успешно показывает все эти специальные папки и делает это кросплатформенно.
>Во-вторых, мало кто знает, особенно среди людей из первого пункта, что можно переопределять путь таких директорий.
Внезапно https://support.microsoft.com/en-us/office/files-save-to-onedrive-by-default-in-windows-10-33da0077-770c-4bda-b61e-8c8e8ca70ac7
И там путь будет C:\Users\vasya\OneDrive\Рабочий стол
Ну как видишь "рабочий стол" получить не очень тривиально. Такая схема как ты описал действительно имеет место быть, программы часто сохраняют логи своей работы в тестовый файлик. Вот примеры таких мест:
1) Рядом с экзешником (в нашем случае - с джарником) (получить легко: Paths.get("") или Paths.get("."), .toAbsolutePath() по желанию)
2) В корень диска (это обычно при установке драйверов, обычные не-elevated программы доступ на запись в корень диска C: не получат)
3) В тот же TEMP
4) В папку юзера (C:\Users\%Name% - получается гарантированно кросплатформенно через проперти user.home)
Таак что советую вместо рабочего стола выбрать 1, либо 4.
Дикость что Майкрософт поощряет и одобряет такое поведение - использование рабочего стола как склада файлов. Но от них можно ожидать в принципе.
Не знаю кто именно переопределяет, но да. Если ставить 10ку с нуля и при установке указать аккаунт майкрософт. То он поставит OneDrive и запихнет туда рабочий стол, документы, изображения.
Спасибо за информацию. Ставил десятку с нуля, но с локальным аккаунтом, ибо нефиг, и видимо не зря. В моем сетапе хоть OneDrive и шел в комплекте, но такой хуйни не натворил.
Очень плохое качество в коробке. Лучше бы без всяких поворотов.
Да, лучше в home directory создавать папку " .названиеПроги " и уже кидать все туда. БУдет работать на всех (3) ОС.
Заодно с CLSID и реестром.
Изи в лучшем качестве ищется.
Во, нормально.
Нет, на моей центосичке-писечке тоже есть, но к чему вопрос? Изначально анон спросил про путь до десктопа и явно в винде, т.к. упомянул реестр. Вот вам и CLSIDы и винапи. А победил анон со свингом, я даже не претендую.
Может тебе и свитч обычный надоел? Хочешь как в котлине?
О, мне нравится.
Найс! Вот теперь можно и перекатывать.
На бэке есть BeanValidation всяких формочек, прилетающих с фронта - @NotBlank, @Positive, @NotNull и прочее из пакета javax.validation.constraints. Под это дело есть ExceptionHandler, который нормальным образом собирает все ошибки и возвращает на фронт.
Но помимо базовой валидации всей формы есть еще валидация на уровне бизнес-логики, допустим, уникальность e-mail или что-то посурьезнее. Писать аннотации под это, очевидно, боль, поэтому сейчас используем EntityNameValidator для валидации EntityName и помечаем его как спринговый @Component для инжекта и доступа к другим бинам.
Получается, когда приходит форма, она улетает в EntityNameService, оттуда в EntityNameValidator. Проблема в том, что между этими бинами циклическая зависимость и приходится вешать @Autowired на них вместо пихания в конструктор.
Разработке не мешает никоим образом, но глаза мозолит и хотелось бы как-то решить этот вопрос, есть у кого мысли?
https://youtu.be/p1Md20vO4Ts
Что мешает просто взять и обновить джаву? То, что заявлена обратная совместимость, а на деле запускаешь на новой джаве - и нихуя не работает, и исправление возникших ошибок требует дохуя времени.
Годно
Sping - это новый фреймворк от разработчиков спринга, где тебя вращают на хую еще более красочно. Для установки на котлин, нужен плагин poke
Гугли инвариантность и контрвариантность дженериков. Сразу скажу, это довольно мозговыносящее контринтуитивное дерьмо на первый взгляд. Но вообще там все логично.
Если кто и заменит спринг, то это Micronaut.
+ковариантность забыл
И еще вопрос. Читаю Хорстмана первый том - 11 издание по java11. Кроме первого тома, как мне кажется мне нужно будет как минимум 2 главы из второго(пик). А он сети только 10 издание - по java8. Имеет смысл просто читать 10 издание? Или что-то серьезно изменилось в этих темах?
>Практика, больше практики. Уровня laba1.pas: http://codingbat.com/java http://codehunt.com https://hyperskill.org все
codehunt не работает. Есть альтернативы?
11 издание второго тома есть на английском, если можешь читать на нём.
А так да, можно читать 10, прям сильно там ничего не изменилось.
Нет такого уровня английского. Пока только могу Hyperskill JetBrains Academy читать и то поглядывая в словарь, там очень простой английский, видно что много русских в команде. А Хорстманн заметно сложнее пишет.
Ну вот эти две главы мне сходу показались обязательными. На первых 15-20% курса hyperskill мне уже попадались темы из этих глав(регулярки и чтение из файлов). А у Хорстманна это во втором томе(с подзаголовком Расширенные средства программирования), про который в том числе в этом треде говорят, что новичку он не нужен. Как считаешь обязательные главы?
Про потоки данных прочитай обязательно. Ввод-вывод можно просмотреть, но прям вчитываться не нужно, он в джаве слишком переусложнённый, и на практике большая часть упомянутого почти не используется, и в каком-нибудь бекенде на спринге с этим почти не будешь сталкиваться.
Также рано или поздно нужно будет прочитать про базы данных, но на первых этапах можно обойтись.
Остальное, вроде XML и сокетов, без необходимости изучать смысла нет, всегда можно вернуться и прочитать.
Спасибо.
https://it-job-germany.de/jobs/javafx-developer/
А еще у них EJB, SVN, SWT и они пилят свой язык на ANTRL!
>Хуйню спизданул
Если кто-то и спизданул, то ты
>Cущественным плюсом будут навыки разработки собственных языков / грамматик и знание ANTLR
>разработки собственных языков / грамматик и знание ANTLR
Прочитай еще раз и сравни с тем, что ты написыл, высер.
>пилят свой язык на ANTRL
>Cущественным плюсом будут навыки разработки собственных языков / грамматик и знание ANTLR
Дауненок, ты сайчас собираешься начать задвигать что DSL это не язык? Или что они это требование от балды написали?
Ну охуеть, теперь!
Книжки по java - хуйня.
Подскажите, пожалуйста, как мне правильно класть туда сущности, чтобы не писать на каждую свой персистенс юнит с копированием пропертей?
Если я напишу так: https://pastebin.com/NA7gDDd2, мне выдаст ошибку
javax.persistence.PersistenceException: No Persistence provider for EntityManager named com.helloworld.dto.User
Мышку с клавиатурой на гвоздь повесь и не суйся сюда больше.
Осваивай спринг.
Сразу с аннотациями.
Какой нахуй xml в 2020, ты там ещё 5ую яву и мейнфреймы учить не собираешься?
Такой-то высер.
Книги Мартина это набор общих рекомендаций, всё те же паттерны, только сбоку. Набор советов, которых можно придерживаться и о которых нужно знать. Но, заставь дурака богу молиться...
Долбоёб же придирается к примерам, которые были взяты чтобы продемонстрировать некоторые изложенные принципы. Это как доёбываться к учителю химии, который в пробирке смешивает уксус с содой, чтобы ученики сразу поняли, что он имел ввиду, со словами "А вот мы в промышленности так не делаем!"
Насколько убогим должно быть абстрактное мышление у человека, чтобы он этого не понял? То, что книге 10+ лет он понял.
То, что жаба за это время изменилась он тоже вроде понял. А вот этого нет.
Я всё ждал, когда он начнёт ругаться, что в книге Мартина Stream апи не упоминается или Спринг.
Ну хуй знает, если бы я в коде увидел private static int
smallestOddNthMultipleNotLessThanCandidate(int candidate, int n) я бы тоже дальше читать не стал.
Ничего плохого нет.
Можешь ещё ассемблер и С выучить, тоже полезно будет. Как раз когда закончишь одно уже из башки выветрится предыдущее.
Тут как в анекдоте, тебе шашечки или ехать?
Если ехать - то хуячь свой круд на спринге, освоишь на ходу Хибернейт на том уровне, на каком он тебе нужен.
>>738303
Надо было ебашить с реальными примерами, Мартин. Такими, страниц на 20, чтобы бизнес-логика была показана от Адама и Евы.
Чсх, даже хабродаун в конце добавил
>Вы хотите, чтобы книга вызвала какую-то реакцию у читателей, какие-то дополнительные комментарии
>Исходя из этого, «Чистый код» оказался годным. У нас состоялись хорошие дискуссии
>Мы смогли использовать отдельные главы в качестве отправной точки для более глубокого обсуждения актуальных современных практик
Т.е. книга со своей задачей справилась, даже у макаки начали мозги работать, она начала пытаться обрабатывать свой опыт с оглядкой на книгу Мартина.
Потратишь кучу времени и сил впустую. Это как хотеть перед джавой сначала освоить ассемблер.
>Надо было ебашить с реальными примерами
Там выше есть реальный пример. Не такой вырвиглазный, но так же противоречит всему, что написано в тексте.
Хотел ещё расписать, но потом подумал, что я ж не первый. И точно, вот тебе уже на хабре ответили
>Примеры в статье вырваны из контекста. Например SetupTeardownIncluder — это не идеал. Где Мартин сказал, что это супер классный кусок кода?
>Это результат рефакторинга, через разбиение толстых методов на маленькие. Который приводится, чтобы объяснить, что маленькие функции — это очень важно.
>Даже если не применять другие принципы из книги вовсе.
>И вот мне интересно, какой процент из голосовавших читал эту книжку, и может сказать, что она являлась бесполезной тратой времени?
>Что вообще вы ожидаете от книги? Волшебный секрет «Тайны драконы», который прибавит 200К к ЗП?
>Я считаю, подобного рода статьи без весомых альтернатив, не больше чем оправданием школьника, который не стал учить физику, потому что «в жизни не пригодится».
Только не говори, что ты сейчас будешь читать какой-нибудь талмуд на 1к+ страниц вроде спринг про.
Лучше сразу Спринг Ру.
Вообще-то так и хотел. На собеседованиях ведь часто спрашивают про кишки спринга?
Сначала делаешь круд на спринге в качестве тестового.
Потом могут вопросы задавать по некоторым аннотациям, в сбере меня про @Transactional спрашивали, например.
В другом банке про @Component или @Service, не помню уже.
Чтоб прям по кишочкам, по всем этим фабрикам бинов и контекстам - меня такого не спрашивали. Да и чёт я не помню, чтобы в том же спринг про прям так уж кишочки разбирались, также по вершкам всё. Кишочки они только на практике познаются.
Тогда, видимо, хватит SD JPA мурзилки. Спасибо за разъяснение.
Реально. Я сначала тоже боялся джава-вакансий, где сразу по 10+ технологий упоминается, а по факту всё за пару месяцев учится (зависит от бекграунда, кому-то год понадобится).
Ну и глубоко знать не нужно, проходишься по самым основам той или иной технологии, понимаешь, как это применять и куда дальше копать при необходимости - и идёшь дальше.
В шарпе та же хуйня, только стек другой. Просто здесь он не упомянут.
Без него найти работу действительно несколько сложнее, но всё же реально.
>Так всегда было или рыночек порешал
Последние 10-15 лет так все и было. В конце 90-х и начале нулевых возможно брали людей менее скилловых, но тогда рыночка айти почти не было - работа только в мск и спб в очень ограниченном количестве, а в мухосрансках только НИИ, куда люди шли из местных вузов, а не с улицы.
Иди торбу носи/гайки на завод крути, хули ты лезешь в айти? Только не говори, что денюшки большие увидел и сразу подорвался. Это будет слишком жалко выглядеть.
Нет, на вышку поступил "информационные системы и технологии", если сравнивать с одногруппникам, то из 30 человек в 5 лучших, а может в 3. Буду все лето учить по часу в день, так как все равно ленивая жопа. Но края пиздеца не вижу пока что. И мне ещё англ тянуть с 0, так как в гуманитарной школе учил немецкий, и это тоже херово, так как за 6 старших классов по часу-два в день нас ничему толком не научили. (В группе у меня лучше всех был немецкий). А тут с нуля параллельно учить. Я конечно понимаю, что сам идиот и выбрал, возможно, не тот путь. Но программирование меня привлекает не 300к/наносек, а тем, что можно относительно спокойно работать и не получать 20-30к, ну и интересно тоже. В универ кстати только с++ преподают, поэтому сам перекатываюсь на жабу. С++ джуну вообще пзд.
RandomAccessFile знаешь?
Тут объективная реальность. Работодателю нахуй не нужны бездарные уебаны, которых надо 2 месяца учить хеллоуворлд писать.
Им надо тех, кого сразу посадил на рабочее место, дал день на изучение проекта и через неделю-две он уже хуярит таски как будто всегда тут был.
Бездарный уебан думает, что джун это самая низкая должность. Это не так. Стажёр, трейни, за еду, за 30к в дс - вот выбор тех, кого этот список пугает.
Но даже тут, опять таки, ещё одна вертуха в ебальник от суровой реальности - на стажёров берут всяких студентов, набранных с последних курсов вузиков. И даже туда очередь.
>>738458
Всё, что ты можешь сделать со структурами данных в голове ты можешь сделать в коде.
Вот есть мапа "Имя шлюхи" - "Прайс". <String, Integer>. Как сгруппировать имена по прайсу?
А, ну тебе хоть не 30ка как некоторым. Студентик ещё, учись, побегай по кафедрам, если ты действительно такой пиздатый то быстро за еду вкатишься, по началу тяжело будет, но потом уже к выпуску будешь нормально работать и в ус не дуть.
Конкретно в программировании, в остальном тот ещё раздолбай.
Какие бывают bean scope чуть ли не на каждом спрашивают. Никто, правда, не знает зачем.
>на стажёров берут всяких студентов
В mail, например, на стажера могут взять только студента - такие правила. Не удивлюсь, если в других крупных конторах также.
Во первых надо найти, какой метод из сервиса используется в валидаторе и вынести его в отдельный слой, который заинжектить и туда и туда.
В общем, буду делать простенький спринговый сервис, который должен отрабатывать раз в сутки и вносить данные в удаленную БД.
Как будет правильнее поступить? Вижу такие варианты:
1) Крон запускает по расписанию приложение, которое делает свои задачи и вырубается.
2) Сделать планировщик внутри приложения. Запустить однажды, а там уже пусть работает само по расписанию.
Если честно, проще и быстрее было бы на скриптовом языке сделать, но мне спринг учить надо и портфолио пилить. Ну и расширить в дальнейшем можно будет или где-то переиспользовать как модуль чего-то большего.
spring scheduler, конфигурируется как крон. Делай через него, ибо все реальные проекты это нонстопные приложения, а не перезапускаемые раз в сутки
Если это разовая задача, то запускаешь по крону.
Если это монолитное вэб, например, приложение, которое ко всему прочему ещё и какие-то задачи в фоне запускает, то, как уже написали, у spring есть готовые решения для этого.
если у тебя хорошо с дойшландским, то с изучением инглиша проблем не будет.
а вот если бы было на оборот - земля тебе пухом
Сдаем перекат только для олдов. Вкатыши мимо.
Сгруппировать, а не отсортировать.
Маша - 1к, Катя-2к, Зульфия - 2к, Наташа - 1к.
На выходе "1к - Маша, Наташа", "2к - Катя, Зульфия".
map.entrySet().stream().collect(Collectors.groupingBy(Map.Entry::getValue));
А ты хотел увидеть вложеные форы и вайлы что ли?
что такое на выходе"1к - Маша, Наташа"? Новый тип контейнера что ли создавать для них? В исходном же одна цена-одна шлюха
Вот ответ >>738816
Downstream collector, как-то так это гуглится.
Тебе нужно уметь делать подобные штуки. Просто из головы бери простые задачи и пытайся их реализовать.
Как бы я повернул список?
Как бы я отсортировал мапу по ключу? По значению? А какие вообще мапы сохраняют порядок элементов?
Как записать/считать мапу из файла? Из джейсона?
Как записать данные из джейсона в POJO, а потом сохранить в бд?
С типами, интерфейсами так позаморачивайся. Придумай класс, попробуй его расширить, добавь туда интерфейсов, сделай метод принимающий не класс, а интерфейс в качестве параметра, дохуя чего, что кажется простым, а на деле надо хотя бы разок самому это сделать, чтоб на собесе жиденькое по ноге не потекло.
>>738837
Так вот именно, это потому кор жабой и называется. Основные методы, которые ты должен использовать просто из головы, как используешь вилку с ложкой. Наизусть то их все знать не надо, просто знать, что такое возможно и при необходимости загуглить за 30 секунд.
> Вот ответ >>738816
Имхо, то как ты поставил задачу - моча и говно. "Сгруппировать имена по прайсу". Охуеть надо, ни в каком виде должен быть аутпут, нихуя. На доске они в табличке должны быть сгруппированы? В какой-то целевой объект? Чтоб смог с ними работать какой-то интерфейс? Догадайся, ньюфажина, сам
Ты не туда коннектишься. Ты коннектишься к томкету на рут, а надо - на context-path приложения (выделено на пикриле). Т.е. у тебя будет примерно такое:
http://localhost/test-spring-app
Какой именно путь имеет твое опубликованное приложение смотри в менеджере приложений по ссылке на скрине.
Другой анон меня понял, ты - нет.
Думаешь на реальном проекте тебе будут разжёвывать такие вещи? Да им похуй всем в каком там что формате и как ты это будешь делать, главное чтоб работало и фронт это вывести мог.
но у меня контекст указан пустым, я так понимаю в этом случае он прямо в рут и деплоится. И все равно ничего не взлетает
Тред хоть почитай, я выше уже кидал пример.
>>727551
Это на мидла вроде.
https://github.com/mkb-official/test-task
Джуниор.
https://github.com/revkov/JAVA.SB.TEST
Джуниор.
А вообще, в чём твои проблемы? Не можешь сам на хх зарегаться?
Я тебе еще раз говорю: зайди в /manager/html/list и посмотри что на томкете опубликовано, хули гадать на кофейной гуще.
long current = System.currentTimeMillis();
List<Future<Task>> tasks = ...;
tasks.forEach(Future::get);
long total = System.currentTimeMillis() - current;
Пойдет?
Кое-как смог туда попасть. Пришлось гуглить как туда вообще доступ получить, я просто полный диван, вчера первый раз попробовал что-то сложнее двачерства, сори что я такой тупой.
Вот список приложений. Я так понимаю это значит что ничего туда не разместилось из IDE?
олсо, как сменить пользователя на сервере? я зашел как админ, а чтобы получить права на вход в менеджер пришлось тупо прописать учетке админа роль "manager-gui"
Хорошо. А если у тебя нет Future? Но есть доступ внутрь таски, т.е. ты ее сам реализовываешь.
Сам язык это синтаксис, операторы там, ключевые слова. А кор это именно в отношении стандартной библиотеки SE применяется. Еще пример - есть кор у спринга, тут же ты не скажешь что это язык, это именно классы спринга.
синтаксис это синтаксис. А кор это семантика выраженная через синтаксис + сам он. (синтаксис может быть одинаков у двух языков, но разная реализация и смысл) Различие в том, что невозможно вывести никакую часть кора через остальное. А если ты знаешь кор то абсолютно все что входит в стандартную библиотеку ты сможешь понять сам, без гайдов, или даже переписать, потому что библиотека выводима из кора
Немного не понял, ну вот.. А чем фючеры плохи?
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;
}
}
Лучше попробуй потыкать спринг бут, он сам поднимает и настраивает у себя томкат, а тебе достаточно запустить олин жарник. Для изучения спринга норм. Но с обычный томкатом тоже лучше потыкать, бут сейчас не везде.
Делать тебе нехуй это говно пилить.
Тебе ещё 5-10 минимум придётся таких сделать, лучше бы сразу реальные просил. Там хоть какой-то фидбек дают иногда. А так, что толку, что ты сделаешь их, если на ошибки тебе никто не укажет.
А в треде может укажут, если захотят.
>А чем фючеры плохи?
Они не плохи, но их может не быть искаропки. Приходишь на проект и PM сообщает, что заказчик требует использовать хипстерскую библиотеку YobaExecutorLib, якобы она круто рулит потоками и ниче другое использовать нельзя. Тебе хочется прописать заказчику в ебыч с вертухи остаться на проекте, твои действия? В общем, переложи 4 спички образно чтобы тест заработал. Почему, кстати, не работает?
>>738956
У тебя какое-то свое собственное определение кора. Попробуй его в следующий раз объяснить на собеседовании, может накинут баллов. А работодатель, когда пишет в вакансии "Java Core", имеет ввиду что ждет от тебя как раз отличное знание SDK Java SE, умение пользоваться стандартными инструментами, он ожидает что ты знаешь коллекции и Stream API, а не умеешь их сам навелосипедить ("вывести из кора").
Эта шняга и так на спринг-бут, по крайней мере, в депенденси почти все библиотеки - boot. Я пока тыкался там в своих потугах уже вроде довольно неплохо понял как и что там где конфигурируется. только вот большие сомнения в путях, потому что я толком не понимаю где должны лежать выходные файлы, например. У меня две папки есть out и target. Одна из них я так понимаю появилась в результате неправильной конфигурации, а как должно быть хз. Еще я не использовал архетип мавен при создании может это тоже как-то повлияло. Капец, с ядерным реактором разобраться проще
>>738917
У тебя непонятно что на рут замапилось, названия нет, пустое поле. По дефолту там "Welcome to Tomcat", статичный сайт с одной всего jsp-хой. Вполне возможно у тебя что-то туда все-таки уже закинулось, советую проверить непосредственно папку tomcat/webapps/ROOT - если увидишь свои классы, то деплой прошел успешно, но в коде приложения есть ошибки типа отсутствия маппингов или что-то еще, в общем приложение как бы опубликовалось, но еще ничего не выдает.
Если бут, то достаточно указать в pom.xml <packaging>jar</packaging> вместо war. И настраивать томкат не придётся.
Если собираешь мавеном, выходные файлы лежат в target. out берётся, если собирать самой идеей (вроде, она ant использует), но не думаю, что она соберёт до конца, потому что вряд ли там есть менеджер пакетов.
> архетип
Можно без этого обойтись. Например, сгенерировать проект на start.spring.io и посмотреть, что и как там настроено.
Интерпретируется при запуске приложения. Там JVM генерирует нативный код и уже его запускает.
То, что EE больше рулит не оракл, никак не значит, что разделение на SE и EE исчезло.
Да.
Я думал приложение должно немного поработать и прогреться, чтобы все jitом перевести в нативный код. А вы говорите, что прямо во время запуска.
Да, конечно, не прям при запуске. Это просто противопоставление к "компилируется во время установки".
буду что-нибудь пробовать. я его специально собирал в war-explode. не знаю правильно это или нет и какая вообще разница.
Еще почему-то name подчеркивает IDE, говорит can't resolve, хотя пример этот копирован из мануала по на оф сайте спринга, и name есть в контроллере
>>739176
А как вообще увидеть что на сервере? где смотреть это?
чувствую себя дауном ебаным :(
Зависит от реализации, OpenJDK и Oracle JDK - так и делают. А вот Jrockit не имел интерпритатора вообще, сразу компилировал С1.
Azul Zing при использовании Ready Now тоже сразу компилирует С2.
На андроиде своя собственная несовместимая жвм, а на айфонах была только васянская от сообщества.
В теории - да. На практике - прокатит только с линукса на винду/mac os/BSD/etc или наоборот, и то не всегда.
Ну куда ты томкет поставил, зайди в ту папку. Вроде ты там недавно даже был, в подпапке conf настраивал как админа добавить. А теперь тебе нужна подпапка webapps, а в ней еще одна подпапка ROOT - там лежат файлы приложения, к которому получаешь доступ по адресу localhost:8080.
А, вон где. Ну там я так понимаю нет нифига у меня в итоге всех движений
В папке web-inf один xml лежит только с каким-то мусором
заменил, но ничего не поменялось, ни в том что ИДЕ ошибку рисует, ни в том что оно не разворачивается никуда походу
Да, это стандартные файлы (пик 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 это приложение так же должно появиться, проверь. Если все успешно, значит приложение ты написал правильно и к нему претензий нет, и дальше будешь ебаться с авто-деплоем приложения через идею.
да, попробовал из менеджера развернуть, он мне говорит что должен быть файл war
еще один вопрос - а где это настроить для мавена? У меня в project structure и так указано в разделе артифактов - war
для мавен как-то отдельно настраивается?
Вот, смотри. Хеллоуворлд для создания вар-ника.
Потом я пишу mvn clean package
И в target/ лежит war-файл, который и надо деплоить.
>скопировал его ... в ROOT
В ROOT не надо, только в webapps
>сервер перезапустил
Молодец что попробовал, но это тоже лишнее. Должно все подхватываться автоматически. А сейчас не получилось потому что томкет сканит папку webapps на наличие варников, и новых варников он не нашел, так что все верно, результат нулевой.
Лучше покажи свой pom.xml, наверняка с ним что-то не то. Для вара надо добавить <packaging>war</packaging>, этот параметр не должен игнорироваться мавеном. Все что ты пишешь в project structure в идее на это пока забей, работай напрямую с мавеном и pom.xml. Вот у этого анона >>739315 хороший помник, из важных моментов здесь это:
- вышеупомянутый packaging war
- scope provided на томкете
- build/finalName - это имя выходного файла без расширения, сюда напиши test
war собрался, закинул его но он не работает все равно.
правда при сборке произошел такой фейл:
Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
короче гуглить буду. все равно надо понять как все работает, а не тупо запомнить действия
да, я поправил там, теперь war на выходе. вот такой вот pom. зависимость скрыл потому что там их километр
Ну что могу сказать, у тебя сложный хелловорлд, надо проще. На первый взгляд в pom все корректно, наверняка ошибка из-за километра зависимостей.
Упрощай дальше, выкидывай все лишнее, смотри в какой момент заработает. Но это сложный путь, и не единственный.
Проще будет создать новый мавен проект без архитипа и прописать всего 3 (три) файла, такой вот хелловорлд накидал тебе. Щас быстро по-фасту создаешь эти три файла и у тебя первое рабочее бут приложение под томкетом. Это все проверено и работает, не обосрись.
- pom.xml ( https://pastebin.com/Vq18hR2u )
- Main.java ( https://pastebin.com/ckmhk3hM )
- AppEndpointController.java ( https://pastebin.com/dJdg5F1u )
Дальше будешь наращивать сложность: добавлять зависимости по одной, другие файлы там какие есть в твоем первом хелловорлде, и внимательно смотреть когда "упадет". Такой вот путь.
Было так разок полгода назад. Тоже 2К постов было. Потом мы пару дней сидели без треда.
А тем временем бамп. Никто не угадает какой инструмент я загадал? Кто там хотел практических задачек, ну вот же, берите-решайте, ориджинал контент.
Вроде было такое. Зато отдохнули.
Спасибо, анон. Все качнул, завтра буду пробовать. Сейчас уже поздно в моих мухосранях. Добра. Если все взлетит напишу сюда радостные вопли свои.
Решение? Нет. Внутри кастомного экзекутора? Это не важно, но если важно то тоже нет, обычный фиксед пул.
Вот у меня есть таблица 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. Подскажите, пожалуйста, что я делаю не так?
Добавил немношк бизнес-логики чтобы тест явно падал. Кстати, если это было не очевидно в первый раз - изменять можно и тест, и MyTask - это ваш код. Неизменными должны быть следующие условия:
- использование метода execute() у экзекутора
- ~100 тасков
- ~10 потоков
Скинул, потому что это самая короткая и ёмкая статья, объясняющая эту тему, что я видел.
По аналогии сделай, это несложно.
Спасибо, конечно, но мне надо дичайше разобрать именно one-to-one отношение, а его там нет.
>но на месте айди юзера стоит null
Ты хочешь чтобы в таблице unique_codes были два столбца из таблицы users чтоли - и code, и user_id? Связь делается по одному полю, а не по сколько захочешь. И у тебя это уже users.code = codes.code.
Вот так? Ну и по какому полю связь-то хочешь? В любом случае выглядит избыточно, нужно оставлять что-то одно.
Связь хочу по users.code_id - codes.id. One-to-one сюда как раз подходит ведь. У одного юзера есть один код, у одного кода есть один юзер.
>Связь хочу по users.code_id - codes.id
Подходит. Но где в этой связи user_id на который ты жалуешься что он null? Я же с этого и начал: ты хочешь чтобы автоматически заполнялись два поля - и codes.id, и codes.user_id?
Ну, получается, вот я создаю нового юзера, создаю новый код, даю его юзеру. В бд users.code_id должен вписаться пк из codes, в codes.user_id должен вписаться пк из users, и в codes.code должен вписаться сам код. Как-то так..
Мы ставим минимум 8 максимум 24. Вкупе с g1 вроде пока хватает.
Может кто-нибудь сказать, чем котлин лучше джавы, что в нем реализовано лучше, удобнее (сахара больше? функциональные возможности? что-то другое? ничего из этого?). Желательно чтоб ответивший знал реально оба языка, чтоб это было не с проперженного дивана мнение.
А я учусь в вузе, купил курсы джавараш, немчинского, хекслет, гикбрейнс, жидбрейнс академи и все книги мартина фаулера, хорстмана, шилдта, спринг ин экшн.
Зачем ты все это купил если это можно спиздить в торрентах?
Ну это естественно, но вот вдруг без корочек резюме не попадет к тимлиду на стол просто.
Я до начала изучения джавы искал стажировку на фронта, но меня везде посылали нахуй без образования.
Самое популярное цыганство - жс-фронт, пыха и пайтон. Последние самые потешные, если подумать о судьбе вкатышей.
Я с вышкой. Но спросили про неё только когда уже тестовое сделали, алгоритмы на листочке порешал и о зп договорились.
"О, да у тебя и диплом есть, очень хорошо!"
Возможно, да, у хрюшек фильтр стоит, ведь в 2020ом не получить вышку в рахе это надо быть дауном.
Пытайся, выходи на контакт, не думаю, что если ты уж прям полностью всем устроишь работодателя они тебя пошлют нахуй только из-за отсутствия корки.
>чем котлин лучше джавы, что в нем реализовано лучше, удобнее (сахара больше? функциональные возможности?
Почти все преимущества можно свести к этому "сахара больше", только ведь сахар это хорошо и важно, это означает, что в языке есть много приятных удобств. Каждое в отдельности не является такой уж киллер-фичей и про каждое можно сказать
"ну и чо, я прекрасно обхожусь", но когда все они есть вместе, получаем язык, работать с которым комфортнее и продуктивнее, а код становится более выразительным и легче поддерживаемым.
Или, если грубо, - котлин лучше джавы так же, как современная джава лучше джавы двадцатилетней давности.
Минусы, странные и кривые решения при этом есть тоже, конечно. Но плюсы перевешивают, если отталкивать от практических потребностей, а не заниматься поиском идеального языка мечты.
спасибо, анон. А если с шарпом сравнивать все это, то как? Шарп тоже похож на жаву но сахарный и со всякими фичами типа линка и делегатов. вопрос тупой, я понимаю, но все же.
Шарп, для начала, это другая платформа, сравнение .NET и джавы это отдельный разговор. А если смотреть только на язык, то шарп и котлин где-то одного порядка вещи. Можешь считать, что котлин это такой шарп для JVM.
>Шарп, для начала, это другая платформа
ну, это очевидно. Я просто его +/- знаю, и он тоже похож на Жаву, поэтому относительно него спросил сравнение. Тем не менее, благодарю за ответ.
Ну все таки одна если не киллер, то супер фича у него есть. Это Корутины.
Спроси в котлин-треде, здесь нормальные люди, а не пидорасы.
Сап, доброанон. Все взлетело. Спасибо за помощь. Буду этот хэлоуворлд использовать как тестовую площадку для экспериментов.
Олсо, я вручную добавлял Томкэт в "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 заворачивал в скобки ( )
Вот. Проблема не уходит.
Ты скобочки забыл круглые. Варианты с ИЛИ должны идти в скобках: (abc|def|ghi)
По бекслешам правильно первый вариант: \\d
Круто, спасибо что пояснил. Если почитать "спринг в действии" то там можно все это найти? или только по статьям собирать и на опыте?
Благодарю. Я кстати пробовал их ставить, даже в том посте написал.
Но я их ставил вместе с \\\\d, а это уже неправильно.
Ну, обычным println наверное нельзя смотреть регулярку.
Spring in Action это про спринг в общем. Даже не знаю есть ли там отдельная глава по буту, я читал Pro Spring. А вот пикрил тебе явно более глубже расскажет про бут. Но я на самом деле даже не помню чтобы там объяснялось такое, может максимум пара абзацев, то что я уже и так пересказал.
Еще могу посоветовать делать сначала регулярку "в вакууме", а не в джаве. Открываешь например regex101.com или что тебе больше нравится, пишешь тестовые данные, составляешь регулярку, не ебешься с дополнительными бекслешами. Когда заработает - переносишь к себе в джаву, эскейпишь бекслеши.
Хорошо, учту.
Эх, вот бы регулярки в джаве записывались например в таких кавычках ` `
чтоб не было этих правил с бэкслэшем.
паблик пук среньк воид с толку сбивают.
Да, кстати, при вставке.
Как же тяжело ковыряться в ЖС после Жавы. Ощущение что ты нихуя не контролируешь свои типы сбивает с толку
Забей пока на задачи и изучай технологии - спринг там, базы. Может, станет интереснее от осознания того, что теперь можно сделать что-то более впечатляющее, чем получить данные из консолки и записать результат в файлик.
> мясорубка
Небось ходил в какой-нибудь яндекс. Там не то что стажёрам - всем трудно.
Первое время тяжело, поэтому нормисов и предостерегают, что если идёшь в айти из-за денег, то это хуёвая затея.
Я вот ловлю себя на мысли, что когда после нескольких часов кода какая-нибудь фича наконец начинает работать как надо, то у меня разве что шишка не встаёт.
По началу только это и заставляло двигаться дальше, теперь ещё и деньги платят за эту хуйню, вообще ахренеть.
>мясорубка из любителей олимпиадного программирования
Есть такое. Но первые 10-20 собеседований это не повод сдаваться. Это норма.жпг.
Алсо, жаба это ж не только жаба, это ещё SQL, noSQL, спринг, паттерны, хуятерны, алгоритмы, всё это ещё надо в докере собрать и из под консоли sudo дёргать, ну ты понял. Нахуй ты лез вообще? Есть же жс или петухон. Лез бы туда, там то не будут на ревью ебать, за то, что ты в репозиторий логику из сервиса добавил или ещё где с архитектурой обосрался. Наверное.
>>741758
>Небось ходил в какой-нибудь яндекс. Там не то что стажёрам - всем трудно.
Два чая. Надо лезть в небольшие конторы для вката. Ну такие, где весь процесс собеседования занимает меньше 40 минут.
>Надо лезть в небольшие конторы для вката. Ну такие, где весь процесс собеседования занимает
Что за конторы? что будут спрашивать в таких конторах? Алгоритмы?
И куда идти из-за денег?
>>741758
АТ Consulting, в отзывах пишут, что фирма убогая, и работать надо с 9-23, текучка сильная, поэтому я думал, что им нужны люди, и попасть проще.
Спрашивают везде одно и тоже, просто одним нужен ещё один сотрудник, а другие просто проводят собеседования ради собеседований.
Одни возьмут первого попавшегося адеквата, потому что работа есть и её надо работать, вот прямо завтра, а другие будут N часов про круглые люки спрашивать и потом даже не ответят.
>АТ Consulting
Это на дмитровской, такой ещё вытянутый офис в виде коридора, будто какой-то завод старый или хуй пойми что за здание.
Был там, типичные вопросы по методам класса обжект и отличия связного списка от аррейлиста. Вообще забыли про меня и ничего не ответили, пока сам не напомнил.
>9-23
Даже на собеседовании упоминали, что у них в трудовом договоре прописан ненормированный график.
> Я понял что мне это не интересно
Зачем ты вообще тогда в это полез? Конечно же ты в таком случае проебал время, если научился чему-то что тебе в итоге не нравится. Мотивируйся теперь тем что это относительно востребовано и оплачиваемо. Хотя обычно успехов добиваются те кто мотивируется именно увлеченностью.
Я еще только вкатывальщик на хэллоуворлдах, но что тебе мешает ебануть
innerString.contains(goalString)?
в одну строчку узнаешь есть ли твое слово (goalString) во входной строке innerString
Ну так я как-будто бы это и написал как "топорный метод". Только у меня не одно слово,а коллекция ключевых слов. И надо сравнить с каждым из них.
Ок, спасибо, погуглю.
держи в курсе
Функция, переданная в map(), должна возвращать значение, а для peek() она должна быть void. То есть peek() выполняет некие побочные действия, например, логгирование, а дальше передаётся оригинальный поток.
Вот только не всё так просто, там ленивость и всякая хуита, из-за которой логика вызова peek() непрозрачна, например, он может не вызваться вообще, если в конце стрима у тебя какой-нибудь count(). Ну и поэтому в доке предполагается, что peek() будет юзаться только для дебага, а не в реальном коде.
https://www.jhipster.tech/
Я вкурил вроде. То есть, если экшн внутри map возвращает любой тип Object, то на базе этого типа формируется новый stream<Object>, а если запихать void, то стрин не получится продолжить. и типа для таких случаев и нужен peek, который что-то делает с элементами стрима, но сам поток не реконструируется, и peek можно выкинуть незаметно для самого потока, пропадут только побочки которые родились в нем. так?
благодарю.
>>Простой синтаксис, все проверки делает JVM, проебаться с чем-то сложно.
>>org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/index.html]")
>>at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
>>at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
>>at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
>>... 108 common frames omitted
Ну да, сразу все понятно по стектрейсу.
Да.
В peek() можно изменить поток, эти изменения будут видны дальше. Правда, при юзании стримов лучше вообще не делать побочных эффектов, потому что работает это с множеством оговорок.
Ну да. нельзя изменить в том смысле, что нельзя "переродить" в новые элементы, пусть даже того же <типа>. Все ясно.
>говна написал не проверяя
>Я радуюсь
Ну тут 2 стула. Либо "порадуется" тот, кто будет после тебя в этом говне разбираться.
Либо твой тимлид, когда ты будешь в позе креветки принимать шлепки яйцами по жопе за каждый проёб.
Spring5/Boot2
Не знаю как правильно, но если уж будешь выкидывать эксепшн, то порождай свой.
Ты хочешь выбросить эксепшн и вообще ничего не присылать? Могу сказать что так не делается никогда, кроме возможно самых грубейших нарушений протокола, когда в пришедшем пакете совсем нет какого-то поля, или например имя юзера 1000 символов, тогда как в web UI выставлен максимум в 100 символов - т.е. тут явно кто-то играется, реверс-инжинирит, пентестит. Тут можно и нужно выбросить эксепшен, поймать его, залогировать с варнингом, оповестить сервер мониторинга, т.к. это явно очень интересная и нестандартная ситуация. В зависимости от нагрузки на сервер и тяжести эксепшена допускается не возвращать ничего, хотя даже тут всегда возвращают "хаха иди нахуй хацкер мамкин" "unknown error, please try again".
А обе описанные тобой ситуации - и код истек, и кода нет - вполне ожидаемые ситуации, и "программировать на исключениях" тут не нужно. Передаешь токен в сервис проверки, сервис возвращает код результата - enum или int. Далее в зависимости от логики и количества ошибок в домене, свичом или ифом формируешь ответ с нужным классом ошибки.
>>Ты хочешь выбросить эксепшн и вообще ничего не присылать?
Имелся ввиду 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;
>An error happened during template parsing (template: "class path resource [templates/index.html]")
Я все сразу понял, а у тебя с чем проблемы?
Все дело было в незакрытом теге <div>. Или в неправильном выражении в этом самом диве(но идея молчала, говорила все ок). Стектрейсы там одинаковые. Проблема в том, что в браузере этот хтмл открывается без ошибок, а при запуске сервака и обращению к странице вываливается такое.
Мне, если честно, похуй, в чем было дело.
Как распараллелить загрузку страниц, URI которых получаются путем приплюсовывания циферки к шаблону страницы?
Например:
https://www.diary.ru/~room-service/?rfrom=n
, где n - номер страницы дневника
https://www.diary.ru/~room-service/?rfrom=1820
Мне известно общее количество этих страниц, поэтому что бы загрузить все, я просто пробегаюсь в цикле от 0 до n максимального и синхронно всё загружаю, но это очень медленно. (первый пик)
Пробовал через ExecutorService threadpool = Executors.newCachedThreadPool(); (второй пик) но по факту это не дало особого выигрыша во времени, подскажите, плиз, как это вообще правильно и быстро делать.
Использую библиотеку Jsoup (https://jsoup.org/) для скачивания и парсинга html страниц
>Пробовал через ExecutorService threadpool = Executors.newCachedThreadPool(); (второй пик) но по факту это не дало особого выигрыша во времени
Потому что неправильно пробовал.
https://youtu.be/iP6IUqrFHjw
Вот выучил я Core и дальше смотрю в сторону web-сервисов. Чтобы стать нормальным программистом нужно найти работу, ее не найдешь, если нет хотя бы проекта, его просят на всех вакансиях, очевидно, а я, там писал какие-то рандомные программы с swing или типа того. Так вот, какой проект вы мб реализовывали используя Spring (+ что-то еще, что вам нравится Hibernate и проч и проч), или мб есть идеи для проекта с небольшим стеком простых технологий для веба, я вот пока не понимаю, что мне конкретно учить. Если есть примеры или идеи - отвечайте. Интересно будет узнать про ваши проекты или про ваш путь в Java-разработке
Да, NumberAdditioner, который принимает BigDecimalы в виде JSON по ресту.
Там все легко кроме шифрования. И то скорее всего у какого-нибудь mkyong есть инструкция.
>>Там все легко кроме шифрования.
>>- GET просмотр документа по ID,
Как просмотреть документ в браузере, если нет плагина для его просмотра или мы не хотим покидать сайт? Допустим это docx.
>>Для gui использовать thymeleaf + material.
material это вообще что? Material UI? Это нужно реакт подключать?
Мне.
мне
у меня все работает
Баг двача, открывай в приватной вкладке.
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';
Легаси тред никто не поддерживает?
Возможно, дело в буфере. С предыдущего ввода в нём что-то осталось, и следующий ввод пытается это прочитать. Но это не точно.
Нет, уже и дома запустил - поебурика та же.
С иф-елс та же борода, пробовал.
Это просто первое с чего я начинал изучать жабу - писал дешифратор сначала цезаря-потом вижинир-потом методом частотного анализа для разных языков. курсера-дюк университи
А всякие криптоприколы у тебя начнутся в спринг секьюрити
Но крутые люди на потоке обучаются посредством собственных проектов. Типа берут идею и реализовывают, параллельно гугля то, чего они не знают.
Вот и не знаю теперь, правильную ли методику обучения я выбрал
Шифр вижинера же вроде не поддается частотному анализу при использовании одноразовых блокнотов. Да и в принципе взламывать его накладно технически. Или уже нет?
Если компьютера нет - то накладно, а так вполне взламывается. Сначала определяешь длину ключа, а потом он становится обычным цезарем. Я не помню как длину ключа определял, вики подсказывает что так:
Поиск длины ключа. Можно анализировать распределение частот в зашифрованном тексте с различным прореживанием. То есть брать текст, включающий каждую 2-ю букву зашифрованного текста, потом каждую 3-ю и т. д. Как только распределение частот букв будет сильно отличаться от равномерного (например, по энтропии), то можно говорить о найденной длине ключа.
То есть в хэшмепы все это дело собираем и считаем.
>>при использовании одноразовых блокнотов
Это ж вроде шифр Вернама? Его да, так просто хуй сломаещь, а вижинер это просто кодирование словом - по сути развитие цезаря.
>>крутые люди на потоке обучаются посредством собственных проектов.
Так это и есть самый годный способ. Теорию бегло глянул, чтоб понять примерно что как работает - и начинай писать проекты. Задрачивать теорию без практики бессмысленно - все равно ничего не поймешь, пока не попробуешь. Потом придется перечитывать. Если самостоятельно делать проекты пока не умеешь - то есть всякие hyperskill.org и подобные для совсем простых задач уровня кофе-машины или чат-бота. Потом перекатишься на гайды по спрингу на баелданге.
Хорошо, гляну обязательно, спасибо :3
Вы видите копию треда, сохраненную 26 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.