Это копия, сохраненная 3 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Шапка слегка дополнена и красуется в ОП-посте, т.к.количество слабоумных, которые не могут перейти по двум ссылкам растет.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Сейчас все советуют Hyperskill. Более продуманный план обучения.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Книги: https://libgen.is
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: В наших тредах постоянно появляются люди, спрашивающие о джавараше. Громко объявляют, что начинают заниматься, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять раз скопипасти этот кусок кода и выведи в консоль". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам. На самом деле ты просто потратишь свое время на какой-то мусор.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики. Уровня laba1.pas: http://codingbat.com/java http://codehunt.com https://hyperskill.org все говно, есть литкод Примеры той-проектов: http://eax.me/programming-language-learning/
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет. Вот майндмап с джава-технологиями: https://coggle.it/diagram/WqgTTNMJtPiHph_q/t/java-development-in-2018
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не все конторы дрочат на подход Яндекса который спиздил подход гугла. Но для крупных фирм знать алгоритмы маст хев уже на уровне джуна/трейни, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответамине всегда правильными http://becomejavasenior.com/blog/2015/07/01/327-interview-questions-java-developer/
Перед тем, как задать вопрос Как вайти в айти?, ознакомься с вики:
https://github.com/qqqlll/Java-Thread/wiki
https://github.com/random76/Java-Thread/wiki
Маняме сраное
> Шапка слегка дополнена и красуется в ОП-посте, т.к.количество слабоумных, которые не могут перейти по двум ссылкам растет.
Не спасёт от других слабоумных, которые не читают шапку перед тем, как спросить.
ШАПКА НЕ НУЖНА
Расскажите про впечатления
О, шапка, ура! Говно.
C, C++
Каково это ловить сегфолты и плавающие баги вместо программирования?
5-10% большей производительности и 50% меньшего потребления памяти (которая в облаках стоит муку, а абсолютно все современные софтовые продукты облачные) действительно стоят того гемора в который ты вкатился?
Если есть желающие совместно изучать, милости прошу в tg: @kiri_neko
Конечно корректно.
Просто конкретно тут можно зарефакторить и вынести что-то в отдельный метод хелпер который будет сетить филды и обрабатывать ошибки, чтобы было более читабельно.
>потребления памяти (которая в облаках стоит муку
Держи наркомана!
Память в облаках стоит конских денег. И вообще облако, как только у тебя начинается потребление ресурсов выше минимального, начинает стоить каких-то неебических денег.
Да и еще пара моментов:
1. У тебя есть логгер, но ты пишешь в System.out
2. Скомбинируй сообщение об ошибке "Failed to parse number" и саму ошибку в одной записи лога
3. Пиши лучше log.error() это более читабельно.
4. Ты пишешь по русски - оставь эту привычку навсегда, в логах только латиница, без русских букв, псевдографики и умляутов. Только ASCII, чтобы потом не страдать геморроем с правильным декодированием логов в ELK.
Сказал, как отрезал.
Очень.
Отучился в бауманке кстати в прошлом году на робототехника, отходил почти на все пары, диплом со средним баллом 4.5, ни разу не работал, с 3 курса просто с ноутом сидел на последних рядах и лениво ковырял пердун и курсачи, гордость не позволяла их купить за 5-6к оглядываясь назад, лучше бы я их купил, они сожрали месяца два моей жизни в часах. Денюжка была с различного рода шабашек на фрилансе, телеботы, боты для любимой игры, чтобы автоматизировать процесс гриндилова и всякие задачки долбоебам и т.п.
Щас я понял, что пердун говно и собираюсь ПЕРЕАБУЦЦА чтобы в офисе сидеть. Но фактического опыта-то у меня нет, интересно, смогу ли я найти стажировку на жабе\котлине и как это гуглить.
Куда уж шустрее блядь, спеки компа скидывай, будем обоссывать, если там кордуо какой-то.
Решил всё левое не ставить, типа AWS, git и прочее. Выдаёт 900 Мб схаванной памяти. А так вроде работать можно. Пека старая, не удивительно, что будет подлагивать.
Плагины? Мне их отключение не сильно помогало.
>гордость не позволяла
Ничего, скоро придёшь стажёром к 22 летнему синьёру, он тебе объяснит чего твоя гордость стоит и диплом со средним баллом 4.5.
Будешь с 30 летними таксистами в одном опенспейсе параметры у методов на нулл проверять, нюхая их пердёж и слушая истории о личинусах.
If you register on the platform before July 1, 2020
You will continue to receive free access to all JetBrains Academy learning activities and resources until January 1, 2021.
You will get a 50% discount off a regular price of $49.90/month for the following 12 months after the free period ends, and will need to pay only $24.90/month for your subscription.
Понятно, а я зарегался 5 июля. Куплю ваш аккаунт на хайперскиллс
Я маленько говоря ебал фильтровать контент в книгах, особенно после Лутца.
Там нечего фильтровать. Тупо пропускаешь главы по графике, апплетам и подобной хуйне, все остальное читаешь. Если ты не можешь отфильтровать материал в книге, то в программировании тебе делать нечего.
Окай, i'll give it a try
>>Your free trial ends on January 1, 2021
Времени то полно еще, тебе там 2-3 месяца хватит на все. или ты не регался там когда все бесплатно было и теперь хуйца соснул?
Именно. Я про хайперс узнал совсем недавно.
Бисмил-ляяхи ррахмаани ррахиим. Аллааху ляя иляяхэ илляя хуваль-хай- юль-кайюум, ляя та’хузуху синатув-валяя наум, ляху маа фис-самааваати ва маа филь-ард, мэн зал-лязии яшфя‘у ‘индаху илляя би изних, я‘ляму маа байна айдиихим ва маа хальфахум ва ляя юхиитуунэ би шэйим-мин ‘ильмихи илляя би маа шаа’а, васи‘а курсийюху ссамааваати валь-ард, ва ляя я’уудуху хифзуху- маа ва хуваль-‘алийюль-‘азыим.
Это у него мозг разжижился из-за нескольких контекстов.
Да.
Ну ладно.
Им обидно что ты не будешь тратить полгода-год на написание сортировки пузырьком, а сразу научишься круды на спринге пилить
Так таких кнопкодавов на собес сотни приходит. Естественно выбирать будут лучшего.
Нет, не нужны. Если че-то понадобится, просто копипасть отсюда https://github.com/TheAlgorithms/Java
- Забудьте всё, что вы учили в вузе.
- О, так я в нём и не учился.
- Извините, но нам нужны люди с высшим образованием.
Они не нужны будут, но без них не возьмут.
Хз, я по методичкеив шаране учил, а потом на википедии и хабре.
мимо полз в свой тред
Потому что тырпрайз пытается косить типо под серьёзность, и тут не то что вышка - корпоративный дресс-код порой обязателен, лол.
Знаете, что меня больше всего раздражает в айти?
Это обилие программистов с мозгами подростка. Почему половина программистов - это парни в футболках с программистскими приколами или героями мультфильмов, в огромных кроссовках, с наушниками на шее и полупустым рюкзаком за спиной. Большинство их разговоров - это программирование и фильмы по комиксам. Часто они неухожены, носят козлиные бородки или несколькодневную щетину. Свои зарплаты они тратят на развлечения или на всякие айфоны и тд, но при этом не могут себе купить нормальную одежду для мужчины.
Казалось бы, у тебя есть деньги, купи себе одежду, постригись/побрейся, запишись в тренажерку. Но нет, хочу выглядеть как бомж, или как великовозрастный подросток.
То ли дело сидеть в МВП-треде и подъёбывать программистов-анальников, параллельно ноя про биопроблемы, да?
Пиздец ты добрый.
>месяца два не спеша
Я через 2 месяца уже на первое собеседование пошёл.
У тебя, наверное, мама вкусный борщ готовит?
>>770316
>прогерский бэкграунд был
>в школе
Улыбнулся.
>моды на майнкрафт писал
Заорал.
Ты о таком лучше вообще не говори. Про курсы, олимпиады, вот это всё. Что ты там задачки с жабараша решал.
Просто не надо и всё.
О, новосибирский до жаба-треда добрался?
>программистов с мозгами подростка
Хз, я только типичных женатиков с 2-3мя детьми вижу вокруг. Подкачанные, загорелые, в дорогих шмотках. Выглаженные белые рубашки (притом, что дресс-кода нет), разговоры только о путешествиях, хобби (дайвинг, верховая езда, иностранные языки).
Где-бы найти таких же сычей, чтоб двач и маняме обсуждать, а джинсы с рынка не вызывали ухмылок?
>>Я через 2 месяца уже на первое собеседование пошёл.
С чем пошел? Что знал/умел? Диплом погромиста?
я тут 3 месяца спринг ковыряю, думаю как микросервисы, докер и ангуляр в дополнение к нему осилю можно будет вкатываться
другой анон
С верой в свои силы, знанием кора, SQL, алгоритмов и 3х аннотаций спринга. Чё на жопе то сидеть? Берёшь тестовое, делаешь, потом на собеседование.
Работа сама себя не найдёт, а узнать, что конкретно надо учить можно только на собеседованиях. В любом случае, на самой работе тебе придётся учить в разы больше. Во всяком случае в первые месяцы, дальше не знаю. Думаю, что так будет всегда.
SQL без СУБД и коннекторов?
С хорошей работой интересней жить.
Хотя, даже сейчас, я бы не стал никому рекомендовать в их лучшие годы сидеть в офисе и смотреть в монитор.
>>я бы не стал никому рекомендовать в их лучшие годы сидеть в офисе и смотреть в монитор
А что бы ты рекомендовал? Отдыхать на своей яхте с блядями на Карибах?
>Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
>A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий
"Охуенно" такое читать, когда ты там работаешь....
Там же есть не только для начинающих задачи. Та же стажировка или секция с играми..
Делай, что приятно. Мультики китайские смотри, спи до обеда, дрочи 3 раза в день. Нахуй офис, нахуй работу. Успеешь ещё.
В любом случае придётся лет 30 вставать по будильнику 5-2 каждый день до самой смерти, когда бы ты не начал, в 20-25-30.
Бабла на жрат можно и в пятёрке поднять. А там брейндед деятельность, коробки по полкам раскладывать.
Не надо по несколько часов усиленно думать.
В теплом комфортном офисе давить на кнопочки и пердать в стул, коллеги обычно нормальные люди. Зп 100к+
То ли дело на дно работе, где-то в пятерочке где тебя начальство даже за человека не считает, а большинство коллег просто опустившееся быдло. Ну и зп раза в 4 меньше
Ты серьёзно сейчас?
В твоём тёплом офисе сидит такое же быдло, просто получает 100к. Начальство не просто не считает тебя за человека, оно ещё и не стесняясь с этого рофлит. Просто им хватает ума не хуесосить прямо в лицо, в отличии от менеджера в пятёрке. Или ты сыч и никогда не был на корпоративах? Сходи разок, посмотри, послушай о чём они говорят. Это если тебе вообще повезёт и барин соизволит сесть за стол с плебсом.
Самая мякотка, это если ты будешь участвовать в рекрутинге, собесах. Ехидные комментарии о твоих возможных коллегах быстро откроют тебе глаза.
Зарплата это вообще не показатель хорошей работы. По лесу с рюкзаком и телефоном шастать выше оплачивается, или сосание хуёв. Я вот недавно 6к за час такой оставил, по сути для неё это был час фитнеса. Мне для этого надо 2дня перед экраном сидеть, хешмапы в идее крутить.
Ладно там финансовых аналитиков или нейрохирургов считать представителями престижной профессии, но сраное айти?
>По лесу с рюкзаком и телефоном шастать
Только не по лесу, а в основном по пескам, и не с телефоном, а с рацией, с телефоном очень быстро арта в место нахождения телефона прилетает.
Ты серьезно сравниваешь секс с всякими рандомами, в том числе и неприятными тебе людьми с проперживанием стула за компом? Ну так перекатывайся в проститутки, какие проблемы. Желающих отполировать хуем твое очко, думаю хватает.
Как разраб, ты видимо не очень состоятлся, раз так мало зарабатываешь.
Теперь возьмем челика за 100к. Удобный офис, оплачиваемые больничные, нормальный отпуск, еда в офисе кофе чай в офисе, спокойная работа - действительно просто нечеловеческие условия труда. Рабство одним словом, кек.
Спасибо
а зачем?
Тебе шашечки или ехать?
А куда проебал упоминание про 3 миллиарда устройств на джаве?
Большей части этих устройств всё равно, потому что половина - это уже выброшенные на помойку кнопочные мобилы с ж2ме, а вторая - ведроид, где всё равно не жававм.
>Да, зря, коробка-автомат это фундаментальная ошибка автомобилестроения.
>Да, зря, двухзонный климат вместо бензиновой печки запорожца это фундаментальная ошибка автомобилестроения.
Не знаю, я знакомого прошу пересказывать мне здешние посты и говорю что отвечать.
Сказать то что хотел, неосилятор?
Нужна коробка. А автомат конечный.
Да, и это плюс, а не минус. А чего ты хотел от языка, из которого до сих пор не выпилили checked exceptions?
> На момент старта java приложения далеко не все классы оказываются загруженными в JVM. Если в вашем коде нет обращения к классу MyClass, то тот, кто отвечает за загрузку классов в JVM, а им является ClassLoader, никогда его туда и не загрузит. Поэтому нужно заставить ClassLoader загрузить его и получить описание нашего класса в виде переменной типа Class
Поясните тугодуму, что тут имеется в виду? Как так может быть, что в коде нет обращений к классу, но мы к нему обращаемся через рефлексию, а может сразу напрямую обратиться? Или это все нужно для ленивой инициализации?
Предполагается, что иногда на этапе компиляции неизвестно, какая именно реализация какого-то ресурса будет юзаться, при этом с ресурсом ты будешь работать не напрямую, а через специальный интерфейс. Ну а в интерфейсе под капотом в рантайме будет подгружаться и настраиваться ресурс. Например, конкретный драйвер базы данных.
Сложна, но спасибо.
Х-р-р-р. ТЬФУ.
Это то же самое, что знать математику по формулам.
Хочу узнать про рефлексию.
Джява есть в 3 квинтилионах девайсов, а что может ваш коплин? Обращаться к функциям с названиями уровня "8===D"?
Пруф.
Ляя, вы посмотрите как четко вошла между постов, красотища!
Method m.invoke(myClass);
myClass предполагает, что можно выполнить метод любого класса, имеющего метод с таким же названием/аргументами и типом?
А если до этого мы сделали
method.setAccessible(true);
То приватный метод любого класса?
Есть тут знатоки?
Чтобы было понятнее, засунуть в Method m.invoke(myClass) вместо myClass любой другой класс.
>myClass
Это Class myClass илиии? Это не класс? Тогда почему так назвал?
>Method m.invoke(myClass);
ммм...
В доках всё есть, советую заглянуть.
Ты в someMethod.invoke запихиваешь не класс, а объект и аргументы для вызываемого метода
*должен запихнуть
Сначала рефлексия, затем лгбт символика и участие в гей парадах.
>>Сначала рефлексия, дальше процессоры аннотаций и генерация байт-кода
>>потом обмажутся спрингом с хибернейтом
В спринге все это знать нахуй не нужно, там написал анотацию и все работает. А все эти генерации рефлексивных процессоров для упоротых.
Я это из примера взял.
Но, судя по NoSuchMethodException,
он правда ищет метод в объекте любого класса.
Правильно сделал.
Интересует только интерес в работе, ибо на интересной работе работать не смогу.
Лучше и гугли ещё при этом.
Так лучше запоминается, да и узнаешь в итоге больше, чем если бы просто написал код.
Когда всё по отдельности это не прокатит. Если просто прочитал, без практики - то быстро забудешь. Если просто написал, без теории - то нихуя не поймёшь по итогу.
Ну а что тебе интереснее разгребась индусский говнокод и неебической логикой в 10 слоев или изобретать велосипед для запуска костыля для обхода граблей на костылях с повторением процесса для каждой версии андроида и марки телефона?
>>на интересной работе работать не смогу
За это можешь не переживать
Это зависит от тебя.
Лично мне api андроида показался настолько уёбищным, что лучше уж легаси энтерпрайз.
>За это можешь не переживать
Не очень понял твой посыл. Возможно какая-то попытка подколоть тем, что я никуда не устроюсь, ну да ладно.
>>771513
>для каждой версии андроида и марки телефона?
>Лично мне api андроида показался настолько уёбищным
Я скорее гей-разработку имел в виду iOS
Не знаю, насколько это принципиально.
>>Не очень понял твой посыл
>>на интересной работе работать не смогу
>>на интересной
>>не смогу
Не интересную работу тебе всегда найдут.
>>Я скорее гей-разработку имел в виду iOS
А вот это хз, с аёсом должно быть проще, но мобильные разработчики часто пишут на все платформы разом. Андроид и аёс наверное даже ближе, чем андроид и спринг.
Привет, пишу на Spring Boot и Hibernate. Когда пишу контроллер на эндпоинте из-за bidir отношения OneToMany и ManyToOne они рекурсивно подгружаются и в респонзе json первого, потом по нему внутри json второй сущности, а там cнова тот первый и т.д. в итоге только он и выводится. Как правильно расписать отношения в hibernate?
И еще, кто-то в 2020 будет спрашивать про время работы методов и алгоритмов? То есть, не абстрактно сказать, что добавить элемент в список быстрее, чем выделить память под массив и копировать элементы, а прямо время считать?
Жаба позорная.
>прямо время считать
В чем считать, в минутах, секундах? Хуйню какую-то говоришь, никогда такого не было. Есть оценка сложности в биг-О нотации, time complexity еще называют. Вот ее надо знать, это обязательно. Ты должен будешь пояснить для чего она нужна вообще ну и разница между основными оценками, что меньше O(n) или O(2n).
>ВСЕ функциональные интерфейсы
Что, неужели ВСЕ двадцать? Ну так они похожи все, там всего несколько типав разных, а потом лишь параметры меняются. Загружу тебя еще сильнее: спрашивают не просто имена функциональных интерфейсов, но и дефолтные методы в них. Так очень легко понять с чем ты работал, а с чем нет, знаешь ты их по книжке или реально в серьезном деле применял.
> ВСЕ функциональные интерфейсы
Если их реально где-то спрашивают, это ваще пиздец. То, что у тебя каждый частный случай лямбды имеет какое-то нерегулярное название - это само по себе эпик, а тут ещё и запоминать надо.
Двачую, мне страшно туда писать, если честно.
+
Их можно хоть 100 штук придумать, суть не изменится. Открываешь страничку, где они перечислены, и выбираешь нужный.
до 1к постов всегда так, потом - как повезет.
Что мобилки, что энтерпрайз - унылое говно, но с мобилками пердолинга и головной боли в разы больше.
У тебя был опыт коммерческой разработки в обоих областях? И где не уг, на твой взгляд? Просто интересно, почему такие выводы.
Встречный вопрос, почему примитивные типы - примитивные типы, а не классы? В котлине вон всё классы.
>конвертируя XML в эксепшны
Ладно еще постпроцесосоры бинов, но это что за хуйня? Кто так делает?
@Bean
public ExceptionFactory exceptionFactory() {
return new ClassPathXMLExceptionFactory("exceptions.xml");
}
Мда.
Да.
Лень вникать, но из систем.ин.реад() идут вообще все символы, включая нажатие на энтер. Сканер же пропускает пробельные символы при чтении непробельных.
Дело в том, что из свитча /иф-елс методы вызываются одновременно, если символ-переключатель считывать не сканером.
Отбой, разобрался. Простите пожалуйста.
меня не было тут пару месяцев, и java тред стал анимешным.. чтобы к осени исправили!
Всегда таким был.
Анимешная борда для девочек же.
Лучше больше отдыхать.
Терпи, ты же мужик!
Продавай онлайн курсы по жабе.
Я не знаю где тебе фриланса на джаве мало, ты хоть заходил, смотрел? Откуда вы лезете с этим мифом?
Действительно, ошибся, извиняюсь. Ну, JS уже посоветовали, могу предложить вебскрапинг на пайтоне.
И это нихуя не шутка. Вон в websphere первые фреймов 50 - это кишки сервера приложений.
> учить английский по документации спринга
Нет, гугл есть.
Ага, прям как джава 8 и четвёртый спринг, лол.
5-7 часов. Иногда до 10. Но я не учебники грызу, петпроекты пилю по гайдам и много времени уходит на гугление всякой поеботы. Что касается учебников - Хорстман уже неинтересен, до Фаулера не дорос. А спринг, докер и тп изучаются по официальной доке.
>>Потом иду на работу.
Без работы проще же. Пока работал учеба шла хуево, щас - ок.
Правда хуевый из меня вкатун - жабу со спрингом и жс я более-менее знаю, но вместо того чтоб работу искать, лезу в очередной фреймворк.
Сейм. Каникулы, в шараге не напрягают, не подРАБатываю, на улицу не выхожу, занимаюсь весь день, полет нормальный.
Не работаю, поетому 5-10 часов с перерывами по 10 минут. Ну или меньше, все зависит от того, как я проснусь и как быстро я начну отвлекаться на двачи.
Если тасков нет, то стараюсь страниц по 20-30 читать книги, по часику на ютубе смотреть какого-нибудь задрота или статьи какие почитать.
Если таски есть, то вообще нихуя не делаю кроме них.
где-то третью неделю, читаю книгу Философия Java, какие-то примерчики набираю. Я просто профессиональный программист на ++, так что на работе еще мозги выносят. Сейчас потребовалось создать приложение на андроид и вот решил вкатиться. Начал сразу с андроида, но через две недели соснул хуев и откатился до изученя джавоньки.
Каких тасков? Каких задротов с ютубу смотришь, я прост. бумер, когда мы учились никаких ютубов не было, все приходилось делать по старинке книга + консоль
Таски - это на работе задачи.
На ютубе смотрю то, что попадётся. Вот сейчас Борисова смотрю, например, про спринг и все эти ПостБинПроцессоры.
>бумер
30+? Сейм.
А чо надо
Книги годятся для азов и для архитектуры/рефакторинга. Конкретные технологии лучше по официальным докам на сайте изучать, они сейчас весьма годные почти у всех. Примеры из книг часто устаревшие/нерабочие. А книги от индусов это пересказ их же видео на ютюбе.
>Конкретные технологии лучше по официальным докам на сайте изучать
Ну кому как. По тому же спринг мвц дока достаточно скомканная, и не всегда понятная, в отличие, например, от доки по спринг дате. Поэтому я читаю "spring mvc: beginners guide", там как для маленьких все поэтапно объясняется. Хотя после нее все равно надо будет прочитать доку с новыми силами.
Как скажешь!
Я когда по собесам бегал, то достаточно сильно меня там поебали по всяким контекстам и прочим прокси-классам. На работе вот тоже чувствую слабость собственных знаний на фоне старших коллег.
Моя цель, за год(ы) джуниорства изучить всё это говно, также как я сейчас знаю кор. И (No)SQL ещё задрочить до уровня хорошего знания пары диалектов.
а у тебя был опыт программирования до этого? И зачем задрачивать No(SQL) ты про что конкретно? Не очень понимаю.
>опыт
Небольшой, само собой некоммерческий.
>зачем задрачивать No(SQL)
Чтобы быть тем самым чуваком, который спокойно в уме пишет запросы уровня 3,4 с sql.ex. Сейчас я чувствую, что всё ещё плаваю во многом.
а как кстати? вы покупаете эту IDE?
Зачем это всё, если можно поставить мышкой курсор в начало строки и нажать дважды на / на нумпаде.
Ctrl+/ ебать
Проехали, я почему-то забыл, что в пайшарме то же самое
Какое применение есть у этой хуитки? В алтимейт идее как-то подсвечивается?
Doki theme, в плагинах идеи.
Не снова, я впервые это запостил.
Люблю её.
И че не так, за полгода можно что угодно выучить.
> У меня сосед в общежитии купил подписку на джавараш, пол года задротил, месяц назад устроился в банк восточный джуном на 40к не в дс, я ахуел конечно.
Ну что сказать, красавчик твой сосед.
>Что говорят обычно?
Ну, если эйчарка соизволила не отправить мое резюме в мусорку (просмотрено -> отказ) то так:
1. Звонок хэрочки
2. Обычный разговор по теме
3. "А вам же 20 лет, вы получается студент? Почему не указали?"
4. "А, вы не учитесь? Кхм-пук знаете досвидания"
Дальше пытаться конечно, егэ я сдавал по гуманитарным предметам после школы, а для универа айтишного математику сдавать ну его нахуй (мне 3 рисовали за софтскиллы). И денег мало.
Я за полгода работы прокачался с эникея до младшего сисадмина, но это путь в никуда, я не хочу сгнить в серверной. Я хочу в разработку, а мне шансы нехило срезает ебучая корочка.
Немчинский утверждает, что работодатель не хочет брать совсем юнцов без корочки по той причине, что он может надумать через месяц, полгода свалить в другую профессию, свичнутца короче. Следуя этой логике работодатели больше боятся буйства твоих гормоно, в то время как наличие обучения и\или корочки говорит о твоих серьезных намерениях развивтся в профессии.
Хотя, странно что ты выбрал жабу ее выбирают старые пердуны анимедрочеры же.
>о это путь в никуда
Почему в никуда, девопсы востребованы и зряплата на уровне разрабов
> Я за полгода работы прокачался с эникея до младшего сисадмина, но это путь в никуда, я не хочу сгнить в серверной.
Зря так думаешь. Грамотный админ получает не хуже рядового разработчика. Тут тоже есть свои ветки развития.
А в вакансиях указывают ее в требованиях?
>жабу ее выбирают старые пердуны анимедрочеры же
Я сначала даже парился немного, что у меня и гитхаб с немного странным именем, и аватарки в мессенджерах соответствующие и вообще.
А потом сначала у лида увидел маняме обои на ноуте, потом ещё у кого-то футболку и как-то отпустило.
352x640, 0:38
Да, там классно
Скорее сходка няшных кунчиков.
>гос. конторе
В гос конторах так, особенно, если это государственная служба, но от таких контор и бежать надо роняя кал.
Спасибо! Добра.
Меня могут взять на работу? Естественно я не очень общительный и мне наверняка будет трудно влиться в команду.
Техническая вышка есть.
Не волнуся, тут оно у всех есть, только не у всех диагностированное.
А джава в основном популярна в банках, так ведь?
В идеале мне бы работать на удаленке/фрилансе, потому что если нужно будет часто взаимодействовать с людьми (у вас же там постоянно митинги/совещания/стендапы), то у меня вряд ли что-то получится.
>>769582 (OP)
>Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
>A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
А нахуя это все, если спринг сам прекрасно все генерит по названиям методов?
Хороший вопрос.
Он генерит только простейшие вещи типа findBy. А вот что-то более сложное - типа where id = ? and active = 'true' уже не может.
Ты так уверен?
ну я так сделал
не нада query ибо есть join table
мне нужно в query передать параметр конструктора метода кинуть
да это хуита я там вообще не вдуплял как этот ваш hql работает смотри последний скрин
> А в андроид разработку нужна вышка?
Конечно. Минимум аспирантура и 5 публикаций в международном сборнике
Ты такое пробовал? В доке нет таких выебонов https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation
Опять же кастомный квери позволяет например сделать группировку и сумму и все это замапить на кастомную DTO.
У меня вот такое вполне работает.
List<Document> findByDocNameContainsAndUploader_UsernameContains(String docName, String username);
Без него он скажет что поля username в объекте Document не существует. Я ж его дергаю из объекта User (который тоже энтити).
public class Document {
...
private String docName;
@ManyToOne
private User uploader;
...
}
Понял. У меня в аналогичной ситуации (когда нужен был фильтр по вложенному полю) заработало без подчеркивания. Но это было в монге, может какие-то особенности spring-data-mongodb тут сыграли на руку.
Да ничего там достаточно не дает, надо делать проекты и попутно гуглить доку, а книжки это чисто обзорное чтиво
>въехать в синтаксис языка
Так ведь не только кор использовать придётся, но и все эти стримы, HQL, SPeL (и другая магия), различные аннотации (не только Spring, но и Lombok, Swagger).
Думаешь Шилдт тебя научит простейшие Json объекты создавать?
Или вывести содержимое бд в виде простейшей HTML страницы?
Запускать процессы "по будильнику"?
По отдельности это всё мелочи, но вместе там нихуёвый такой объём информации.
Пили свой проект, какой-нибудь интернет-магазин, универсальную тематику я ещё несколько тредов назад придумал. Бордель.
>>Насколько на развод похоже?
Примерно на 146% 77,92%. А вообще договор нужно внимательно почитать в том какие конкретно меры по трудоустройству они примут и в каких случаях.
Надо в джаве эйджизми ввести - нельзя программировать на языке, который старше тебя. Не зря же на коболе пишут деды 70+. Пускай зумеры свои языки придумывают.
Не надо
Кому вообще идея придумать dsl в виде имени метода (возможно обмазанного аннотациями) показалась охуенной?
@author Juergen Hoeller
Но крутые люди на потоке обучаются посредством собственных проектов. Типа берут идею и реализовывают, параллельно гугля то, чего они не знают.
Вот и не знаю теперь, правильную ли методику обучения я выбрал
P.S. Это нормально, что я в несколько тредов один и тот же вопрос залил?
Наверное, ты прав. Я вот обмазался книгами: Сеттер, Сьеара, Шилдт. Посмотрел какие-то уроки на ютабчике. Прохожу курсы в Джет Брейнс академии.
А вчера вот открыл текстовый редактор, мол пришло время пилить свой проект. А с чего начать хз. И вот сижу я перед пустым редактором пью кофе и почесываю свою жиденькую бородку. Посидел так минут 30 и пошел аниме смотреть.
Ну так жеппаскрепт в любом случае изучать, без него щас никуда
> >>Java #23 ЛЕТНИЙ thread /java/
> но ведь джаве 25 лет?
Летний - это про время года. Опу пока еще нет 25
Ну а смысл того, что ты прочитал эти 300 страниц? Ты не закрепил эти знания. Прав тот, кто по диагонали читает литературу, посвящая этому 30% времени. Остальное практика. Попутно с практикой ищешь необходимую тебе информацию
Добавлю что читать нужно по диоганале не только литературу, но и докуменацию на английском языке
А кому пришла идея придумать говнохибернейт?
аче)
Думаю, ты прав. Спасибо за совет)
бля я бумер с++, перекатываюсь в джава, два дня читал главу из "философия java", бля, мало того, что у меня один пример не скомпилился, так я хуею просто с вкатышей, как они все это осваивают бля. Я даже с бэкграундом в си++ иногда спрашиваю себя "что это вообще за хуйня и зачем", особенно охуенно там объясненно назначение анонимныых классов. Кстати, аноны, почему не компилится то, ебушки-воробушки.
А должен понимать?
Вот поэтому книжки хуйня.
Дурачок, у него другой класс
Однако потом ты все равно сосешь.
Возьми в рассрочку, за полтора года выплатишь.
Она бесплатная.
Ок. Спасибо. Слушай, а почему классы называются "анонимные" они ведь нихуя не анонимные у них же есть имя?
Ну ты его запостил на двач, вот он и анонимный стал.
У меня еще есть тоненькая книжка Хорстмена "Java SE 8" базовый курс, но там как-то все поверхностное. Шилдта после его книг по си++ вообще не читаю.
>у них же есть имя
В твоём примере у класса есть тип, а не имя.
Destination Nahuy = new Destination(...);
Вот так у него будет имя.
>философия java
Ахуеть, кто-то действительно этот талмуд читает!
Это ж та книга на 1000 страниц, но где нет ни слова о 8ой жабе? Ты заранее решил к легаси готовиться или просто делать нехуй?
я прост сразу к собесу готовлюсь. в си ++ мирке люди такие талмуды наизусть должны знать и то мало, как ща пишут - путь ++ это талмуд кнута на зубок и еще там 2-3 книги для старта
Ну так это уебанский с++ с его уебанским синтаксисом. Синтаксис джавы максимально прост и лаконичен.
Так и готовься к собесу по вопросам с собеса.
>почему не компилится
Он не знает что такое Destination. Это должен быть класс или интерфейс, на основе которого генерится анонимный класс.
>>775821
>у них же есть имя
А вот нихуя. Для новичков конечно это сложно для понимания, но здесь создается класс, производный от того, который указываешь ты (в данном случае - от интерфейса Destination). Сделай в мейне System.out.println(d.getClass().getName()) и ты увидишь что имя класса не Destination, а че-нить типа Parcel10$1 (первый анонимный в Parcel10).
>>775815
Платная на твоем уровне еще не нужна. Там есть Community Edition, она бесплатна. Отличия для для джава вкатывальщика несущественны: отсутствие инструментов SQL, фронта, спринга. На спринге можно разрабатывать, просто там менее интенсивная обвязка.
>>775797
Пример, конечно, конченый:
- перенос строки между возвращаемым типом и именем функции
- явные final модификаторы, хотя в Java 8 (что является минимальной Java на сегодняшний день, т.е. Java 7 - уже легаси) модификаторы файнал для переменных в лямбдах и анонимных классах выводятся автоматически
- анонимный класс на каждый экземпляр объекта, а судя по бизнес логике инстансов будет очень много, стандартный DTO
- инстанс инишилайзер
- инстанс инишилайзер с бизнес логикой
- инстанс инишилайзер с бизнес логикой и сайд эффектами
Как бы пример норм для обучения, показывает сразу миллион техник одновременно, но в проде такое не пишут никогда, ебанина полная.
хуясе ты боярин!
А у меня еще есть NetBeans, она как? Норм? Просто я прочитал, что надо сперва в консоли компилировать.
Что спрашивают на собесах по джавоньке? Алгоритмами дрюкают или по синтаксису? В си++ ща новый тренд пошел, надроч на олимпиадные задачи.
Потому что по умолчанию RetentionPolicy стоит не RUNTIME, т.е. твоя аннотация до рантайма не доходит. Нужно указывать это явно.
Получается, что при каждой аннотации необходимо обязательно указывать @Retention и указывать что будет действовать во время выполнения с помощью RUNTIME. И уже дальше можно указывать после этого @Target и всё остальное. Окей, я понял.
Чекни 22 тред, не должен был еще утонуть, я каждый тред на эти вопросы отвечаю. Ctrl+F, собес, интервью. Я Миша веду собесы. Дрюкаю алгоритмы и синтаксис, все что в голову придет и куда разговор нас направит (часто следующий вопрос вытекает из ответа собеседуемого на предыдущий). Есть книжка 1000 Java interview questions, советую.
>NetBeans
Ну такое. Не пользовался, но вроде бы не очень. Еще есть Eclipse, тоже бесплатный, но потихоньку сдувается. IDEA мейнстрим сейчас.
>надо сперва в консоли компилировать
Надо. Для себя. Я не спрашиваю. Про консоли могу спросить про запуск из консоли и про ключи, про cp, про джарники. С предыдущего треда никто не ответил на вопрос про самый важный для прода ключ (ну, один из самых важных).
Миша, спасибо!
js
>>Дрюкаю алгоритмы и синтаксис, все что в голову придет и куда разговор нас направит
А если я упомяну что могу запилить круд с двухфакторной аутентификацией на спринге и немного умею в реактивность, мне пизда? Бинпостпроцессоры писать заставишь?
>Бинпостпроцессоры писать заставишь?
За кого ты меня принял, я не Евгений Борисов. Скромно попрошу написать реализацию equals для своего класса.
У котлина хороший интероп с джавой, у скалы похуже, и стек там свой.
Java FX - либа для гуя, клепать формочки.
Питон и баш.
>>Планирую вкатываться в Spring, Enterprise, но пока есть (будет) пет-прожект на андроиде.
Для начала выбери тебе энтерпрайз или мобилки.
Для энтерпрайза для начала спринг изучи, а потом можно - жс, го, кложур, или даже скалу.
Для мобилок - котлин, свифт, жс
>>JavaFx что это за зверь?
Свинг на стероидах. Может андроид их использует, но это в другом треде надо спрашивать. В энтерпрайзе его почти нет.
У нас на fx пишут утилитки для внутреннего использования, лол.
Ну я, пока учился на инженера-долбоеба, ковырял ботов в телегу на питоне, потом бота-фармера-трейдера для PoE написюлькал очень хуевого, не осилил хукать инфу сразу из игры, автоматизировал сортировку инвентаря в той же игре с использованием cv2, ну и в рамках диплома систему отслеживания вещей на складе + штрихкоды высрал с использованием мускуля.
Меня сбивает с толку такое огромное количество наименований.
Тогда, скорее всего, осилишь быстро.
Куча наименований всех сбивает, а на самом деле выучил основные фичи спринга - и это по объёму уже почти половина.
Прям паста уже какая-то.
>реализацию equals для своего класса
А в чем соль? Типа никто не помнит как его реализовать из-за алт+инсерт/ломбоков?
мимо
Не в каждом проекте на который ты приходишь будет ломбок, но дело даже не в этом. Такие базовые вещи не должно быть проблемой вручную набросать. За рутиной написания этого метода по памяти скрывается глубинное понимание вещей, знание контрактов этого метода. Даже в таком якобы простом методе можно обосраться. Можешь свой какой-нибудь засветить, сообщество оценит. А по поводу кодогенерации - так тебе же еще нужно поддерживать код, читать этот метод, написанный бывшими и текущими коллегами, обнаруживать в нем ошибки. И так везде: ты должен знать экзекуторы, но уметь запускать тред вручную, ты должен знать классы-хелперы для синхронизации, но уметь пользоваться wait/notify, знать спринг дату, но уметь и в JDBC. Базовые инструменты это как строительные кирпичики для чего то более глобального. И вот общий посыл такой что тебя проверяют насколько гнилые или наоборот, прочные, твои строительные кирпичики.
>>Базовые инструменты это как строительные кирпичики для чего то более глобального.
Скорее наоборот. Ты сначала изучаешь что то простое, а потом копаешь как это устроено. В физическом мире - тебе не нужно знать технологию изготовления марки стали из которой был сделан двигатель внутреннего сгорания, чтоб пользоваться автомобилем.
Я как-то после выходных минут 10 сравнивал стринг через ==, зато потом понял, почему такие базовые вещи учить надо.
Миша всё верно говорит. Если рефлексивность, транзитивность, симметричность, непротиворечивость для тебя просто набор слов, то тебе перезвонят.
Держи в курсе.
я бумер-олдфаг с пятеркой языков в багаже, хуй там, смог за три недели освоить только треть книги "Философия Java" и уже волосы от напруги на жопе шевелятся, правда я еще на работу хожу программистом(сейчас на PHP) По моим подсчетам освоить java, занимаясь по вечерам для прогера это недель 12-15 , работая по 2 часа в день (приходится на работе пиздить еще время)
а стринги ведь можно через == сравнивать?
я нашел в коде someStr == "SHIT" и оказалось, что это норма
>можно?
Можно. Это похоже на ситуацию с грибами - есть можно все, но некоторые только один раз.
Результат будет не таким, какой ты ждёшь. Вдруг там логика каким-то образом завязана на то, что someStr указывает именно на ту самую строку из пула строк...
Но более вероятно, что это баг, так что смотри git blame, открывай джиру и заводи баг.
Можно. == вернет true если слева и справа от него указатель на одну и ту же строку.
someStr == "SHIT" скорее всего вернет false, даже если строки содержат одинаковый набор символов.
Однако,
>String v = "SHIT";
>System.out.print(v=="SHIT");
На OpenJDK 8 возвращает true
А вот
>String v = "SH";
>v += "IT";
>System.out.print(v=="SHIT");
Возвращает уже false
Короче, применяй с осторожностью.
Вот что из пикрилов лучше читать. Или всё можно осилить. Анон, твоё мнение об этих книгах.
Я начинал с Майка МакГрата "Java. Программирование доя начинающих" там всего страничек 200, потом бегло пробежался по Сьерре (Мне так и не удалось найти переиздание под жабу 8+ поэтому бегло), потом Шилдт. Философию читать ваще смысла нет, пока не устроишься работать.
Но как тут писали анончики важно не зацикливаться на чтении, больше практики...
я читаю философию (с программерским бекграундом), очень тяжко идет, там сейчас 1100 страниц. Я бы х.з. с head first начал, а потом отдельно по темам из разных источников набирал.
Я начинал с Head First не имея вообще никакого опыта программирования лабы на с++ на 1 кусе универа не в счет, и могу сказать, что читается довольно легко и все понятно, хотя стиль изложения своеобразный, но мне зашло. После нее пробовал читать Шилдта, идет тяжело, так что я в итоге плюнул и начал читать просто чужой код и сам что-то ваять.
ну я только начал изучать основы, и вроде как не плохо идет. Буду ли я кому-то нужен в конце с этими знаниями?
Нет конечно.
1. Изучишь основы.
2. Пет прожект.
(тут ты должен понять для тебя ли вообще программирование)
3. Дальше задроч к собесу и пляски раком для вкатывания.
Что значит нужен? Нужны мидлы и выше, востребованность адовая, джуном, как выше отметили, чтоб вкатиться будешь плясать раком, рассылая резюме во все конторы в поле зрения, может повезет, а может год будешь ходить по собесам.
Можно в стильный и модный js вкатиться уже прямо сейчас без задней мысли. По хэндхантеру на ждуна около 200 вакансии по сравнению с 50 вакансиями на Java ждуна.
На фронта и желающих больше, притом разы. Ведь там через год уже 150к, ещё и по всякой унылой хуйне (вроде SQL и алгоритмов) ебут меньше.
Вкатуны в основном только туда и лезут же.
Это да, а если сверху ещё накатить пыху, то можно и на ждунчика не претендовать, а идти во фриланс и колупать всякое гавно на вордпрессе. Деньги будут, а надоест через неделю от одного и того же и начнёшь волком выть, да ещё надо карму набить и целовать заказчика в зад.
А можно и вовсе подскакивать кабанчиком находить клиентов на веб и нанимать ололоева фрилансера за еду и учить ничего не надо.
у меня друган где-то в алиэкспрессе, говорит на беке яндексоиды бывшие сидят и охуевают, а на фронте те кто и пузырьком не отсортирует
Мне кажется там своих заёбов хватает.
Я вот формочки рисовать никогда не хотел, уж лучше буду хешмапы по шинам катать.
Спасибо.
Нет, сразу на Spring Roo пили.
> someStr == "SHIT" и оказалось, что это норма
это шизо норма, надо юзать "SHIT".equals(some)
Если не планируешь идти на проекты на ЕЕ-стеке, прям углубляться смысла нет, спринг основывается лишь на базовых фичах ЕЕ, для остального решения у него скорее альтернативные, чем развитие ЕЕ-шных.
К примеру, и там и там юзаются жпа и сервлеты, но вот mvc - это не надстройка для jax-rs, а независимая технология.
Нечасто, но с десяток раз прям сильно выручали.
Ебешь сервлеты.
Vim.
> Тред не читал
И не надо, здесь всё равно большинство считает, что это лучшая иде всех времён и народов.
Можешь ещё попробовать
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
Хз, но так тоже забилдилось и работает.
>Учишь всю осень и зиму Java + Spring, делаешь один пет проджект, закидываешь на гитхаб, подаешься на Sberseason и идешь работать за 40к в месяц за 20 часов в неделю
какие подводные
> Учишь всю осень и зиму Java + Spring, делаешь один пет проджект, закидываешь на гитхаб, подаешься на Sberseason
А после собеса на сберсизонс мне сказали, что я могу попробовать пройти к ним сразу на ставку через ещё один собес, и прошёл.
>Учишь всю осень и зиму Java + Spring
Ну вполне реально, сам так делал.
>делаешь один пет проджект
Ага, лаба1 или калькулятор.
>подаешься на Sberseason
Это какие-то курсы? Ну тогда ты точно долбаёб.
>идешь работать за 40к в месяц за 20 часов в неделю
И идёшь нахуй или потом ещё полгода бегаешь по другим собесам.
Мне вполне нравится Eclipse. Правда там не будет тем с аниме девочками, но работает стабильно и надежно, как швейцарские часы.
> за 40к в месяц за 20 часов в неделю
Там это так не работает, если ты идёшь на полставки, то и получаешь половину, то есть 20.
>>777587
> Это какие-то курсы?
Стажировка для студентов на 3 месяца. Именно для студентов - выпускников туда не берут.
> И идёшь нахуй
Судя по тому, что я слышал, там нужно быть конченным долбоёбом, чтобы потом не смочь остаться.
Большинство работает со спрингом - а поддержка спринга лучше всего в идее.
У вас нет опыта работы в НАШЕЙ компании, а значит ваш опыт не опыт.
Можешь поступить в магистратуру, тогда возьмут, лол.
А так ищи вакансии, хотя сейчас на рынке труда, наверное, полный пиздец, особенно если нет опыта.
>нужно быть конченным долбоёбом
Т.е. то, что он идёт в сбер на стажировку тебе ни о чём не говорит?
Вон в соседнем треде парень описывает свой опыт в госконторе.
Сидит в экселе хуйню заполняет, читает двачи, только к концу первой недели дали какой-то скрипт написать.
Ахуенный опыт, до 100к лет 5 будет расти.
При этом параллельно телка за столом напротив уже пр делает, видел, читал.
Это имеет хоть какой-то смысл, пока ещё учишься, ибо найти реальную работу студенту без опыта, да ещё и на полставки, сложно. После выпуска, да, странновато.
Что делать, проебать очередной год, пока она не закончится, или что?
Для аниме JS и PHP же
Не думаю, что есть разница в поиске первой работы, что с коркой, что без неё.
Я пытался найти без корки, попробовал чутка - не вышло, забил.
Потом с коркой. Попробовал чутка - не вышло. Повторил раз 50 - и вот я её нашёл.
Т.е. в любом случае тяжело будет. Особенно в айти. Особенно во время короновирусной эпидемии.
Даже в этом сбере там будет 9000 желающих пойти на эти курсы.
Да, сидел там, когда вкатывался.
Там конечно дохуя шизиков, но иногда проскакивает полезная инфа.
Да там в сбер подаются многие да, правда большая часть из них знает джаву на уровне простеньких лаб. Реально скилловых людей с петпроджектами будет немного, а сбер большая контора так-то.
Если студент, то норм. Если уже выпустился, то нельзя. Можешь пойти в магистратуру и попробовать через 1.5 года, если сейчас прием в магу уже закончился.
Тюбетейка лишняя, без нее был бы топчег на новую шапку.
вроде как json property, но это не точно
>>17780
пасиб, но все-же это был json property
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
Делаю прожект для портфолио, а именно сайт, и вот встал вопрос, как именно подойти к вопросу кэширования данных, выдаваемых на вьюшки.
Первый вариант: при запуске загружать из БД все имеющиеся данные в кэш. Обновлять их в кэше по мере необходимости, и время от времени сохранять изменения в базу.
Второй вариант: при запуске не делать полное считывание БД. Брать оттуда данные по мере необходимости, но повесить на геттеры @Cacheable. Сеттеры сразу сохраняют изменения в БД.
Наверняка вопрос ужасно глупый, но это, по сути, мой первый опыт в организации такого кэширования. Поэтому раньше с таким встречаться не приходилось.
> Первый вариант
Не делай так никогда, иначе зачем тебе вообще база с транзакциями, если в любой момент может произойти сбой, и все данные, которые не успели сохраниться, проебутся. Кешировать можно только чтение, запись - нельзя.
> Второй вариант
Да.
Чтобы тред был анимешным.
Это просто пикча, лол
почему
Integer a = 128
Integer b = 128
не равны, если через "==" сверять, а через ".equals", то всё равно
Потому что через == ты сравниваешь не значения, а ссылки на объекты, и они могут не совпасть, даже если значения одинаковые. Но есть нюансы, небольшие значения до 128 хранятся в пуле jvm, чтобы экономить ресурсы на их создания, и ссылки на них совпадают для одинаковых значений, поэтому равны, но всё, что выше, создаётся каждый раз заново.
@
ОТВАЛИВАЕТСЯ DATABASE NAVIGATOR
@
С ЛИЦОМ ЛЯГУШКИ ДАУНГРЕЙДИШЬ, ПОДУМЫВАЯ О ТОМ, ЧТОБЫ СТАТЬ ПИРАТОМ
Используй простые типы, если хочешь сравнить значения.
Для такого использования - да. Использовать только тогда, когда явно хочешь сравнить именно ссылки или примитивы (int, boolean ...).
Ага, надо было сразу Oracle SQL Developer ставить, он с полпинка заработал.
Обьясните нахуй че зыс возвращает в ретурне
public Builder(int reqFieldOne, int reqFieldTwo) {
this.reqFieldOne = reqFieldOne;
this.reqFieldTwo = reqFieldTwo;
}
public Builder optFieldOne(int val) {
optFieldOne = val;
return this;
}
Это просто упрощенная запись от this.optFieldOne = optFieldOne; ?
Точнее, если бы там было более одного параметра, то он бы вернул все параметры конструктора в итоге?
С обновленным новым параметром? Было 2 дефолтных, стало 3 теперь? Инстанс остается один и тот же?
Да.
NetBeans
Жжешь!
MySQL - это как C#, а оракл - как C++.
@JsonIgnoreProperties, а вообще DTO делай, тогда можно без json-вских аннотаций
Мб это вопрос скорее по QA, но тм не менее. Есть респонс, где в json'е надо проверить, что ссылка в одном из полей на один и тот же файл, как лучше всего это сделать? Гугл и стаковерфлоу не помог не понимаю как гуглить такое
Я ебу?
Это все из-за нашего треда. Вы довольны?!
Там просто счетчик переполнился, перепишут на long и все вернут обратно.
Конечно, знаю, что хибернейт легаси, но его точно собираюсь учить.
>норм стек для изучения и пет проджекта
Для начала хватит. Ну, можно ещё секурити настроить, рест апишку написать и вьюху на реакте. Всё равно когда найдёшь работу, все свои пет-проекты покажутся детским лепетом в сравнении с реальными.
> знаю, что хибернейт легаси
Он не то чтобы легаси. Просто я его так здесь называю из-за того, что уж очень он лично мне не нравится.
Понял, спасибо.
А рест нужен для микросервисов, например, вынести работу с субд в отдельный сервис, а хтмлки клепать так же с помощью thymeleaf?
Или зачем он нужен?
Рест может не пересекаться с микросервисами, но да, это один из возможных способов их взаимодействия вместе с очередями, SOAP/RPC и прочим. Да и микросеовисы обычно делят по бизнес-,обоастям, к примеру, один сервис с юзерами, другой - с их сообщениями, и у каждого своя БД, а не так, что БД отдельно от кода.
Но без микросеоаювисрв с хтмл можно сделать так: сервер отдаёт статическую страницу и выставляет рест-апишку, и уже в браузере js апишку дёргает и дорисовывает страницу в зависимости от её адреса. Это называется single page application. Но если не хочешь заморачиваться с фронтендом, делай через thymeleaf.
Хороший ответ, спасибо.
Значит в idea уже есть втроенный maven и народ пишет, что ничего больше качать и ставить не надо.
Но на команду
>mvn -version
оно отвечает, что mvn не распознано.
Ищу, где же этот maven зарыт в idea. Нахожу:
>idea\plugins\maven\lib\maven3\bin
(Там лежат mvn.cmd, mvn, m2.conf и т.д. - т.е. это та самая папка) Создаю системную переменную M2_HOME и прописываю туда этот путь - нулевой результат, mvn по-прежнему не распознано.
Добавляю этот же путь в системную переменную PATH. Теперь оно в ответ на mvn -version пишет
>The JAVA_HOME environment variable is not defined correctly
>NB: JAVA_HOME should point to a JDK not a JRE
При этом javac -version и java -version отрабатывают штатно. Т.е. JAVA_HOME прописан правильно: java\jdk\bin
Что я делаю не так?
Мне нужен XmlMapper, но мне нахуй не нужен этот конфиг, он мне ломает все. Как быть ?
в легаси говне руками собирался String в формате XML и передавался в DeferredResult<String> в рест-контроллере.
Мне нужно добавить рестик, и я не хочу руками дрочить XML. Заюзал XmlMapper - по юнит тестам все идеально.
Но приложение теперь не стартует - пытается создать бин из этой конфигурации и падает, expected single matching bean but found 2 (два каких-то Jackson2ObjectMapperBuilder для разных целей)
До этого этот бин не создавался, и все работало.
поэтому подумал что лучшим решением будет как-то заигнорить его
>два каких-то Jackson2ObjectMapperBuilder для разных целей
Ну вот и смотри, откуда берется второй.
DeferredResult<ResponseEntity<String>>
Самофикс
А я передаю тоже стринг, только использую XmlMapper.writeValueAsString, а не дрочу руками XML
щас подумал, что я тоже по-уебански делаю....
они оба нужны: один маппит HBase сущности, другой Web говно как раз во всяких контроллерах/хттп-клиентах
Хмммм
Мне получается нужно как-то квалифаером указать, чтобы использовался для Web
>>780203
Такую ебанину никто не делает. Мавен в идее есть, но для ее, идейных, нужд. Т.е. открываешь панельку Maven справа, выбираешь package, жмешь зеленый треугольничек. Если же тебе нужен мавен в командной строке (mvn в консоли), то просто скачай и поставь его, он все сам пропишет. Не мегабайтов же тебе жалко в конце концов? Иметь два мавена в таком случае не мешает никак - у них даже одна и та же директория c:\Users\<user>\.m2 для репозиториев. А в случае со своим собственным внешним мавеном ты получаешь еще и гибкость в плане выбора версии.
>JAVA_HOME прописан правильно: java\jdk\bin
Нет, неверно. JAVA_HOME должен быть java\jdk
Thank you Baptiste. Oh, you're welcome.
есть идеи как поправить?
Не ебу как реализовать апдейт существующего купона нормальным способом да и вообще не ебу как
и как я понял я немогу в @RequestParam передавать пустое поле
Анон как это реализовать можно то?
по любому там решение в 2 строки, но я что-то догнать не могу как
может как-то через JpaRepository?
couponRepo.save(updatedCoupon) и не еби мозги. Под капотом оно мерджится по первичному ключу.
> и как я понял я немогу в @RequestParam передавать пустое поле
ok, но как я могу передать "не полный купон"
ибо как я понял @RequestParam не могу передавать пустые значения при приеме купона на который надо заменить
держу в курсе, я обосрался, теперь этот MappingJackson2XmlHttpMessageConverter протекает везде и парсинг ломается
Во-первых почему сложный объект в реквест парам пихаешь, а не в реквест боди? Во-вторых, даже через реквест парам можно сделать проще, если убрать кучу параметров у метода и заменить их одним Coupon, спринг сам соберет этот объект из кусочков.
а на стороне "клиента" как передать "нужные" параметры для изменения купона?
по типу как на пиктриле
>нужны анотации какие-то же?
@RequestParam Coupon coupon
Формат даты у тебя должен быть задан в самом классе
но сейчас пока я не поменял формат указан же-- все равно не работает
Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: \"id\"\n\tat org.springframew...
А ты нахуя подсказываешь
Правильно ли я понимаю, что под transient instance в JPA подразумевается не "сущность, когда-то бывшая в persistence context", а "сущность, которая либо есть в persistence context, либо есть в самой базе"?
Так, я бред какой-то написал... Подожди.
Понял где запутался. В общем, detached - это просто сущность, которая есть в базе (есть строка с айдишником этой сущности). Верно я понимаю?
Опять чепуху написал. Пойду-ка я короче дальше баелдунга читать, извините аноны что потратил четыре поста.
Забей.
В параметрах функций
И это свёртка? Ну да, обычная хуйня, примерно как цикл for.
Ты спросил про какую то СВЕРТКУ, никто не ебет что это. Ответили тебе вполне обоснованно.
Анон подскажи где читать о spring многопоточности пожалуйста
оно же не так устроено как обычная многопоточность в java?
Можно и видева или книгу(желательно на русском), где все нормально распишут.
Пасиб
как я понял
spring разбил мой Json на составляющие с присвоил их к обьекту, данные в Json он берет в string формате и подгоняет под нужный тип
тк я передавал почти все поля пустые--при попытки пустого string-a в int, бросалась такая ошибОчка
Нет там какой-то своей отдельной многопоточности
Вот допустим есть пример: служащий Employee и список его адресов Email. Везде описывается, что foreign key column должен быть на стороне Email (на стороне, которая "many"). То есть Email должен хранить информацию о том, какому Employee он принадлежит. И все гайды отталкиваются от такого способа привязки.
Но как сделать так, чтобы сам служащий Employee хранил список своих адресов Email? Как это замаппить?
Вот мне как раз нужно, чтобы в Email ничего вообще не хранилось, кроме данных о самом Email. Чтобы только Employee имел список адресов Email и подтягивал их по айди.
На уровне таблиц ты так не сделаешь, разве что нарушить первую нормальную форму, но жпа это не переварит.
Не помню. Зачем-то начал это выяснять, сейчас просто из интереса и для информации пытаюсь понять.
Мне в принципе не жалко сделать так как говорят, просто ну неужели действительно нельзя иначе?
Массивом ключей разве не сделаю?
Это пример, я взял откуда-то. В реальности у меня другие сущности, там есть смысл разделять.
ну в самом Entity Employee создай List<email>
а с hibernate тебе вообще не прийдеться ебатся тк он автоматически все правильно соберет да и вообше в будуешем удобнее работать с pojo в БД
А зачем изобретать велосипед, если обратные связи нормально работают? Тебе один join жалко?
Там мастрид вроде только потоки данных и ввод-вывод.
Задачка не совсем по джаве, но близкая
Есть лог файл и джава код, собирающий из него некоторые данные в табличку
Нужно переписать код, так чтобы на его выходе формировались данные в формате influxdb для дальнейшего представления их в grafana
Поясни за последовательность, я нихуя не понимаю, где найти этот формат influxdb и как туда вхерачить эти данные?
Везде предлагается сбор данных через отдельные утилиты, а что делать, если данные уже есть?
@RequestMapping("/root");
RootController {}
@RequestMapping("/child1"); // /root/child1
ChildController1 {}
@RequestMapping("/child2"); // /root/child2
ChildController2 {}
Будто у них другой спринг.
Вот для тебя хуйня:
@RequestMapping("/root")
public class MyController {
@RequestMapping
public String root() {
return "/root";
}
@RequestMapping("/child")
public String child() {
return "/root/child";
}
}
Впрочем, лучше бы указать контекст развёртывания на сервере приложений.
Внутри методы сделай да и всё.
@RestController
@RequestMapping("root)
public class Controller {
@GetMapping(value = "child1/get1/)
public List<Child> getChild1(){}
}
Выдумываешь хуйню в самом деле.
В чем прикол?
>не взлетел
Какое-то у тебя сугубо индивидуальное понятие взлёта/не взлёта. На пикрил всего в 2 раза меньше вакансий чем на самом популярном языке - Java.
>Нахрена идити на технологию где вакансий с каждым годом будет становиться меньше?
Вакансий с каждым годом всё больше. Опять не понятно откуда у тебя такая информация. Может статистикой по годам поделишься?
> Джавист всегда найдет работу и будет востребован
Джавист быстрее найдёт работу. Всё что можно утверждать про джависта. "Всегда" и "востребован" это манямирок джависта. Те кто на С++ пишут наверно также думали в 2000-х, когда были в топе, но через 10 лет спрос на них резко упал и их заменила джава, сейчас они вообще в узкоспециализированных областях задействованы и получают меньше JS-макак.
И не надо забывать, что у тех кто изучил C# есть хоть какая-то альтернатива в виде геймдева на Unity. У Java-программистов альтернатив нет.
Если ты еще в универе иди на стажировку, быстрее джуном станешь.
значения до 128 хранятся в отдельном стеке памяти?
Да. Решать алгоритмические задачи полезно для гибкости мышления. Быстрее изучить новую технологию, ЯП и пр.
Да. Энергия тратится за 9+ часов физической монотонной работы. + отношение к сотрудникам как к скоту. Даже сраная скрам-галера куда лучше.
мимоработалвпятерке
Небо - да, в Аллахе можно хранить БД.
У них и без жабы дохуя проектов - несколько СУБД, какие-то ERP, аналитика, weblogic и ещё много.
html фикс
Можно создать подпапку static и в неё. Разницы никакой. Посмотри, как в проектах на гитхабе делают.
Спасибо.
А ещё вместо веб-морды может быть клиент отдельным экзешником, который дёргает SOAP-сервисы.
Для маленького пет проекта проще всего какой-нибудь тимлиф ебануть, чем жс изучать и пилить отдельно морду.
Смотрят аниме и няшатся друг с другом под пледиком
какими усилиями?
намного проще и сука красивее все собрать на жс.
пилить ЮИ на джаве тот еще пиздец
Ничего в консоль не пишет. Мб нельзя так напрямую передавать?
Кто сказал, что он на джаве?
ибо пытался найти что-то но нихуя толком не понял, по типу такого:
https://www.baeldung.com/java-method-references
да и вообше где нормально обьяснят о ламбда-выражениях, strems и функциональных выражениях
или начинать читать документацию?
Аноны, среди вас есть те кто собесился в альфа банк на java разработчика? Поделитесь ощущениями
так это фронт
Не помогло, но если добавить в цикл перед if команду, то работает. Почему из бесконечного цикла выходит, когда внутри выполнять нечего? Как это исправить?
>Почему из бесконечного цикла выходит, когда внутри выполнять нечего?
Не выходит, там просто ничего выполняется.
Тогда он каждый раз должен проверять условие (gameOver == false), а оно у меня устанавливается по клику на кнопку.
Так это уже проблема твоей реализации, добавь что-то типа этого в while, что будет?
а если пометить gameOver модификатором volatile - что будет? Попробуй
ДА! Это оно было. Сейчас работает.
оно изменяется в другом потоке при вызове того метода же
Я знаю, что 100% это я криво сделал все, скорее всего можно сделать правильнее и логичнее, но в моем кривом исполнении все крутится в бесконечном цикле, пока не нажмешь кнопку рестарт либо выход. gameLoop - бесконечный цикл, а на другой картинке обработчик нажатия кнопки рестарт. Так вот переменная менялась, а цикл не крутил, пока я не добавил принт в цикл вместе и проверкой. И с volatile работает.
Но у тебя уже есть turnCounter, ты где его используешь? То есть ты в лупе чекаешь количество ходов, но при этом ничего с этим не делаешь?
На что только не пойдут, лишь бы не сравнивать число с числом при каждой проходке и не прописывать брейк.
Да, количество ходов считает, используется при проверке победителя. Я же говорю, скорее всего можно проще и правильнее сделать, я даун просто. Суть в том, что если в бесконечном цикле был один кусок с условием прописан, не работало, надо было добавить что-то (принт). А с volatile работает именно так, как я думал.
хули дату не конвертит то?
вроде до этого работало
Теперь я не понял, как волатайл позволил решить эту проблему. Типа при вызове метода внутри лупа, под этот метод выделяется новый поток?
при нажатии на кнопочку выделяется новый поток
Нет у них никаких подводных. Конечно и с ними можно накосячить, но это прям надо очень постараться.
Это действительно собеседование на джуна или на реальном собеседовании вопросы жестче? Миша там пугает всякими йобами, а тут вопросы, на которые после джавараша можно спокойно ответить.
Это вроде не фирма, а чел просто моделирует собес.
Кто из вас ближе к бизнесу: вы или какие-нибудь фронты, мобильщики? Насколько вообще оцениваете свои возможности переката в руководство/менеджмент со временем, в отличии от других ветвей разработки? Насколько хорошо осведомлены в своём рабочем бизнесе вообще?
P.S. Я не прогер, но в it тоже косвенно, скажем так. Интересно узнать ваше мнение, так как сам в сторону программирования поглядываю и даже когда-то немного умел. Причем поглядываю не только по финансовой причине, а просто потому, что с детства it интересно еще когда это не было так мейнстримно для фарма денег
Так вот, сейчас уже интересен сам бизнес/аналитика в том числе, поэтому не хотелось бы в разработку, например, и полностью оградиться только тех частью. Поэтому и задаю такой вопрос, куда лучше податься? Мб в какой-нибудь фронт будет лучше и ближе к бизнесу/аналитике?
Вот бэк привлекает тем, что там как-то ближе именно к тех части, местами каким-то инженерным вещам я по образованию сам инженегр-айтишник Но оградиться сугубо тех часть, как я и говорил, не очень хочется.
Мы всегда в бамплимите.
Нет, бамплимит тут не при чём, это старый баг, который абу, сука, никак не фиксит. Сам в таких случаях сижу через приватную вкладку, пока не заработает. И заработать может в случайный момент - мне вот иногда помогает факт открытия rust-треда, лол. Ну или куки снести, но пропадут и все настройки.
Действительно, спасибо.
Выбери что интересно.
Да, понял, там не имя таблицы, а имя сущности.
Да, ну на то он и говно, значит.
Может ты расскажешь, что не работает?
Но как минимум надо или try-with-resource делать или руками сессию в finally закрывать.
в ламбде все понятно: передаем -> что-то выполняем
а заmethod reference ни понятно как-то
спасибо
Method reference когда у тебя есть метод который по типу входных аргументов и возвращаемого значения совпадает с сигнатурой функционального интерфейса - то можно этот метод передать вместо лямбды.
Есть одна тонкость, если как в этом примере у тебя метод не статический, то он может не принимать аргументов вообще (как isEmpty() и тогда аргументом будет считаться объект на котором этот метод вызывается.
>то можно этот метод передать вместо лямбды
ок, но как? ибо это не я же писал и idea сама земенила на method refer. то есть сто за структура передачи метода? что перед :: и что после
В целом синтаксиса 2:
ClassName::methodName - для с статических и не статических методов
varName::methodName - для методов которые ты хочешь вызвать у объекта
спасибо
Чтобы точно сказать, надо смотреть, что именно делают методы. Если setFile просто перезаписывает ссылку, а внутри getContent эта ссылка читается только один раз, то все ок. В том смысле, что getContent спокойно дочитает старый файл, а setFile в это время установит новый. Либо getContent успеет сразу взять новый. Еще отдельный момент, что если ссылка не volatile, то вообще нет гарантии, что getContent увидит то, что обновилось в setFile, но на практике обычно все нормально и так.
Ага, вроде понял, спасибо.
Привет, я на беке. Могу сказать, что взаимодействие с аналитиками даже теснее, чем с командой фронта. Вторым мы даем апи, и иногда у них "чето бек не запускается, посмотрите" (у нас разные тестовые стенды). А от первых мы собственно и получаем задания, как что и куда, проверяют они нас потом сами, они умеют без фронта поизменять параметры headless клиента прямо в Идее и запустить на выполнение. Не понимаю что ты имеешь ввиду когда говоришь насколько мы близки к продукту, ведь непосредственно мы его и делаем.
Ты забыл сказать самое главное: как getContent() получает ссылку на файл? Если через getFile() то все норм, а если напрямую из поля класса (в случае если все три метода в одном классе), то да, ошибка, несинхронизированный доступ к разделяемому состоянию.
>вы вообще близки к продукту вашего бизнеса? Или чисто отчужденно тех частью занимаетесь?
Смотря что для тебя "близки". В целом любой разработчик более эффективно решает свои функции, если он не просто "отчужденно" пишет код по тз, но и вникает в бизнес-задачи. Многие, естественно, стараются так делать, и это приветствуется. Но это и не значит, что нужно буквально совмещать обязанности аналитика или пма, просиживая дни на совещаниях с бизнес-заказчиком.
>Кто из вас ближе к бизнесу: вы или какие-нибудь фронты, мобильщики?
Ближе "мы", потому что мы скорее будем понимать, как работают все процессы в целом, а не только сторона UI. Хотя сами фронты/мобильщики, быть может, со мной не согласятся.
Вообще не очень понятно, что именно ты хочешь. Разработчику, который готов вникать в бизнес, везде будут рады, и в бэке как минимум не меньше, чем в других областях. Если же хочется прям сидеть на двух стульях, совмещая технику и аналитику, ну, может быть придется такое еще поискать. Или начать свое дело. Или пойти в 1С.
Давайте сделаем плагин для джавы, чтобы можно было писать полностью как на котлине. Оh wait...
>Котлин и есть плагин для джавы?
В некотором смысле да. Мне не очень понятна логика тех, кто обмазываться васянскими плагинами готов, а вот начать писать на котлине (да хоть бы внутри существующего джава-проекта) не готов, ведь это будет уже не родная джава
Чтобы не как в джаве.
>ради интерполяции
Да, только ради нее, ведь во всем остальном джава гораздо приятнее и удобнее котлина
Тут ты абсолютно прав. Лаконичный, строгий и детерминированный синтаксис джавы вызывает стояк у меня каждый рабочий день.
А вот как только нужно параметры в строчку вставить, сразу ловишь вялого, ну бывает
Да, увы.
Тебе нужно, чтобы любые типы BaseStage можно было вперемешку положить? Тогда не нужны дженерики, используй сам BaseStage и все. И List<BastStage>.
Каждый раз, когда это вижу, каждый раз забываю, зачем нужны extends и super. Самая непонятная штука в жабе.
Хотя, методами размышлений, я пришел к выводу, что супер все таки нужен. Дабы не засетить что-то ниже изначальной сущности.
Ой-вей, опять все дошло, скоро забуду.
Вообще у меня задумка такая, что все дерево зависимостей будет автоматически генерироваться и валидироваться при компиляции, а при запуске приложения никакого сканирования класспаса и рефлексии не будет.
И получается в этот лист можно будет запихать вообще всё что наследуется от BaseStage, вместе со всеми данными?
Я и про кваркус знаю. Но у них обоих целый ворох дополнительных свистоперделок, типа аннотаций для контроллеров. А я кроме DI ничего не хочу.
Тогда и EJB/CDI тоже.
Ну вон RestTemplate задепрекейтили и собираются удалять, значит, скоро выбора не будет, и так или иначе придётся юзать этот webflux, хоть и частично.
Бля.
Да ну в пизду, там какая-то еботня с класслоадерами.
>Webflux юзают вообще?
Где-то юзают, где-то нет. В любом случае это не такая сложная или отдельная херня, чтобы ее обязательно упомянуть в вакансии
RFC 7231
Это смотря как напишешь. Если ты сможешь сделать так, чтобы:
1. Быстро билдилось.
2. Все зависимости правильно разруливались и сообщало об ошибках в момент компиляции.
3. Чтобы было решение как писать тесты на этом фреймворке.
4. Поддерживал JSR 330
5. Возможности по настройке некоторых параметров без пересборки.
То конечно спрос будет. но ты такой фреймворк, конечно не напишешь
Да я уже на этапе класслоадинга во время запуска сборки слился чел. К тому же это все есть в микронавте или кваркусе.
но save походу не то что нада тк оно не только заменяет передаваемые поля, а и обнуляет то что не передал по сути заменяет на то что передал
как реализовать update?
в jpaRepo.. нужно еще и это вписывать?! ибо я думал что по дефолту должны бвть КРАД команды
Сап. Устроился гребсти на галеру. Стек бэк: JavaEE, фронт: React + Angular1.x. Слава Аллаху сейчас сижу на бэке. Особо опыта в джабе нет, но сам язык простой, как грабли. Возникла проблема, как изучать стезю тырпрайз девелопера? Нет, саму инфу, я найти могу, но как не распыляться между книгами. Выделил для себя несколько направлений в которых нужно развиваться:
0)Java вообще и в общем
1)JavaEE
2)ООП и Архитектура
3)Postgres и SQL
Для каждой темы есть кучка книг. Но как между ними не скакать. Например по ООП, очевидная банда четырёх очевидная, но я бы хотел ещё навернуть книги по более общей архитектуре с UML. Времени пока не всё не хватает. Насчёт EE есть пару книг, но они не выглядят как для нубов, думаю лучше навернуть гайдов от Оракле.
В общем анончики, можете предложить какой-нибудь родмап с книгами и гайдамижелательно на пендоском не для полного нуба в программировании, особенно по JavaEE
>JavaEE, Angular1.x
>несколько направлений в которых нужно развиваться
Ну да, очевидно, в этих перспективных направлениях только и развиваться
Да пускай хоть в коболе развивается, тебе то какая разница?
Меньше конкурентов -> больше зарплата.
>Java вообще и в общем
Кор джава Хоррестмана, Методы программирования Блинова чисто для упражнений, Эффективное программирование Блоха.
>ООП и Архитектура
Паттерны проектирования Хед-фирстов. Именно эта книга у них достаточно годная. Можешь чекнуть, если не осилишь банду., Чистый и Совершенный коды от Мартина и Макконела, Чистая архитектура Мартина, Рефакторинг Фаулера.
>Postgres и SQL
Изучаем sql Алана если совсем ньюфаг, официальная документация Postgres.
Как ты устроился гребсти без знаний вообще? Поделись секретиком
как я понял нужно просто слать, даже если пишут 2 года практики минимум
но вот я сел писать резюме и так и не понял что там написать
воды лить тоже не хочется а полу пустой лист тоже не комильфо
живу пока в израиле, и все еще на курсе java, но думаю что можно начинать поиски потихоньку
немного умею в spring/rest/hibernate
или стоит сначала закончить курс, и так искать?
ибо по плану еще HTML & CSS/JAVA SCRIPT/Angular/Android/ и по мелочи
анон помаги как обновить то чтоб только обновить переданные поля по id
ибо он обнуляет прошлые при save
шо делать?
как фиксить?
Не могу до сих пор разобраться, как использовать Session/EntityManager. Документация и разные статьи говорят, что в основном их нужно открывать и закрывать там же, где и используешь - то есть каждый раз, когда нужно что-то сделать с базой.
Но в то же время говорят, что вроде бы можно делать EntityManager на несколько транзакций, и даже можно расшарить один EntityManager на несколько объектов. Что, в общем-то, выглядит логично, но почему тогда везде рекомендуется использовать именно первый вариант - открывать и закрывать на месте?
Первый вариант звучит очень сомнительно. Если у тебя куча методов вызывает друг друга, и в каждом что-то делается с базой, то открывать-закрывать в каждом методе заново - ебануться какой оверхед.
И что за приложение такое, где об этом приходится думать самому, раз нет ни EE, ни спринга (@PersistenceContext EntityManager entityManager) ?
Нахуй говнохибернейт.
Я юзаю String.format() и не парюсь. если бы он еще был instance методом, а не static вообще бы проблем не было
Далеко не у всех подгорает, конечно, просто какой-то хейтер много кричит, ну как обычно. Еще забавно, что часто видно две крайности - либо подгорает, либо наоборот "ну кароч ты не парься ни о чем не думай, просто в энтити хуяк-хуяк, потом в спринге findBlahBlah и все само будет"
>Если у тебя куча методов вызывает друг друга, и в каждом что-то делается с базой, то открывать-закрывать в каждом методе заново - ебануться какой оверхед.
Кучи методов у меня нет, есть много отдельных, которые вызываются контроллерами MVC. Вот, например, в документации к Session написано:
>The lifecycle of a Session is bounded by the beginning and end of a logical transaction. (Long transactions might span several database transactions.)
То есть по такой логике, получается, нужно открывать и закрывать в каждом методе отдельно. Но с другой стороны, вроде бы нет каких-то явных подводных камней в том, чтобы держать один EntityManager открытым для всех методов. Вот и как быть.
>раз нет ни EE, ни спринга
Есть и то, и то, но как это мне поможет, пока не изучал. Тренируюсь с обычным Хибернейтом.
Нет, не у сосачеров, а конкретно у меня. Много магии, которая на любой кейсе чуть сложнее хеллоуворлда почти гарантированно выстреливает. В результате приходится изучать кучу нюансов, что противоречит заявленным целям - простоте (сырой SQL намного проще) и переносимости (используемая база никогда не меняется). Лучше нативных запросов ещё ничего не придумали.
И не именно от хибернейта, а от ORM как явления, хибернейт просто самый популярный здесь.
>>The lifecycle of a Session is bounded by the beginning and end of a logical transaction. (Long transactions might span several database transactions.)
>То есть по такой логике, получается, нужно открывать и закрывать в каждом методе отдельно.
Не обязательно. В самом простом случае предполагается одна транзакция на один запрос, и даже если много методов вызывает друг друга, всё происходит в одной транзакции (но есть более сложные случаи с @Transactional/@TransactionAttribute). Получается, что в начале контроллера ты получаешь EntityManager, запускаешь транзакцию и прокидываешь EntityManager в каждый вызываемый метод (если они есть), а в конце контроллера коммитишь и закрываешь. Но вручную это делать неудобно, на то и есть @PersistenceContext.
Бегло пробежал глазами.
ООП, линукс, немного матана, стандартов и основы архитектуры - это для тебя много?
Лол, блядь, ну иди 1с учи тогда, что ты здесь забыл?
Всё что угодно, интересней жабы, если жаба тебе не интересна.
Боишься конкуренции с гуманитариями? Понимаю.
Там много неочевидной магии и когда у тебя начинается что-то более сложное, чем петшоп - может нехило выстрелить. Это и классические N+1, так и что-то более интересное типа неправильного уровня изоляции транзакции.
Если бы да кабы, то в джаве были бы экстеншен методы.
Лучше дрочи SQL и спринг, без них оффер не получишь точно, будь ты хоть Никлаус Вирт.
А вы вообще на джаве работаете? Какой стаж? Как язык вообще? Много тасков интересных на алгоритмы и околоматешу?
> Какой стаж?
Достаточно старый проект у нас, стек - спринг, Java EE 6, оракл, всё на websphere крутится.
> Как язык вообще?
Что ж, шутки про размазывание бизнес-логики в джаве и огромные идентификаторы - вовсе не шутки.
> Много тасков интересных на алгоритмы и околоматешу?
Вообще нет, с этим в кресты. Задачи сводятся к запиливанию/допиливанию бизнес-фич, кому-то интересно, кому-то нет.
Слишком много зубрешки фреймворков и мало программирования. Лучше учи ламповые велосипеды С++.
А там сложно первую работу найти? И что для этого нужно мб знаете
Запилите уже девопс-тред для таких вопросов, а то тут максимум докер кто-нибудь тыкал.
Помнится, где-то полгода назад в одном из тредов никто не смог помочь куну с zookeeper-ом.
Как повезёт, хотя обычно это программист, который в довесок к основным обязанностям согласился на эту хуйню.
Вот я и думаю, стоит ли соглашаться, или просить прибавку.
Задача: Создайте упрощенный HTML-парсер. Он должен распечатать содержимое для каждой пары тегов.
Есть два правила для порядка печати:
одинаковые теги уровня иерархии обрабатываются слева направо;
если у тега есть другие теги в качестве дочерних, дочерние элементы должны быть обработаны в первую очередь. Если дочерних элементов нет или все они уже были обработаны, тег может быть обработан.
Как вообще отделять теги от того что в них вложено? Регулярками?
не нашел.
бля... ну это пиздец товарищи! я ебал такое решение
Вам шашечки или ехать?
Пиздец говном в треде завоняло
А ещё можно юзануть рефлексию.
Пиздец, 3 часа просидел, но так и не понял, как решать. До сих пор не уверен нужны ли тут регулярки или что-то еще.
@pro.jvm
Блять, только узнал, что для спринга надо идея платная
Хлопцы, как быть, что делать?
Вроде 30 дней триала там есть, но а как дальше то?
Пиратство.
Как понимаете, я бекендер, так что все эти новомодные нейросети не для меня. Что б такого на джавочке написать, чтоб не обоссали за "слишком простой диплом", но, при этом, чтоб не сильно напрягаться? Думаю, что-то с рефлекшнапи или AOP смогло бы бросить достаточно пыли в глаза, но чет не могу придумать что
у меня есть @RestController было бы не плохо, чтобы эндоинты с помощью http передавались в @Controller для таймлифа и я получал вьюхи
Понятно, спасибо, буду иметь в виду.
Ну я на архиваче находил "письмена предков", но тут их уже не помнит никто. Тред переродился.
сижу тут с прошлого августа
Тоже с прошлого августа тут, самое раннее, что помню - срач про прямоугольники-квадраты.
Судя по местному архиву, та нумерация как минимум с 2015 была. Хоть что-то.
Ну а письмена древних - ещё на Том были свои разделы со своими тредами, но я в то время ещё в начальную школу ходил, у сабжа были закрытые сорцы, и я думал, что это для игор на мобилки, которые одноклассники передавали по ИК-порту.
Двачую.
Ничего, джаву надо изучать по мурзилкам.
Я тоже сделал рекурсией, и тоже субстрингом. 5 часов на простое задание вчера проебал. Какой же я тупой.
Кстати там надо было решать через очередь/стек вместо рекурсии. Я так и не понял как.
Все пилят какую-нибудь банальную хуйню на буте, типа интернет-магазина/социалочки с парой контроллеров и несколькими таблицами, из которых данные берутся через spring data jpa. Этого хватит, чтобы показать, что основные задачи ты выполнять можешь.
Можно ограничиться обычным thymeleaf вместо всяких реактов с апи.
> Какой это тред на самом деле, 96? Может, стоит починить нумерацию? Больше года сломана.
А не похуй ли на эту нумерацию?
> Что по джаве лучше всего из чтива взять?
Для ебланов шапку даже запилили, а они один хуй не могут ее посмотреть
>>Шаг 28 - Необходимые DLL для AWT. (18.01.2003 - 22 Kb)
Джава для некромантов. То что мертво умереть не может.
Я инженер-монтажник да, так бывает, хочу в теплый офис, подглядывать под столом на сраки наташек и программировать на джаве.
В прошлом треде какой-то программист смеялся с меня, извините, я не джава программист. Объясните, пожалуйста, что за тип данных "множество" в яве и почему его элементы смещаются при удалении из середины. Пик 1.
Пик 2.
Что это за конструкции кода? Не функция не поле.
Почему на некоторых форумах, в частности здесь и в бэ часто можно увидеть негативные высказывания в адрес джава программистов? Ява-петухи, например, в тоже время веб-макаки, может стоит во что-то другое вкатиться?
Моча, не бань меня, я понял, надо в этом треди.
1. Вопрос неправильно сформулирован, список в Яве это все реализации List и там в любой реализации и двусвязный и односвязный. Разве что односвязного в Яве нет. А множество это Set и у него нет середины, т.к. он неупорядочен.
2.
{
// этот код будет добавлен к коду конструктора в начало
}
static {
// этот код будет выполнен при инициализации класса
}
>и там в любой реализации и двусвязный и односвязный
в любой реализации элементы должны смещаться.
Просто шапку надо отрефакторить, оставить строк 10, подробный гайд - по ссылке.
>при удалении из середины СПИСКА
Ничего не подходит.
- В LinkedList'е ноды в теории могут лежать разбросанные по всему хипу и смещаться относительно других не будут, только ссылки с предыдущей на следующую ноды и наоборот перекинутся.
- Дерево не список
- Множество тоже не список. По крайней мере в джаве заставить один класс одновременно реализовать интерфейсы List и Set очевидно нельзя.
> Ты жабу с жаба скриптом не путаешь часом?
Да это он, наверное, жалкие оправдания шарпеев начитался
>А также чем агрегирование отличается от композиции, SOLID, анемичная модель и прочий манямирок, блеать.
Маня, это базовые вещи по дизайну REST API, я его за язык не тянул - он сам сказал, что может в REST, вот пусть покажет. А то блять делают GET который модифицирует данные, а потом удивлялся что им не перезванивают.
>>агрегирование отличается от композиции, SOLID, анемичная модель и прочий манямирок, блеать.
Пиздец, мало знать язык и паттерны, уметь писать код, надо еще и эти термины учить на двух языках.
>>агрегирование отличается от композиции
Погуглил - это ж DI/IoC обычный.
>>анемичная модель
Это код в процедурном стиле что ли? Сплошные упоминания что это антипавттерн, хотя я о таком ни разу не слышал.
>>SOLID
Тут все понятно. Сложность варьируется от степени ебанутости вопрошающего. Из всего перечисленного самый адекватный вопрос.
Не путаю, это вступительный тест.
>>791122
Вот я примерно как ты думал, только чуть похуже, потому что пока только хелло вролд написал, но правильный ответ - множество.
>>790793
Почему? Там же просто поле (ссылку на другой) в элементе списка меняют, физически они где угодно и там могут остаться. Ладно массив, в Си это непрерывный участок памяти, а в джаве я уж и за массив не уверен.
>>790792
2. Спасибо.
RESPONSE 200 OK {"success": false, "error": "invalid data"}
>>791296
> Пиздец, мало знать язык и паттерны, уметь писать код, надо еще и эти термины учить на двух языках.
Проблема всех этих маня-понятий в том, что можно годами все это использовать, потому что это прямое и естественное решение (те же паттерны не придумывают, их обнаруживают в уже существующем коде), и даже не подозревать, что оно как-то называется, но ради ЧСВ тех, кто собеседует, приходится всю эту хуйню запоминать.
> Погуглил - это ж DI/IoC обычный.
Эти понятия все же несколько шире DI, в классическом ООП это и без DI встречается.
> Это код в процедурном стиле что ли? Сплошные упоминания что это антипавттерн, хотя я о таком ни разу не слышал.
Вроде того. Смысл в том, чтобы разделить код и данные, чтобы в результате были классы-сервисы, не сохраняющие состояние, и классы-POJO, в которых нет логики и которые нужно передавать в сервисы. Ровно как принято делать в джаве во всяких спрингах.
>>791310
На джуна с небольшим опытом в ДС. Может, в ебенях миддлы столько и получают, но в ДС у них 120+.
>Почему? Там же просто поле (ссылку на другой) в элементе списка меняют, физически они где угодно и там могут остаться. Ладно массив, в Си это непрерывный участок памяти, а в джаве я уж и за массив не уверен.
В Java массив тоже непрерывный участок памяти. Тут вопрос в другом, что эти "альтернативно одаренные" подразумевают под елементом. Если говорить про Java, то под элементами List-а подразумеваются объекты которые в нем лежат, а не внутренние структуры данных коллекции. Поэтому хер его знает, про что они там.
Есть ли разница в перформансе при инициализации массива примитивов и листа с обьектами этих примитивов?
>>потому что это прямое и естественное решение
Я вот тоже когда читал про SOLID, GRASP. DRY, KISS не понимал нахуя изобретать все эти аббревиатуры если это очевидные вещи.
>>Смысл в том, чтобы разделить код и данные
Надеюсь меня не будет собеседовать фанат Бугаенко.
надо поток для этого пидорить?
или как лучше?
На инициализацию похуй, это не такие затратные операции. На перформанс влияет что ты хочешь с этим в дальнейшем делать.
>Есть ли разница в перформансе при инициализации массива примитивов и листа с обьектами этих примитивов?
Есть, но сравнительно небольшая. Вообще, я считаю, что примитивы не нужны. Примитивы в джаву впилили для скорости в тёмные времена, и всё равно зря их добавили. Везде, где можно использую обёртки и сравниваю по equals().
Если устроит такой вариант, можно при попытке обращения к токену проверять, не истёк ли он, и удалять, ещё опционально в фоне по какому-нибудь расписанию, например, раз в день, удалять все, что истекли.
Ну ты же город не назвал, а в дс меньше 100к айтишнеку с опытом будут платить только идиоты.
Session session = sessionFactory.openSession();
User user = (User) session.load(User.class, userId);
Session session = sessionFactory.openSession();
List<Task> tasksList = user.getTasks();
Зачем 2 раза открывать сессию?
Монадический селектор сбросить.
Мне нужно в шаблонизаторе нарисовать определённый элемент, но у него может быть несколько вариантов структуры в зависимости от отображаемых данных. В качестве примера можно взять посты на дваче - отрисовываются по-разному в зависимости от кол-ва файлов (0, 1, 2-8), номера поста в треде (ОП и следующие посты), от того, на какой странице находится (на доске или в самом треде). Как такую задачу решить? Знаю, что логика в представлении считается дурным тоном, так что пока единственное, что придумал - просто в каждой такой сущности хранить строку с её разметкой и в шаблонизаторе незначительно модифицировать в зависимости от контекста отображения.
Потому что пока у меня просто функция для собирания элемента по кусочкам с разметкой прямо в коде, что наверняка выглядит (и работает) крайне костыльно и глупо.
Почти во всех шаблонизаторах есть условные блоки (обычные if/else), ещё везде в том или ином виде есть макросы (типа функции). Этого должно хватить.
Есть, массив быстрее и может непосредственно хранить примитивы.
Ещё раньше у меня так и было. Циклы и условия в самом шаблонизаторе. То есть это нормально? А то я решил, что это кто-то может посчитать избытком логики в представлении и лучше такое никому лишний раз не показывать.
Да ладно тебе,не выдумывай, все любят. Дал бог работу программером, даст и фантазию
https://hyperskill.org/learn/step/3661
Кошечки бля, дракончики, химеры, нихуя не понятно, но очень интересно
Да пошел ты нахуй.
Держи в курсе блядь.
А если startvalue 1?
Видел только обычный интерпрайз, да и там антипатерны кругом. Сейчас уже не фабрики, а DI используют, да и проперти с конфигами там не используются.
У тебя там не бизнес-логика, так что нормально. Да и не просто так в шаблонизаторах такие возможности есть.
Расслабься: не нужны никакие платные сертификаты; чаще думай своей головой и проверяй информацию
Спасибо. Да я попробовал погуглить, а там только ебучий джавараш.
LetsCode, мне понравилось, когда вкатывался.
Да.
Свингоговно там даже не трогай. Делай все харды + один с спрингбутом. Потом в летскоде для улучшения спринга.
Насчет стажировок вопрос ебанутейший. Ты думаешь, там смотрят на количество решенных задач? Может быть, тебе и сертификат дать?
Ну типо там же есть чек по сложности проектов очевидно. Если я на гит залью hello world или соцсетку есть же разница. В первом случае даже на HH не кинут инвайт на собес, а во втором мб и кинут
На гитхаб никто не смотрит, в лучшем случае краем глаза по названиям пробегут. Но важно, чтоб он был и ты им пользовался регулярно.
Также всем похуй, где ты свои скиллы приобрёл, главное, чтоб они были.
Тебе в любом случае придётся тестовое делать. Я вот свой гитхаб тестовыми и забил, например.
Выше анон всё верно написал, научись крутить списки и освой спринг на уровне простейшего круда.
Потом начинай искать работу, попутно задрачивая свои слабые стороны.
Да. Алгоритмы и кор со стримами.
По смыслу.
Модели для бека, для фронта отдельно.
Контролёры по смыслу. Авторизация, бизнес-логика.
Репозитории, сервисы, конфиги.
Ну они же данные берут откуда-то.
Делаю отправку запросов на чужой апи (все работает со своего адреса). Пытаюсь через прокси со спрингового приложения отправлять запрос - Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request";
Есть вероятность, что РКН заблочил проксю? Публичные пробую.
Пробовать свою на VPS поднимать пока не очень хочется.
Алсо, еще вопрос вдогонку. То же самое можно через VPN отправлять же? Насколько сложно реализуется? Например, если openvpn подниму.
Я студентота.
Раскрою свой вопрос. Вот взять допустим изучение свифта - я могу написать туду/погоду/что-либо еще для iOS и протестить это, потрогать, увидеть как идет разработка с самого начала.
То же самое андроид.
Или взять допустим руби/пыху/питон/жс - я могу написать туду лист с сервером и базой данных, могу написать туду лист без базы данных, могу написать хоть что с нуля.
Изучение же джавы выглядит для меня как бесконечное заучивание теории, попытки на этой теории пролезть в энтерпрайз как трейни, год охуевать вообще от всего что происходит в коде, в офисе, на работе и по пути на работу/с работы и возможно через год начать себя чувствовать чуть менее хуево и начинать хоть что-то мыслить.
В пределах одного класса есть три boolean переменные, которые никого не трогали. Чтение одной из них происходит постоянно и скорость доступа к её значению критична.
Так-же данный класс подвергается сериализации и отправляется по сети в виде json-а. В некоторый момент времени, возникла мысль (не у меня) оптимизировать json и теперь все три boolean переменных передаются по сети как одна int переменная в виде битовых флагов.
То есть при серилизации мы собираем из трёх переменных одну, а при распаковке разбираем всё обратно.
И вот тут у меня возникла идея, убрать в самом коде эти boolean переменных заменив на одну int и читать её как битовые флаги. Но необходимость постоянно читать одну из перемененных заставляет задуматься, что возможно boolean был бы быстрее, и так вопрос - что будет быстрее в долгосрочной перспективе при постоянном использовани:
>boolean a;
>...
>return a;
или
>int flags;
>private static final int CONST_A = 0x0001;
>...
>return (flags & CONST_A) == CONST_A;
ТЫ СУКА НА С ПИШЕШЬ ИЛИ НА ДЖАВЕ? МУДАК БЛЯДЬ
Толсто.
Я вот недавно так с кэшем обосрался.
Метод возвращает значение, которое кэшируется. Это значение меняется и из-за этого меняется кэш.
Если бы возвращал неизменяемый список, то всё было бы заебись.
Вот в геттере и оборачивай в unmodifiable
Ну совсем по феншую или вообще не модифицировать или возвращать неизменяемую копию List.copyOf().
Потому что возможны всякие неприятные эффекты типа ты начал работать с вьюхой коллекции, а кто-то другой модифицировал исходную коллекцию в этот момент.
>В чём именно проблема состояла?
Вот примерно это
>всякие неприятные эффекты типа ты начал работать с вьюхой коллекции, а кто-то другой модифицировал исходную коллекцию в этот момент
Спринг - понятно, Play - понятно. Хибернейт, гуава, апачи, ломбок - ясно.
А вот что-то более необычное, но тоже полезное и, желательно, такое, вокруг чего можно было бы строить весь проект или хотя бы отдельную его часть? Есть какие нибудь геймчейнджеры
И вот вопрос. А сильно медленее будет Collections.sort(arraylistIntegers), чем Arrays.sort(arrayInts) с одними и теми же интами?
Там под капотом вроде один и тот же Arrays.sort, но :
1. List.sort распаковывает лист в массив объектов, после сортирует, а потом запаковывает обратно в лист.
2. По объектам он сортирует более медленной сортировкой слиянием, а не "быстрой", как с примитивами.
3. compareTo медленее, чем обычное сравнение ">" "==" "<".
А насколько это в итоге должно быть медленее если все это сложить? Раза в 2?
>Как правильно хэшировать пароли
https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
Хочешь получить ошибку - ставь @Override
Где там попытка переопределения? Два разных метода. Или по-твоему потомок должен лезть в делали реализации предка, искать там приватные методы и падать с "ряяя, у него тоже такой метод, хоть он и пытается это скрыть"?
То есть ты предлагаешь сломать инкапсуляцию? Каждый раз, когда нужно унаследовать класс, придётся лезть не только в доки, но и в исходники.
Ты как-то всё слишком драматизируешь и сводишь к крайностям. Не сломать, а улучшить. Каждый раз, когда хочешь переопределить или создать методы с теми же именами, предлагать программисту ознакомиться с существующими, а вдруг это то, что ему нужно? Впрочем, я не претендую на правоту в последней инстанции, если есть как есть и работает нормально лучше ничего не трогать.
> предлагать программисту ознакомиться с существующими
Ошибка/варнинг - это не предложение, а сообщение о реальных/потенциальных ошибках в коде. Ознакамливаться можно из доков, но никак их километрового выхлопа компилятора.
> а вдруг это то, что ему нужно?
Нет, ему это точно не нужно. Это приватные методы, он никак их вызвать не может, и знание, что они есть, для него бесполезно. Программист не должен знать о деталях реализации, а это как раз они.
Применяется сравнительно редко, но это возможно. Есть TaskExecutor, ещё есть @Async.
А джава тут при том, что...
Спринг это от тебя скрывает за экзекутарами, асинками и прочим.
Максимум - тебе надо помнить, что твои бины по умолчанию синглетоны и должны быть потокобезопасны.
>Есть TaskExecutor, ещё есть @Async
Никогда не понимал, в чем польза от этих дополнительных абстракций, если и так есть понятный, удобный и явный ExecutorService
Кто-то ругает, а кто-то хвалит (и не за потокобезопасность). По моим ощущениям, ругают в основном те, кого больше волнует теория и всякий абстрактный феншуй, а не суровые реалии разработки.
Наверное, чтобы побороть потокофобию у тех, кто долго сидел на EE, мол, смотрите, а у нас можно: >>1761884 →
Фух, я уже испугался. Вопросов нет, просто давно не заходил, решил пропинговать.
>2009
>хаяют сериализацию
Я тут решил побольше почитать про маркер интерфейсы, а тут такое. Так что, они нужны или не нужны?
Странно сравнивать Serializable и передачу данных в xml/json, они используются совсем для разных вещей. Какой смысл каждый раз генерировать медленные и жирные xml/json для сохранения локального состояния приложения, если есть куда более быстрая сериализация. Эти данные всё равно никогда не читаются человеком и к тому же парсятся куда быстрее.
Так можно дойти и до того, что базу данных тоже надо хранить в xml/json, а jvm вообще выкинуть и всё каждый раз с нуля парсить и интерпретировать, как пхп.
>>794961
Уже много раз на эти вопросы отвечали в треде.
>Какого проектика хватит для того чтобы получить оффер на стажера или джуна
Тебе дадут тестовое делать, вот его сделаешь и возьмут. Потренироваться можешь создавая свою версию интим-сити.
Проще говоря интернет-магазин, где можно зарегаться, добавить товары на профиль, удалить, посмотреть их список.
Обычный CRUD. На фронт можешь забить, но иногда его просят делать.
В прошлых тредах я и другие аноны скидывали примеры тестовых, найдёшь при желании.
>где можно норм теории по Джаве взять
В книгах. Попутно гугля всё непонятное. Больше никак.
>нужно ли дрочить алгоритмы
Да, с вероятностью 50% на собесе дают писать "разворот структура_нейм" на бумажке. Или что-то похожее.
В зависимости от шизоидности могут дать развернуть список, а могут и своё к/ч дерево написать.
Но на ждуна там ничего сложного не было, у меня по крайней мере. Хотя я в тот же яндекс то и не пытался.
>Кормен
Книга классная, но там прям матан матанович. Для вката хватит просто понимать асимптотическую сложность у самых популярных операций. В общем я не могу сказать, я и Кормена читал, и в вузике учился, и потом "Грокаем алгоритмы" читал, и много чего ещё.
Уже не помню даже, что больше всего понравилось.
Я про сырые json- и xml-файлы, а не монги с BaseX всякие, где это оптимизировано и не парсится целиком с нуля каждый раз.
Ну вон в той же монге бинарный BSON, работать с ним всяко быстрее, чем.
>синтаксис Питона более приятен
Ты же не для души выбираешь, а для зарабатывания бабла.
Java - это энтерпрайз всех сортов.
Python - это больше датасайнс и ML, хотя есть и немного веба на Django.
Я бы на твоем месте смотрел варианты смены языка на текущем месте, или новое место где будет 1С + другой язык.
>Склоняюсь к Jave т.к. считаю ее более актуальной в моем регионе (вакансий на hh побольше) но синтаксис Питона более приятен. На какой стул сесть посоветуете?
Котлин.
Судя по вопросу, ты скорее на си пишешь, чем на языке, где создают по 100 объектов на каждый чих, не считают вызов методов дорогостоящей операцией и доверяют управление памятью сборщику мусора.
Ну так и вайпай в /b/, даун, а к нормальным людям не лезь.
Но вообще ты фигней страдаешь. Если у тебя задача которая реально требует такого уровня оптимизации - то надо писать бенчмарки, смотреть во что код компилируется, ну и конечно понимать ассемблер.
>где создают по 100 объектов на каждый чих
Жиза. Я вот ленюсь даже результаты промежуточных операций сохранять, каждый раз считаю заново.
Один хуй, пока запрос по проводам бежит, времени пройдёт больше, чем считать будет. Притом во много раз.
да я думаю под андроид писать, про то, как всем похуй на мощность серверов я вкурсе
Даже на очень слабом и старом андроиде прирост от твоей оптимизации будет в тысячи раз ниже любых мыслимых и немыслимых погрешностей.
Если уж и собрался оптимизировать, оптимизируй работу с сетью, с большим количеством данных и с ресурсами.
Зависит от того, куда идёшь. Обычно надо знать кор, основы спринга и SQL.
Но вот в зелёный банк стажёром не возьмут, если не студент, даже если закончил. В синем такого, вроде, нет.
Первые полгода дрочу саму джаву:
Из книг буду юзать шилда и философию и доки.
Практику брать с джавараша, джетбрейнса, mooc.fl и codewars
Вторые полгода буду дрочить spring и еще какой-нибудь фреймворк, если времени хватит
Из книг пока spring in action + доки
Практику хз где, буду видосы смотреть
Параллельно буду смотреть SQL и git + вопросы с собесов и задачи оттуда. Мэйби по алгоритмам че нить почитаю.
Думаю, тыщ на 30 вкачусь.
Вангую, через пару часов ты пойдёшь смотреть котиков на ютубе, дрочить или скроллить двач.
Ок.
Чё там тебя спрашивали?
Смотря какие плагины и смотря как ты их запускаешь. Что-то можно запустить и так, чтобы файлы генерировались не в target/, а где-то в другом месте, и clean эти файлы не тронет, но так делают редко. А код точно генерируется на основе именно class-файлов, а не исходников, как это обычно бывает?
>А код точно генерируется на основе именно class-файлов, а не исходников, как это обычно бывает?
Да.
Конфигурация плагина стандартная, запускается он на фазе generate-sources.
Странный плагин. Это надо в его доках смотреть. Но похоже да, придётся запускать мавен дважды, либо сделать что-то хитрое с фазами, вдруг возможно.
У этого плагина нет документации, потому что я только что начал его писать. Просто раньше я работал с antlr плагином, и он вроде так работал, хотя я не уверен. Но так как это неудобно, у меня возникли сомнения.
Хотя я не понимаю, почему я пишу мавен плагин, а не процессор аннотаций.
В теории можно ещё попробовать что-то сделать с модулями мавена. Сначала собирается один модуль, затем уже в другом модуле запускается плагин на полученных классах, но не на generate-sources, а на каком-нибудь compile.
У нас был такой плагин он изначально вообще ANT таской был. Мы решили проблему созданием еще одного модуля.
Модуль А - сдесь собираются классы по которым будет генериться код.
Модуль Б - тут на generate-sources генерим код по классам из А.
Модуль В - тут используем это все.
Конечно это увеличивает количество модулей, но зато все работает четко, без хаков лайфсайкла.
Может, и заменит, заранее знать нельзя. Просто котлин - далеко не первая попытка убить джаву, к тому же у котлина ещё и нет особых киллер-фич, его обычно ради сахарка берут.
Можете объяснить.
RestController работает с json, Tomcat server работает с jsp. Как это вместе работает?
Если вопрос ко мне, то у RestController и jsp под капотом одни и те же сервлеты. Правда, хз, юзает ли jsp в спринге DispatcherServlet, как RestController, обычно в спринге вместо жсп берут нормальные шаблонизаторы, либо вообще SPA.
Много причин, тут и инерционность компаний и разработчиков. И плохой интероп Ява -> Котлин в обратную сторону все ОК. И проблема с тулами которые оперируют байткодом всякие AOP и cglib proxy. И медленная компиляция по сравнению с явой.
Опять же, сама Ява начала быстро развиваться - и сахара добавили и плюшки типа refined generics и inline типы скоро подвезут, offheap хранилище уже есть. Если бы Ява оставалась на уровне 1.5 - тогда да, котлин был бы остро нужен, но в современной Яве он не так сильно нужен. Корутины - это единственная значимая фича котлина, которой нет в яве.
Всегда наследуй от RuntimeException. Exception - проверяемые исключения, за которые тебя будут ненавидеть.
Спасибо за ответ! Но можно все таки чуть более развернуто, почему RuntimeException лучше, кроме того, что меня за него ненавидеть не будут? Это делает код более читаемым? Не нужно везде try/catch ставить? Или есть глубинный фундаментальный смысл?
Вообще, для таких вещей принято использовать IllegalArgumentException. Свои типы имеет смысл использовать или если тебе прям очень, очень надо дополнительные поля передать или ты хочешь сделать его checked.
Насчет того, что checked зло - это тоже неправда, они оправданы когда нельзя на 100% исключить вероятность ошибки - например IO. А вот когда этого можно избежать - как например в твоем случае - лучше unchecked.
Он есть, просто табы это не 2/4/8 пробелов, это выравнивание к определенному столбцу.
https://ru.wikipedia.org/wiki/Табуляция
я то понял, что оно есть, но он работает как-то странно, если одна буква, то всё ок, а если 2 буквы, то уже на 1 символ меньше и тд.
всё, я осознал
Просто в каждом методе, который будет вызывать твой метод, придётся дописывать throws YourException. Фундаментального смысла нет, просто, неудобно. Это концепция проверяемых исключений (checked exceptions), сейчас признана устаревшей.
Да я наверное брошу затею с мавен плагином и напишу процессор аннотаций.
>старомодную джаву
Потому что в джаву фичи воодятся только после того, как тщательно обкатаются, и поэтому не имеют ошибок, допущенных в других языках.
>Корутины - это единственная значимая фича котлина, которой нет в яве.
И то есть project loom.
Какую-то хуйню скинул, в джаве суть как раз в том, что не нужно использовать stripIndent или что-то подобное.
Для отлавливания null спользуй Long. Ну а для строк либо кастомный обработчик исключений, либо тупо String принимай и парсь вручную.
Есть вполне адекватный кодстайл от гугла.
Не только лишь все облачные, мало на самом деле.)
По крайней мере у меня 90% задач вообще с вебом не связано.
Как человек выкатывающийся из байтоебства в джаву, могу сказать что с непривычки джава по началу вызывает рвотные позывы например необходимостью создания классов для обработчиков событий. Это от части фиксится лямбдами но осадочек остается.
Так же на джаве по понятным причинам не сделаешь библиотек к существующему софту, у меня таких задач много.
За время вкатывания запилил проектик на javafx. Надо сказать возможности по работе с графиками дико убогие, а мне нужен многоосевой график с хорошей производительностью. Спасибо немцам, вроде нашел у них норм библиотеку, но по ней есть несколько примеров, а нормальной документации нет.
Ну это я понимаю мои проблемы, пока не вкатился нормально. Наверняка еще просто многого не знаю. Зато очень порадовала удаленная отладка на raspberi pi. И то что одна и таже прога одинаково на разных операционках без всяких там кросскомпиляций работает. И конечно гибкость javafxа тоже заставляет его уважать.
в джаве куча неудобных костылей, которые набиты чисто из-за глупой погони за ооп. именно по этому функции в ней реализованы так уебищно, а вот в котлине они очень миленькие и даже сравнимы с языками типа пуфона, где ты можешь функцией как объектом играться без лишних выебонов
>в джаве куча неудобных костылей, которые набиты чисто из-за глупой погони за ооп.
Хуйню высрал какую-то. Куча костылей в Котлине, которые набиты из-за глупой погони сделать не так как в джаве.
в отличии от тебя я привел пример, делай так же, иначе твой ответ можно приравнять к пуку
Так тут логика простая: все что как не в джаве - костыль. Шах и мат, котлинисты
Так тебе спа или шаблонизатор? Что сервер должен вернуть готовую отрендереную страничку (как делает jsp) или жсон, который клиент сам отрендерит всякими реактами?
Из соседнего треда: >>1798157 →
От себя добавлю companion objectы, собственные строки, коллекции, классы.
в отличии от джава-коллекций, в ней есть методы стримов, фильтр, к примеру, так что котлин-коллекции оптимизированы на это. во всех классах, которые реализованы в котлине, есть дополнительные методы. это во-первых. а во-вторых, без "переписанных под котлин" классов, нужна была бы джавовая стдлиба (возможно она энивей нужна, я не уверен в этом).
если не нравится конкретно тебе не значит, что это плохо. если ты считаешь что это действительно плохо - приведи хоть один аргумент. мой - компаньон обжекты отделяют статическую логику от инстансной, что вполне удобно
>в отличии от джава-коллекций, в ней есть методы стримов, фильтр, к примеру, так что котлин-коллекции оптимизированы на это.
Оптимизированы? Сильно сомневаюсь, я бы на твоем месте посмотрел декомпилированный котлин код.
Фильтры и прочее уже есть в гуаве, причем это работает со стандартными джава классами.
>во всех классах, которые реализованы в котлине, есть дополнительные методы.
В котлине есть экстеншены, которые как раз служат цели расширить существующие классы дополнительными методами.
>>798399
>мой - компаньон обжекты отделяют статическую логику от инстансной, что вполне удобно
Статические члены класса позволяют отделить статическую логику от инстансной.
А что там много учить?
>Ну а если, например, у меня несколько отдельных сервисов
Отдельно запущенных микросервисов? Тогда норм.
Ну а ты думал, что у нас как в пхп и js будет? А вот хуй.
Просто во всех серверах, что http, что не http. Да и не только серверах - почти всех приложениях, где последовательно поступают данные, на которые надо реагировать, тот же гуй.
А при использовании RMI насколько я помню цикл писать не обязательно. Как это работает?
Смотря о каком уровне речь, при использовании фреймворков цикл уже сделан за тебя, но он всё равно есть.
> первые два аргумента
окей я декомпилировал байткод вызова метода Array.any(predicate) и там просто фор-луп с брейком, когда предикейт возвращает тру.
> Статические члены класса позволяют отделить статическую логику от инстансной
они никак не отделены от инстансных членов класса, а компаньон обжект отделяет статические члены дополнительным индентом. ты полную хуйню спизданул тут
>они никак не отделены от инстансных членов класса, а компаньон обжект отделяет статические члены дополнительным индентом. ты полную хуйню спизданул тут
Они отделены ключевым словом, индент также можно вставить, так что хуйню несешь именно ты.
> первые два аргумента
Так почему в Котлине созданы свои аналоги джава классов вместо того, чтобы расширить джава классы с помощью экстеншенов?
> Они отделены ключевым словом, индент также можно вставить, так что хуйню несешь именно ты
челик ты тупой. кейворд никак не выделяет статические члены класса. вставляй индент, который любой форматтер снесет.
> почему в Котлине созданы свои аналоги джава классов
другой дизайн и структура. вот пример https://discuss.kotlinlang.org/t/a-hashmap-is-not-a-map/504/4
>челик ты тупой. кейворд никак не выделяет статические члены класса.
После этого высера вообще не вижу смысла с тобой спорить. Вообще, как все, что ты сказал, противоречит моему тезису?
>Куча костылей в Котлине, которые набиты из-за глупой погони сделать не так как в джаве.
>Куча костылей
>компаньон обжекты
это по-твоему костыль? костыль это сделать функциональные интерфейсы, чтобы не делать функции
Костыль (для языка, который заявляет интероп с джавой) - это функциональные типы ВМЕСТО функциональных интерфейсов, и начать их поддерживать только в последней версии языка. Не уверен как точно функциональные типы реализованы в котлине, но с моей точки зрения они лишь являются сахарком для функциональных интерфейсов, и ничего не мешает добавить такой же сахарок в джаву 16, например.
вот такую херню пощу и прочее
https://youtu.be/6Ug_APpxy2s
че используете для концентрации?
хвалили фенотропил, но ща его нет. появился нанотропил. пробовал кто?
> крч, начал джаву учить и постоянно отвлекаюсь.
> че используете для концентрации?
> хвалили фенотропил, но ща его нет. появился нанотропил. пробовал кто?
Ну если ты отвлекаешься только из-за того, что учить джаву тебе не интересно, советую тебе бросить эту затею. Если ты по-жизни такой, то тебе уже ничего не поможет
не, ну есть же такие вещи, когда сначала неинтересно/трудно, а потом когда начинает что-то получаться - интерес возрастает.
у меня так с игрой на гитаре было. первый месяц было немножечко мучительно, а потом стало оч нравиться)
Как это работает?
это тонкая отсылка к тому, что надо быстрее выучить чтобы заработать на жратву или правда помогает для концентрации?))
Да, сначала считывается 'c', затем '\n'.
Создаются два потока, каждый ждёт ввода с клавиатуры, а потом выводит значение на экран. Так как операции ввода-вывода - блокирующие, любой случайный поток может успеть захватить ввод-вывод раньше остальных, и остальные простаивают, пока этот поток не завершит операцию.
А почему первая введенная строка доходит только до одного потребителя, а остальные уже до обоих? Если использовать сканнер, то все строки будут доходить до обоих потребителей.
Всегда до обоих, просто в первый раз первый потребитель успел прочитать строку и вывести, пока второй тупил. А в последующих случаях сначала второй успевает прочитать ввод до того, как первый начнёт выводить. Не стоит рассчитывать на это поведение, так получилось волею случая.
Ты правда перестаёшь отвлекаться на всякую хуйню, если понимаешь, что деньги кончаются, а жратва в холодильнике сама не появится.
А на сытый желудок, особо не поучишься. "Тепло, сухо, крыша над головой есть - нахуй вообще ваше ооп с паттернами, лучше подрочу да в игори поиграю."
Ещё помогает посмотреть как другие люди вокруг живут. В пятёрочку зайди, например, или в макдак. Посмотри на человека на кассе, примерь его обязанности на себя. Я вот когда лениться начинаю, то просто вспоминаю, как фуры разгружал в сосничестве.
Проехаться на электричке, например, в часиков 7 утра, посмотреть вокруг, тоже полезно. После такого начинаю любить свою удалёночку ещё сильнее.
Что-то мне подсказывает, что голодный человек скорее вляпается в пхп, js или 1С, чем будет пытаться учить джаву.
мимо
А ты прав, наверное.
вспомнил как я каждый час-два отхожу на кухню за водой\яблоком\булочкой\конфетой и что-то постоянно жую
Упс. По-крайней мере, я не толстею, т.к. в сутки делаю всего 2 больших приема пищи.
Прошелся по стандартной библиотеке. Поигрался с простешим файлом через ввод/вывод. Почитал про треды.
Теперь следующим шагом самое время сделать что-то. Только как именно это сделать правильно?
Посмотрел пару видосов по спрингу - не понял зачем он нужен. То есть какую проблему он решает. Я не могу начинать учить что-то если не понимаю, какую это проблему решает и как. Нагуглить как писать на голой джаве бекенд? Как работать напрямую с http?
А после этого? Как понимать вообще, что я готов уже трогать спринг? Через полгода хочу уже ходить на собесы начинать, чтобы понимать что и как на реальном рынке устроено.
Если не знаешь SQL, самое время его выучить. Ну а дальше можно и спринг.
> Посмотрел пару видосов по спрингу - не понял зачем он нужен. То есть какую проблему он решает.
В том-то и дело, что он универсален и подходит для большинства серверных задач: есть и веб, и рест, и соап, и очереди, и работа с разными БД и многое другое. Считай, что это огромная коллекция более маленьких специализированных фреймворков на все случаи жизни.
> Как работать напрямую с http?
Сервлеты, но потребуется настройка контейнера сервлетов. Громоздко, неудобно, сложнее спринга.
> А после этого? Как понимать вообще, что я готов уже трогать спринг?
Знаешь SQL, понимаешь принципы HTTP. Всё.
Впрочем, я в самом начале долго тупил, пытаясь понять концепции бинов и dependency injection. Как понял, так сразу пошло легче.
Не собираюсь. Эксепшен поймает фреймворк, обернёт в DTO, отправит клиенту, у клиента появится окошко с ошибкой.
Я больше про практику спрашивал. Но за ответ спасибо.
Потрогаю таки сервлеты, напишу хоть имиджборду на них, а потом уже начну джаву трогать. По любому по пути еще и подучу чего, пока в спринг не залезу.
Практика в этом и состоит - пишешь пару пет-проектов уровня имиджборды на востребованном стеке и уже можешь идти на собесы.
По сервлетам есть вот такая мурзилка, если не брезгуешь: https://metanit.com/java/javaee/
Я именно ту мурзилку и планировал ковырять попутно гугля/ютубя.
Я бы хотел иметь ту книжку в сумке, чтобы читать в метро и просто иметь под рукой, я же лох без машины и категорически отказываюсь читать с мобилок.
Обычно возвращаемое значение говорит о нормальном завершении операции с точки зрения класса, а ошибка об ошибке в процессе. Например PreparedStatement.executeUpdate() возвращает int и выкидывает SQLException
Потому что если в результате апдейта ничего не поменялось - это нормальная ситуация с т.з. БД драйвера и это уже твоя забота проверять такие вещи, если тебе это важно. А вот проблема с коннектом к базе - это уже ошибка и о ней надо сообщать явно.
Да.
а для идеи где
В ультимативной уже все есть, а коммунити только для вкатывания, написания энтерпрайз имиджборды и решения тестового задания.
Сука ну нечестно же! Почему в других иде все за бесплатно
Ну а что, рано или поздно придётся переписать лучшую СУБД всех времён и народов на котлин.
>Посмотрел пару видосов по спрингу - не понял зачем он нужен. То есть какую проблему он решает.
Чтобы понять, зачем сам DI, нужно немного помудохаться с большим проектом, где ООП и антипаттерны в полный рост. Чтобы понять Spring MVC, желательно попробовать сделать круд на сервлетах и почувствовать разницу со спрингом. Ну и так далее.
Денег на про версию нет, а надо начинать анты трогать, с томкатами работать, сервлеты писать и т.д.
Логика подсказывает, что надо сначала руками научиться делать.
Вот наколбасил я контроллер
@RestController
и метод, допустим с
@PostMapping("/zalupa")
Если не распарсятся аргументы этого метода из запроса пользователя, то спринг вернет ответ с кодом 500 и стектрейсом в теле ответа. Как это можно поменять поведение? должен же быть 400 код, нахуя так сделали.
А какие?
Когда как. Если условия только сравнения и с ифами получится монструозная елсиф конструкция, то свитч. В остальном ифы
Получается, если большую переборку делать, то юзать свитч, а если что-то маленькое, то иф. Спасибо!
Switch удобнее чем лесенка из if-else, даёт более читаемый код и лучше оптимизируется компилятором
А, я, оказывается, велосипед изобрёл. Здорово. Буду значит использовать нейтивный forEach.
Это ты не видел как микропроекты на хайперскилле решают. Ехал свитч с ифелсами в которые вложен другой свитч
Не мёртвый он, здесь почти всегда отмечают в тот же день, если не спрашиваешь платину.
В чем различие между галерой и компанией? Не понимаю эту градацию, и там, и там пашешь на дядю.
Разница в том, что в одном случае ты запилил проект, выпихнул его заказчику и забыл. Во втором случае ты долгие годы ковыряешь один и тот же код.
По-моему, ковырять один и тот же код годами без возможности смены проекта это грустно? А отношение пренебрежительное почему-то именно к "галере".
Если вопрос слишком сложный, что лень расписывать, либо настолько специфический, что маловероятно найти того, кто уже сталкивался (как вопрос анона выше про видеочат на RTC), то могут и не ответить, но попытаться стоит. А ты думаешь, в конфочках лучше?
Важно соблюсти баланс, чтобы было не слишком сложно, но и не гуглилось первой ссылкой.
Почитай бугурт-тред, чем больше жизненных бугуртов увидишь, тем галёрнее твоя работа.
Насколько я понимаю галеры в основном не любят за отношение к гребцам, а не специфику работы.
TLDR;
В крупных компаниях как правило есть возможность смены проекта. Плюс бывает, что проект завершается или переписывается с нуля когда становиться ясно что старый помер окончательно. В конце концов, можно и работодателя сменить. А кому-то вообще нравиться такой стиль работы - ты все в проекте знаешь и тебя трудно заменить, можно работать на расслабоне.
Как правило наиболее интересные и важные для компании проекты не отдают на сторону, аутсорсят наименее важные вещи. Ну т.е. если компания занимается алго трейдингом, она не будет аутсорсить алготрейдинг. Вот какие нибудь отчеты и прочую мишуру - может. Но не сами алгоритмы и их реализацию.
С другой стороны аутсорс это динамика - постоянно новые технологии, проекты, новые компании.
Пример, конечно, утрированный, но да, оверинжинирить в энтерпрайзе любят.
Скорее всего, хтмл у тебя не статический, а вполне себе прогоняющийся через шаблонизатор, и в него прокидывается поле user.
Так это не статический html, а thymeleaf шаблон (это же из https://www.baeldung.com/registration-with-spring-mvc-and-spring-security пример?)
Если честно, я этот момент не совсем понял, просто логически предположил - что можно шаблонизировать на странице регистрации?
>>801523
Да, оттуда. Но всё равно, даже если это шаблон - это же просто пустой объект без данных. Значит, эти данные, видимо, заполнятся из формы регистрации и как-то придут вместе с реквестом на контроллер регистраций? Вот где можно подробнее прочитать про то, что это за механизм, как он работает и как им пользоваться?
Ну вот все теги с атрибутами, имеющими префикс th:, обрабатываются шаблонизатором (Thymeleaf). Например, если введут некорректное имя и нажмут submit, форма отправится на сервер, придёт в контроллер, он сформирует сообщение об ошибке, передаст его шаблонизатору, а тот под полем ввода добавит тег <p> с этим сообщением. Полученный HTML отправится на клиент ответом на запрос.
Все довольно понятно, метод маленький, как положено, десяток строк. Абстракции в виде фактори, билдера и вью нужны в зависимости от окружающей логики, которую мы не видим/не знаем, поэтому нельзя сказать насколько это оправдано. Если взять пример шифрования из SDK, будет так же: куча классов Parameters, Specs, куча имплементаций, статик-констант/энумов, все друг друга вызывают, все на интерфейсах.
>Значит, эти данные, видимо, заполнятся из формы регистрации и как-то придут вместе с реквестом на контроллер регистраций?
Вполне конкретно придут вместе с реквестом в виде параметров запроса. Бразуер отправит их на сервер HTTP-методом, который указан в описании формы. А сервер получит запрос и передаст его в контроллер.
>Хочешь сделать unidirectional one-to-many по fk? Хуй тебе, буду создавать ОТДЕЛЬНУЮ БЛЯТЬ ТАБЛИЦУ для fk. Ладно, бывает, пусть будет bidirectional, как всякие чехи-поляки в интернетах советуют.
Ибо нехуй создавать структуру базы хибернейтом, для вас, Козлов, - ликвибейз написали.
Б-г упаси когда-нибудь создавать структуру базы хибернейтом, после таких приседаний с маппингами я этому фреймворку ничего уже доверять не хочу. Я говорил про то, что хибернейт создает служебную таблицу для такого маппинга, а где он ее держит - хуй знает, мне все равно, сам факт такого поведения меня вгоняет в фрустрацию.
Хибер ничего не создает, если ему явно не сказать
hbm2ddl.auto=update
и по дефолту там validate. Да и при нормальном DBA или грамотных разработчиках - хер кто аккаунту приложения даст права на DDL.
Зачем ты ему рассказываешь? Пусть винит во всем хабернейт
Нихуя ему не кажется, все вбили в голову, что орм типа упрощает жизнь и суют говнохибернпйт в каждый проект и потом борются с мыслимыми и немыслимыми ошибками вместо того, чтобы юзать ждбц. Мои мечты о том, чтобы говнохибернейт стал легаси, никогда не сбудутся.
Хабернейт легче чем jdbs джуну будет легче с ним работать на базовом уровне, а значит бизнесу дешевле, так что лучше изучить хабернейт на уровне исходниковблаго опенсорс и быть в курсе всего и проблем не будет. ну или ныть
я вижу, у вас очень интересная работа
Предполагаю, что шаблон используется при ошибках регистрации, тогда dto будет не пустой + выведутся сообщения валидации. И второй момент, если передать null, то скорее всего шаблонизатор начнет NPE кидать, ему-то нужно форму построить. Вопрос, нахуя использовать шаблонизатор со своим синтаксисом для форм оставим за скобками
>Вот даётся этот объект пустой. Зачем он передаётся на вью-то?
>Я понимаю, когда на пост-реквесте параметры маппятся на такой объект
Он же передаётся не непосредственно на вью, он записывается в модель, к которой будут иметь доступ и контроллер, и вью. Объект этот нужно где-то создать, и обработчик get-запроса — вполне подходящее место.
Ты шутишь чтоли, что непонятного? Нет, правда, что конкретно здесь вызывает затруднения, длинные названия? Просто интересно. Помимо бизнес логики конечно, мы ее не видим, так что она мне тоже не понятна, но это не мешает читать код. А в коде мы имеем:
1) Создается Builder (паттерн) из Factory (паттерн), передавая фабрике параметры
2) Результат зачем-то проверяется на объект-константу (типа как Integer.MAX_VALUE - это паблик статик файнал объект), хотя достаточно было бы возвращать null, но может у них там специальные другие значения есть, хз
3) Из билдера, передав ему параметры, получаем датавьюшку (это не то чтобы паттерн, просто так называются хранилища данных, объекты с множестном значений, типа таблиц в бд, а иногда это и есть прямое отображение таблицы, т.е. еще и персистентное)
4) Опять проверка как из (2), тоже можно было наверняка обойтись null'ом. А, еще кидается кастомный эксепшен, тоже ниче сложного, обычная практика (class MyEx extends RuntimeException)
5) Из датавьюшки возвращается следующее значение, типа как из итератора (iterator.next())
Где конкретно не ясно? Паттерны фактори и билдер это начальный уровень средней школы. Можешь задавать вопросы. И да, такой код довольно обычнен, хотя в данном случае немного переусложнено в угоду картинке наверное.
После поста стало понятнее или нет? Если нет, то видимо даже для стажера еще рановато.
Мне кажется, он просто взбугуртился на слишком длинные названия переменных и не хочет признаваться в этом.
Это разве длинные? Лол.
Купи планшет.
Высшее экономическое подойдет?
Это копия, сохраненная 3 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.