>>2159705 (OP) Мертвый тред мертвого языка. Напомню, что сишарп уже догнал джаву по вакансиям, желающим работать с ООП языками теперь нет смысла учить что-то кроме дотнета
>>2159732 Supplier появился в 8-ке, там же и лямбды появились. Ты что-то перемудрил с language level. Если билдишь Мавеном пропиши корректный language level. Если IDEA ругается, исправь в свойствах проекта.
Всё равно ложить через лямбду это дичь какая-то ящитаю
>>2159740 Такс, какой выхлоп пошел, спс, но идет только на уровне error. Как теперь теперь ему ещё логлевел настроить, желательно через аргументы вызова мавена или его конфиг? Мне собственно нужно ложить из тестов, которые вызываются через mvn test
>>2159874 > Такс, какой выхлоп пошел, спс, но идет только на уровне error. Как теперь теперь ему ещё логлевел настроить, желательно через аргументы вызова мавена или его конфиг? Мне собственно нужно ложить из тестов, которые вызываются через mvn test Скорее всего тебе нужно сделать конфиг, который будет подтягиваться для тестов. Тут тебе нужно будет самому поискать
>>2159874 >Всё равно ложить через лямбду это дичь какая-то ящитаю Так это и не для тебя писалось, ты в JavaDoc видел что написано: >@API(status=INTERNAL, since="1.0")
Пытался тут изучить котлин, но не смог осилить ебучие говносистемы сборки для яваговна. Это же пиздец. Как вы это говно жрете? Импортирование либ в CMake проект на с++ по сравнению с этим посто как два пальца. В итоге, роутер сообщений из c++ в Рабит написал на дотнете за 30 минут, где все из коробки работает и все пакеты доступны в пару кликов
>>2160214 Не хочу огорчать, но > обмазываюсь последней джавой и ботинком на новом проекте > кекают Студент говноед на связи. Я еще ни одного xml не написал на галере и не создал ни одну абстрактную фабрику другой фабрикой. хотя, нет, одну, вроде, создавал
Да и java это не питон, чтобы вечно сидеть на чем-то древнем, мне кажется.
> студенты говноеды гоферы кекают с тебя У нас в вузе учат Qt, да и думаю, по сравнению с плюсами ява перспективнее.
>1:1 (потоки исполнения на уровне ядра) >В этом случае потоки исполнения соответствуют соответствующим потокам операционной системы и могут исполняться параллельно на различных ядрах.
>В Java модель исполнения 1:1, соответственно потоки могут исполняться на разных ядрах процессора параллельно, что является большим плюсом, из минусов — создание, удаление, переключения контекста и блокировки стоят сравнительно дорого. В итоге приложение будет тратить больше времени на создание и удаление потоков, чем на обработку непосредственного запроса. Потоки занимают значительное количество памяти, соответственно при создании большого количества потоков JVM может начать пробуксовывать.
>N:1 (потоки исполнения уровня пользователя) >В этом случае потоки должны быть реализованы в пространстве пользователя и должны управляться некой виртуальной машиной. >Минус подобной модели состоит в том, что настоящий параллелизм здесь невозможен так как такие легковесные потоки будут исполняться в одном потоке операционной системе. >Плюс в том что переключения контекста очень быстрые, потому как не требуют соответствующих системных вызовов.
>M:N (смешанная потоковость) >Самая сложная модель, в ней некоторое количество потоков на уровне пользователя отображаются на некоторое количество потоков ядра. >Плюс — быстрые переключения контекста >Минус — возможна неоптимальная работа из за дорогой координации между планировщиком виртуальной машины и планировщиком ядра
>Для легковесных потоков так же возможна реализация, когда потоки уступают выполнение друг другу, это так называемая кооперативная многозадачность. >В этом случае планировщик отвечает лишь за создание и уничтожение потоков.
>>2160439 N:1 частный случай M:N. В луме это M:N со всеми вытекающими ограничениями и отсутствием нормального синтаксиса и апи чтобы их решать. По сути говно без задач.
Caused by: java.lang.IncompatibleClassChangeError: class converter.UserMapperImpl can not implement converter.UserMapper, because it is not an interface (UserMapper is in unnamed module of loader org.springframework.boot.devtools.restart.classloade
Что это значит? Класса/интерфейса UserMapperImpl у меня нет, снесен очень давно. Если рефактор->переименовать UserMapper будет ошибка UserMapper не найден. Чё он хочет?
Хочу стопать @KafkaListener по определенному событию (в спринге), а потом по другому событию запускать, и чтобы консюмер продолжал считывать сообщения с последнего прочитанного. Это сложно сделать? Это нужно делать или это оверинжениринг?
Field error in object 'userDto' on field 'roles': rejected value [USER]; codes [typeMismatch.userDto.roles,typeMismatch.roles,typeMismatch.java.util.Set,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [userDto.roles,roles]; arguments []; default message [roles]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Set' for property 'roles'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.amr.project.model.dto.RoleDto' for property 'roles[0]': no matching editors or conversion strategy found]
Как пояснить фронту, что я хочу получить Set<Role> у себя в контроллере? Как приводить типы? Я так понимаю на фронте есть какой-то json, а че с ним дальше делать? Как перегнать одно в другое и наооборот? Может у таймлифа есть какие-то возможности ?
Почему Future в жабе такие убоги, что на них нельзя даже повесить коллбек? Почему AsynchronousFileChannel в методах write и read возвращает Future, а не CompletableFuture? Почему нет нормального синтаксиса async-await как в C#?
Такое чувство, что разработчики джавы специально делают так, чтобы мы использовали потоки вместо асинхронности. Почему они так делают? Даже те же сервлеты до сих пор, в 2021 году, для каждого запроса выделяют отдельный системный поток. Такой подход уже давным давно безнадежно устарел. Тогда почему его до сих пор используют. Та же нода с ее одним потоком, но с сильно продвинутой асинхронной моделью не сильно уступает обычному томкату в производительности.
Я понимаю, что Loom, возможно, решит разом все проблемы, но мне начинает казаться, что он либо никогда не выйдет, либо только к концу этого десятилетия, когда на жабе уже мало кто будет писать новые проекты.
>>2160858 >чел лум уже готов И в какой LTS он будет? Вон, леха шипилев обещает лум только через одну LTS, а это какой год будет? 2025? В итоге только к концу десятитлетия дай бог увидим лум на проде.
А ведь в самых древних версиях жабы, примерно во времена 1.1 были green threads. Правда от них потом отказались в пользу системных потоков. А ведь если бы тогда гении из sun microsystems сделали верный шаг и, вместе с поддержкой системных потоков и впоследствии обновленной JMM, оставили бы грин треды, то как бы сильно изменился жабий мир? Только представьте, аналог современных горутин и корутин в конце 90-х - начале 2000-х...
посадили на груви кодить, то еще говнище, с переменными творится то о чем билли не фантазировал я читаю из yml файла: HUITA: -a1:b1 c1:d1 -e1:f1 g1:h1 оно выдает print(HUITA) >"[{a1=b1, c1=d1}, {e1=f1, g1=h1}]" print(HUITA.getClass()) >java.lang.String как из этой хуиты теперь достать значения без пердолинга с говнокодом, за который меня уволят нахуй
Почему так, то, блять? allMatch должен просмотреть все элементы стрима и сказать, соответствуют ли они предикату, как он понимает, что стрим бесконечен ? Если "матчи" умеют определять бесконечен ли стрим, то почему anyMatch этого не понимает и продолжает бесконечно искать элемент соответствующий предикату?
>>2160849 Всё так. После десятилетия разработки вымученно выдреснут в прод как и jpms, и это станет последим гвоздем в крышку гроба жабы позорной. Мир вздохнет с облегчением.
>>2161039 потому что двоичная логика, allmatch завершается после первого false, потому что от дальнейших значений результат не зависит. anymatch ждет первого true
>>2161045 Я бы ушел в дотнет, но там нет нормальной работы - одни стремные предприятия с CRM, серверами, экселями от мелкомягких. А Го просто васянство из прошлого века
Java как-то медленно развивается. Ну и разработчики JDK хуесосы еще те, надо же было надрачивать на обратную совместимость в тот момент, когда ее нужно было сломать (дженерики), а потом сломать эту же совместимость позже, но уже в другом месте, лол. Работы всякой полно, но как правило везде унылый энтепрайз, где нужно грузить джейсоны в офисе с утра до вечера.
Сишарп - язык хорош, но тулинг хуета, опенсорс решений не от MS нет, нормальной работы нет, везде какой-то кал уровня винформочек, wpf, .net framework 4, MSSQL, Sharepoint, юнити, etc.
Голанг - вроде перспективно и молодежно, а вроде и хуйня на деле. Есть горутины, рейс детектор, в целом выглядит заебись при первом знакомстве, но в деталях понимаешь, какой же кал сотворил роб пайк. А тут еще дженерики завезут, наверняка получится кал уровня жабы, и оставят возможность писать interface{} там где не нужно. Хотя похуй. Надеюсь хотя бы дженерики у них стираться не будут.
Раст - ну вроде интересно, но работы нет от слова совсем. Какие-то мутные блокчейн стартапы. IDE для раста тоже нет. В общем мутная хуета, но может лет через 5-10 взлетит.
С++ - есть интересная работа, но сам язык просто ужасный. Помимо интересных вакансий с линуксом, сетью и хайлоадом, куча всякого говна на Qt, WinAPI, MFC.
JS - вроде есть огромный рынок, но для бекенда вроде только нода и экспресс. Честно не уверен, что они популярны у нас.
Пыха - в целом заебись выбор для простого бека, но опять же куча 1С, битриксов, мутных мелких работодателей.
Питухон - вроде как подох в бекенде. Хотя фласк и фастапи до сих пор живы. Но больше популярен у аналитиков.
>>2161157 >Голанг Он заебись в плане многопоточности и производительности, у нас пишут микросервисы которые работаю с видео/аудио стримами и все шустро и стабильно. Но блядь сам язык и то что его окружает это отдельная история, хуй с ним с синтаксисом и отсутствием чего либо +/- привыкнуть можно я даже одну апишку за вечер накидал почти без боли, изучая язык с нуля, но то что там нет никаких практик написания приложений, каких нибудь фреймворков и ОРМ которые устоялись бы, наоборот там все стараются писать код на голом языке и сука каждый пишет как душа ляжет, объемы говнокода на гитхабе просто зашкаливают, в итоге получается стиль написания как в пхп в начале нулевых еще щепотку говна и будет битрикс
>Раст Он пока только взлетает, даже более менее рабочий для бекенда фреймфорк пока еще 0.5 версии https://rocket.rs/ и активно пилится, но в целом потыкался, прикольный язык лучше плюсов на мой взгляд Короче да, тут пока только ждать >IDE для раста тоже нет Для любой иде жыдбрейнса можно установить плагин и будет работать
>JS - вроде есть огромный рынок, но для бекенда вроде только нода и экспресс. Честно не уверен, что они популярны у нас. Там много чего есть для бэка и typescript можно прикрутить, но там подход другой, на каждый чих ставится библиотека, куча всякой хуйни в зависимостях, если проекту больше года, то запуск npm i споряжен с еблей с зависимостями, все живет максимум пару лет имел "удовольствие" поебаться, не понравилось и плюс часто нужны фулстеки. А так если нужно поднять быстро мелкую апишку экспресс.жс идеальный вариант. А так работы дохуя.
>Пыха Попробуй symfony наблюдаю как джависты на него перекатываются и вроде довольны. А так пыха уверенным шагами идет в сторону жабы, сейчас еще активно развивается https://www.swoole.co.uk/ и мне кажется со временем заменит php-fpm который каждый реквест запускает запрос и умирает Остальное смотреть не советую, поскольку: >но опять же куча 1С, битриксов, мутных мелких работодателей Сам из-за этой причины съебался в рельсы, смотришь на вакансии и большая часть это студии ебучие пусть студенты там работают за 30к
>>2161170 Так ты же сам сказал, что жава - хуета. Я кинул альтернативы. За жс/го не скажу, но в котле просто много сахарочка. Ну, про него ты сам почитаешь. Преимущество молодежный языков в том, что они быстрее развиваются, так как не обременены миллиардами строк легаси говна. Втф решения старых языков пересматриваются и создаются новый втф решения
>>2161717 Я как русбист в нем разочаровался, там синтаксис похож, но пропал весь шарм ООП который есть в руби, но есть те кому нравится. Феникс мне показался какой-то хуитой многословной после рельс. А так это функциональный язык для виртуальной машины эрланга, который мегаотказоустойчивый за это его и полюбили где-то видел статью в кторой написано что на нем добивались девять девяток 99.9999999%
>>2160006 > «Вы могли подбирать людей на улице», — говорит Джон Пайк, британский программист, изучавший COBOL в 1960-х годах, — «и в целом учить их, как это делается».
Каждый раз в голос с этой фразы. После создания Java вы могли подбирать индусов с улицы обозначенной для сранья, и в целом учить их как это делается.
>>2161747 Ну вот как раз отказоустойчивость его основная фишка. Давно рассматриваю его в качестве языка для реализации микросервисов на нем внутри моего рабочего проекта. Что там на счет разнообразия либ?
>>2161747 >который мегаотказоустойчивый за это его и полюбили Это все пока у тебя можно без последствий дропать реквесты. А вот если у тебя запросы которые нельзя дропать например финансовые транзакции, то ты заебешься на нем делать рековери после каждого let it crash.
Как из джаваскрипта передать Set<Role> на контроллер? Сейчас Bad Request 400. Failed to convert property value of type 'java.lang.String' to required type 'java.util.Set'. Это ошибка клиента, я эту хуйню даже продебажить не могу.
>>2162320 Вот тут двумя алертами я выкидываю данные о роли и они вроде выскакивают те которые есть. Птом в закомнеченом пытаюсь их вот так засунуть в форму, но в этом случае модалка не открывается.
Почему у ArrayList большой оверхед по памяти? Вот, например, пытаюсь записать 100 миллионов интов в лист. Казалось бы, 100_000_000 x 4 / 1024 / 1024 = 382 мегабайта. Но лист сжирает чуть ли не в 10 раз больше, примерно 4 гигабайта! Даже если передать аргументом в конструктор эти 100 миллионов, ничего не происходит, лист не резервирует внутри себя место. Хотя если использовать обычный массив интов вместо листа оверхед становится совсем небольшим - примерно 630 мегабайт против 382, всего лишь почти в 2 раза! Может кто объяснить, куда сжирается столько памяти? Ладно хуй с ними, с массивами, там оверхед небольшой, но сука куда делись три с половиной гигабайта? Я даже ума не могу приложить, что может хранится в этой памяти. Такое чувство, что взяли огромный кусок памяти и заполнили его нулями или другой рандомной информацией.
>>2162387 Сейчас запускал с ключом -Xmx. Массивы действительно работают как нужно. -Xmx390m хватило сполна. А вот лист работает только если ему дать минимум 2гб памяти. Все что меньше - валится с OutOfMemoryError.
>>2162371 Я не специалист по фронту, хуярю как умею, всеми технологиями. Огонь из всех орудий. Посмотри требования в вакансиях, надо знать всё. Бутерброд технологий, кайф же
>>2162391 Сейчас в голову пришла мысль, что большой оверхед не в листе (ведь внутри него по сути обычный массив сидит), а в классе Integer. Например, 100 миллионов Byte спокойно умещаются в 400 мегабайт памяти, а Integer'ам нужно чуть более чем в 4 раза больше, что в целом ожидаемо. Вопрос, какова хуя эти классы обертки так много жрут?
UPD. Протеститровал Integer[] и понял, что все-таки виноваты обертки. Хули им нужно так много памяти. Это какое-то наебалово от разработчиков джавы? Примитивы в коллекциях использовать нельзя, значит нужно идти покупать оперативную память? Че за хуйня?
>>2162397 Пет не про фронт. У меня конкретная проблема и конкретный вопрос, на который хер кто ответил. Как с фронта бросить сет ролей в бэк, хоть таймлифом, хоть жэсом, хоть чем.
>>2162391 Во первых Integer обертки занимают раза в 3 больше, чем int. Во вторых у листа есть capacity. То есть там по сути там массив под крышкой. И его размер выше, чем размер до конца массива. Только засчет этого может быть разница в 3-5 раз. Может еще какие то причины, просто самые очевидные
>>2162403 Да уже разобрался, спасибо. Вопрос, когда наконец выйдет вальхалла, то вместо List<Integer> я смогу написать List<int>, чтобы создать списко, который будет под капотом держать не массив жирных 16 байтовых оберток, а массив 4 байтовых примитивов?
>>2162406 >создаешь объект с массивом объектов let set = {{}}; let role = {id:1, name:"admin"}; set.add...?? Так? А зачем нужен js-овский сет? let set = new Set();
>>2162408 Хз. Потыкай в свой контроллер хттп клиетом идеи/постманом Наугад подбери нужный ему формат запроса. Потом в таком же виде делай фронт. Я тоже не шарю в спринге особо, особенно на шаблонизаторах. Но делал бы так.
>>2162398 >>2162416 https://habr.com/ru/post/134102/ >Итак, давайте попробуем подсчитать сколько же будет занимать объект класса Integer в нашей 32-х разрядной HotSpot JVM. Для этого нужно будет заглянуть в сам класс, нам интересны все поля, которые не объявлены как static. Из таких видим только одно — int value. Теперь исходя из информации выше получаем:
Заголовок: 8 байт Поле int: 4 байта Выравнивание для кратности 8 : 4 байта Итого: 16 байт
Разница в 4 раза,на 64-битной и побольше может быть.
Берете и получаете результат с точностью до байта, хоть на 32, хоть на 64, хоть со сжатыми указателями, хоть без. Можно вообще сложный DTO засунуть и получить объем всего дерева объектов.
У меня в удаленном репозитории есть мастер ветка, которую обновляю не я. Моя задача на моей ветке. Как обновить мастер ветку, только лишь? Я ее залил к себе, а как дальше мердж делать? Тогда получиться что две ветки у меня сольються в одну? Или нужен ребейз? Или что нужно?
Как с фронта передать Set<Roles> на мой UserDto? Метод контроллера ожидает public User toEntity(UserDto userDto). В json-e нет типа Set. В самом дто поле выглядет так private Set<RoleDto> roles;
>>2163181 Никто не будет заморачиваться с спрингом на ютабе, нужно угодить подпивасным зрителям и высрать КЛОН ТВИТТЕРА НА РЕАКТ НОДА ЗА ЧАС (дольше никто смотреть не будет)
>>2163217 Ну вот клот твиттера на 5 табличек это не про спринг и упрощение. Опиши в паре абзацев, какой проект был бы адекватен настоящему спринговому стеку.
Если запихнуть прямо @RequestBody Status status, нихуя не пашет, сваггер говорит (и говорит правильно), что нужно отправлять просто один из вариантов статуса, без кавычек, без нихуя, не объектом.
Короче ебаный спринг, ебаная шлюха козьмина. Прохожу книжку prospring5. И там глава по jdbc. И код из книги выдает ошибку. Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Access denied for user 'Karasik'@'localhost' (using password: YES)) Какой нахуй карасик? Это имя пользователя на моей винде, а имя пользователя mysql prospring5. Оказывается эта мразь каким то образом держит в переменной пропертей username(пик) имя моего пользователя. И никак его не меняет. И нужно было изменить имя переменной. И я тыкался 3 дня. У этой ошибки миллион причин. Пока на третий день не дошел до второй страницы выдачи гугла, где это описано про эту книгу. Как это говно работает? @Value берет pathvariable винды? Нахуя? Только без виндосрача, пожалуйста, джава же ран евривере.
>>2163421 да ладно, понятно зачем, я просто не сталкивался с явным использованием переменных среды из джавы. Но козьмина могла догадаться так переменную в пропертях не называть. Еще книги пишет, сука.
>>2163429 Я прочитал одну и еще несколько до половины. Но чувство, что я знаю фрагментарно очень меня очень гнетет. Может микрзилки были говно конечно. А тут охват, в одном контексте, да и по нашему еще пишут. Я как главу про jdbc прочту пойду читать Java Persistence API и Hibernate. А че ты из мурзилок посоветуешь такому бестолковому? Баелдунг? Я читал штук 7 статей, когда писал кое-что. Думал тупо доку почитать. Но я насчитал в нужных кусках доки 3.5 ляма символов. То есть 1500 страниц. Но на ингише(скорость чтения у меня в 5 раз медленее) и с только кусочками кода, без полных программ. И язык потяжелее баелдунга.
>>2159705 (OP) Про Шилдта У него есть 2 книги "Шилдт Г. - Java. Руководство для начинающих" и "Шилдт Г. - Java. Руководство для начинающих" и "Шилдт Г. - Java. Полное руководство". Это книги которые следует учить друг за другом? Или первая это для тех, кто хочет освоить быстро основные положения Java core а вторая для тех, кто хочет освоить Java более углубленно? ???
Привет, аноны. Пытаюсь запустить сервлет Java 8 с JBDC на tomcat 9. В pom.xml подключил зависимость на mysql-connector-java. Стартую сервер, при отправке запроса на сервлет выдаёт ошибку: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb... Заметил, после добавления драйвера в зависимость, в консоли томкэта появился варнинг: INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. Не очень понимаю, что это означает. В war-файл драйвер упаковался. В чём может быть проблема? ОС: macOS Catalina 10.15.7 Tomcat 9.0.53
>>2163530 Короче, убрал зависимость в мавене и положил вручную джарник с драйвером в tomcat/libs. Заработало. Само собой, не самое лучшее решение. Хотелось бы, чтобы подтягивался драйвер из war-ника.
"...covers Java 1.4 and contains 193 complete, practical examples: over 21,900 lines of densely commented, professionally written Java code, covering 20 distinct client-side and server-side APIs." Есть ли какая-нибудь более свежая альтернатива этой книге? Нужно для обучения. Хочется почитать примеры, но не из 2004 года.
Приветствую. Работаю java-программистом чуть менее полутора лет. Одна из особенностей работы в моей компании заключается в том, что на большинстве проектов не используется Spring и Hibernate. Соответственно, знаний по тому и другому у меня почти нет, что будет являться проблемой, если я захочу уйти в другую компанию. Так что вот пытаюсь освоить это сам. Попытаюсь потом еще конечно менеджера попросить, чтобы параллельно с текущими проектами закинули меня на какой-то проект, где Spring и Hibernate, но не факт, что получится. Собственно, вопрос. Когда я буду пытаться куда-то еще устроиться, будет ли проблемой, что у меня не будет именно продакшн опыта на этих технологиях, а только какие-то пет-проекты (планирую запилить 2-3 штуки для практики)?
>>2159705 (OP) Короче, хочу себе JRE на андроид. Эксперименты в этой области были и весьма успешные: https://github.com/PojavLauncherTeam/PojavLauncher - позволяет запускать Minecraft Java Edition причем актуальных версий. Также, позволяет запускать установщики модов, тоже на джаве. Но, как вы поняли, он заточен чисто под кубач, а я хочу запускать вообще любые программы на жаве с гуем. Ну например Open Rockets, Xmind. https://github.com/MasterDevX/Termux-Java это ставит джаву из под термукса ну и тут ограничиваемся консольными приложениями Гуглится вообще сложно тема, поэтому спрашиваю тут, может есть уже готовые приложения, которые могут запускать жары на ведре?
Подскажите, пожалуйста, чем лучше отсылать параллельные get/post запросы на локалхост? Может есть какая тулза, хорошо подходящая для этих нужд. Хочу протестировать работу логики под многопоток.
Как в гибернейте смапить поле типа BLOB у ебучей DB2?
Пробовал @Column(name = "DATA") private byte[] data; и @Column(name = "DATA") private Blob data; в результате при попытке достать сущность из базы выходит одна и та же ошибка: Exception in thread "main" org.hibernate.UnknownEntityTypeException: Unable to locate persister: ru.huita.db.entity.ProcessInstanceData
>>2164869 Ебать я затупил, элементарно же проверить можно было. Убрал поле, снова получил ошибку, понял где накосячил - не добавил класс сущности в конфигурацию.
Если создать булеан-массив, заполнить его false, потом под случайным индексом менять false на true, пока все элементы не станут true. От чего будет зависеть, сколько понадобится итераций на каждый элемент массива? У меня получается count/arr.length == ~15, но непонятно откуда эта цифра и зависит ли она от чего-нибудь.
>>2164993 >От чего будет зависеть, сколько понадобится итераций на каждый элемент массива? От генератора случайных чисел. В принципе для генератора с нормальным распределением можно рассчитать матожидание.
>>2163996 У тебя еще норм стек. Я вот каким-то хуем устроился в инфобез 2 года назад писать разные хуевины на ANTLR, так до сих пор и сижу там. Куда перекатываться хуй знает, так как я вообще бекендом никогда в своей жизни не занимался. А в джетбрейнсе меня нахуй шлют.
бля, аноны, помогите, бога ради, третий день мучаюсь Добавил hibernate validator 6.2.0.Final, добавил валидацию - проект работает, валидации не было. Решил добавить еще validation-api, и все, пиздец, кидает java.lang.AbstractMethodError: Receiver class org.hibernate.validator.engine.ConfigurationImpl does not define or inherit an implementation of the resolved method 'abstract javax.validation.ParameterNameProvider getDefaultParameterNameProvider()' of interface javax.validation.Configuration.
И ни в какую обратно вернуть ничего не могу, локальную историю поднимал, удалял .м2, убрал всю валидацию и ничего, все та же ошибка. Насколько я понял, что проблема с javax и jakarta, но я в душе не ебу, как это можно пофиксить
>>2166721 Транзакции, особенно всякие пре/пост коммит хуки. Йоба валидаторы. Всякие автоматические конверторы. Хибернейт если злоупотреблять связями. Всякие аутентификаторы хитрые, которые под капотом в базу могут писать.
Может кто проходил собесы на middle/senior в последние годы? Что спрашивают, какие подводные есть? Сам 3+ года опыта, уволился, в октябре предстоит прохождение собесов. Что там сейчас на повестке у интервьюеров?
Вот я пишу маленький нубо-бэк на спрингбуте. И мне нужно, чтобы после каждого изменения кода приложение пересобиралось, перезапускалось (в докер-контейнере) и для апи гонялись тесты. Всё это должно происходить локально. Как такое принято реализовывать? Может, даже где-то уже гайд есть?
На сколько хорошо жабист должен знать js, ajax, jQuery, bootstrap-ы верстку, всю хуйню. Надо ли изучать angular, react, vue, node, и зачем они вообще нужны? И что такое знание sql? Есть те, кто базы не хибернетом делает?
>>2167419 Жс нинужон. Только чтобы самому понимать, что там наверху творится. Базы хибером никто не делает. Все миграции пишутся ручками. Ну и кроме знания самого sql надо хоть немного понимать, что происходит в базе
>>2167423 Т.е. хибер тоже нинужон? И как получить знания sql, читать книги? Выдумывать самому незнамо чё? В моем пете 4 операции криейт, райт, апдейт, делит. Что я ещё должен сделать?
>>2167419 >>js, ajax, jQuery, bootstrap-ы верстку, всю хуйню Хуйня без задач. >>angular Будет плюсом, если на галеру идешь, Джон Боров оценит 2 по цене одного. >>react, vue Для интерпрайза не особо популярно. >>И что такое знание sql? Умение написать запрос в @Query и прочитать его. Там дальше агрегации обычно не заходит. Оптимизация запросов через индексы практикуется не так часто. Тебя скорее выебут за n+1. >>Есть те, кто базы не хибернетом делает? Миграции пишут всегда. >>2167430 >>Т.е. хибер тоже нинужон? И как получить знания sql, читать книги? Сейчас везде либо хибер, либо ждбцТемплейт. В первом надо писать query либо уметь применять спецификации, во втором - чистый сиквель. >>В моем пете 4 операции криейт, райт, апдейт, делит. Что я ещё должен сделать? Для этого стандартные методы подойдут. А когда тебе надо будет найти всех анонов старше 30лет, имя которых начинается на С или В, мать - шлюха, упорядочить список по степени шлюховатости матери по мнению Ашота, потом по возрасту анона то придется или писать супердлиный метод или писать @Query с hql/sql или таки освоить Specification
>>2167626 >Хибер нужон. Но его используют как орм, а не как тулу для миграций Двачеры совсем ебанулись, использовать хибер как тулу для миграции базы. Для вас, мудаков, ликвибейз и флайвей завезли. А вы пидоры все хибером ебашите.
В тред призываются опытные сериализаторы и десериализаторы xml и json Братцы, есть ли какие-нибудь альтернативы аннотации @XmlAnyElement(lax =true) в библиотеке json? Я не очень опытный програмутор, в гугле ничего не нашёл. Суть дела такова. На проекте есть готовый фреймворк, который был создан для десериализации XML. Но теперь вместо XML ответов мы начали получать абсолютно аналогичные ответы на JSON. Мне поручили переписать готовый фреймворк так, чтобы он одновременно мог обрабатывать и старые XMLки и новые Jsonы И вот хз, какой аналог может быть @XmlAnyElemet? Мб кто-нибудь знает? 4ые сутки мучаюсь, работа стоит
>>2167694 >наконец то перестану работать в выходны Хртьфу блядь, чтоб я еще раз помогал кому-то в этом треде. Не дай бог окажется таким же чмошником как и ты.
>>2167711 Жесть чел, а ты не подумал, что я не за бесплатно в выходные работаю? Если твой совет мне поможет - то мне заплатят 300к/наносек просто за то что я задал вопрос на дваче. Так что я не чмошник
>>2167311 >Что там сейчас на повестке у интервьюеров? Многопоточка, асинхронщина и распределенные системы. Должен знать на зубок как работают внутри конкурентные коллекции, уметь написать свою Lock-Free очередь, досконально знать JMM и как работает GC. Понимать, как работает под капотом NIO и NIO.2 (epoll, kqueue) и всякие каналы, селекторы. По распределенкам тут уже сложнее, но базу вроде paxos и raft нужно знать. Микросервисная архитектура туда же. Всякий спринг и хибер раньше спрашивали плотно, сейчас уже не так часто, так как сейчас идет тренд чтобы по максимуму отказаться от них в будущих проектах.
>>2167767 >>по максимуму отказаться от них в будущих проектах. И писать свои велосипеды вместо проверенных технологий? Зачем в такое говно идти вообще?
>>2167778 Для этого нужны faang-style программисты с faang-style зарплатой, который будет непеша пилить и поддерживать велосипеды для тысяч программистов, а не чинить баги на проде под вопли "мы обещали, Сычев".
>>2167778 >faang-style разработка. Для этого нужны и ресурсы как у FAANG. А то будет как ебучем Революте, когда разрабы перегружены раскраской кнопочек, решением проблем клиентов и прочей бизнес хуетой, а по вечерам должны сапортить самописные велосипеды Влада.
А можно параллельно изучению языка пытаться на основе теории, на основе каждой пройденой темы писать свою маленькую программу? Или этого недостаточно для усвоения материала и надо дрочить задачки и гуглить их?
>>2166034 Сейчас вот заканчиваю с тутором по jdbc и перехожу к хиберу. Читаю статью по пулу соединений. Ну и везде краеугольная тема, это то, что подключение к базе это дорогой ресурс, это медленно, ресурсозатратно и т.п. Но нигде не написано почему. Тот кто шарит на более низком уроне может рассказать вкратце в чем суть тяжести соединений к базе?
Скажите в чем может быть проблема, при запуске проекта все зависает минут на 10 вот на этой строке INFO org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect. Я каждую минуту правлю и запускаю, и это просто пиздец с такими интервалами.
Есть ли в CRUDRepository готовый метод для обновления записи? У меня есть объект с айди 10 в базе, есть второй объект. Я хочу записать второй объект в базу с айди 10. Я могу перезаписать поля геттерами и сеттерами у имеющегося объекта, могу JPQL запрос написать. Но CRUD же должен простой метод для обновления уже сам иметь, разве нет?
В каком-то из прошлый тредов кто-то поднимал вопрос генерации однотипных контроллеров. Я не нашел эти сообщения, но может кто-то помнит, есть нормальное решение для этой задачи?
Анон, не понимаю как решить проблему при сборке нативного кваркус-приложения. Из требований - обязательно должна быть поддержка Consul через consul-client но про него пишут: > Well, that’s a problem with the consul-client library. It probably does not support GraalVM since it uses proxies. You can as well replace it with your own code that just calls Consul REST API to work with the native image builds
Однако само приложение говорит что можно работать, но для жтого надо чтобы я на этапе сборки воспользовался конфигурацией >To define proxy classes use -H:DynamicProxyConfigurationFiles=<comma-separated-config-files> and -H:DynamicProxyConfigurationResources=<comma-separated-config-resources> options.
в proxy-config.json прописал интерфейсы consul-client и теперь на этапе сборки меня посылает нахуй >com.oracle.svm.core.util.UserError$UserException: Class .... not found
Два дня уже ебусь с этим, пиздец просто. Что делать?
>>2168666 Очевидно, не настроил доступ к базенке своей. Подними в докере свой мускуль (гугли докер композ); Потом настрой проперти файл со строками подключения; Потом запускай свою программулину (не избирательную лул).
>>2169018 >>Знание Java SE (не ниже версии 7, >>Знание технологии из стека Java EE (JMS, JAX-WS/RS, JTA). >>умение писать bash скрипты. >>Ты получишь уникальный опыт Работа мечты прям. Жаль зп не указана.
>>2169395 Ok это книга Selikoff & Boyarsky OCA/OCP. Эта книжка, если ты не просто будешь ее читать, а экспериментировать, даст тебе больше, чем Шилдт .
OCA настроит мозги на нужный лад. OCP даст крепкие знания и ты сможешь реализовать свои сервисы для портфолио и удовольствия ради. Я гарантирую это.
Сап туч, хочу в строке находить определенный символ Х и начиная от него забирать все символы до других определенных символов У,Й. Есть какие библиотечные методы которыми можно это сделать? Или только в цикле по строке двигаться от символа Х до тех пор пока не наткнусь на один из символов У,Й?
Зачем gradle постоянно ломают обратную совместимость? Мне для новых туториалов пришлось ставить 7 версию, для книжки 2017 года 4ую. Сейчас опять начал тутор с сорцами, опять не пашет из-за версии. Такая фигня с jsными сборщиками была. С мавеном такого не было.
>>2170065 Ну и зачем ты тогда Postgres выбирал, тебе нужна встраиваемая БД. Типа SQLite, Firebird, HSQLDB (последняя лучше заточена под JPA/Hibernate). Postgres и MySQL должны быть установлены там, где будет запускаться приложение. А сама база на них создается с помощью миграций - см. Flyway и Liquibase.
>>2169421 Хорошее время было, до б-гомерзких соцсетей и гейфонов. В IT были молчаливые бородатые сычи, а не женоподобные хипстеры. А еще была куча вакансий на божественной Delphi.
>>2170178 Я вообще не задумывался о таких мелочах,когда начинал делать. Постгресс мне понравился из-за функционала,да и более опытные ребята посоветовали,типо мастхэв. О том что я столкнусь с невозможностью тупо скинуть файлики на флешку я не подозревал
>>2170268 А ты от MS SQL Server'a файлы собирался передавать? Если да, то хорошенько подумай и никогда так не делай. Передаются обычно бэкапы, желательно с предварительной проверкой их работоспособности.
>>2170290 На лабах по бд я скидывал преподу .mdf .ldf файлы и ему хватало чтобы отъебаться от меня. Вот и подумал что в постгресе есть такая же возможность
>>2170190 Если тебе поверхностно - посмотри на баелданге как написать простенький тест с junit5 + mockito. Можешь TestContainers попробовать. Для теста рест апи - Rest Assure. Для е2е - селениум. По каждой из этих тем дохуя инфы.
>>2170190 Ты же не уточнил, что тебе надо: как писать тесты библиотеки инструменты, подход к тестированию в целом какие тесты надо писать, сколько из должно быть, что надо тестировать, а что нет и т.д. Для второго читай книги по теории тестирования что-то типа https://temofeev.ru/info/articles/fundamentalnaya-teoriya-testirovaniya/
Читаю гайд по хиберу, чтобы потом перейти к spring data jpa. Нужно больше времени уделить управлению хибером через jpa или через его собственное апи? Чем дальше читаю, тем там больше разницы вижу.
>>2168956 Решил проблему: нахуй нужен этот consul-client от orbitz, накатил поделку от vertx, у него нет этих ебучих мозг проксей. Хотя можно было бы и просто put-реквестами самому разрулить
Анон, а как обычно хранят картинки в базе? Я вот подумал и придумал, что в таблице надо хранить записи с полями: путь, контрольная сумма и размер. А на самом деле как?
>>2171143 А спринг6 ты прям сразу будешь играть, как 6.0.0.RELEASE выйдет, в тот же день? Даже какая нибудь 13 версия, которую никто не собирался тащить в прод выходила с большим интересом.
>>2171153 У него требования жава17, поэтому только что играться в петах. Со спрингом я напрямую взаимодействую - поэтому интересно. Опять же спринг не побоится сломать обратную совместимость ради новых фич. А в самой джаве там опять что то оптимизировали/ускорили в жвм, добавили немного плюшек - ничего особенного.
>>2170991 > Camel Не то, чтобы прям говно говна, но сам подход к проблеме это энтрепрайз из начала 2000х. Со всеми этими EJB, ESB, MQ и прочим SOAP. Сейчас предпочитают или написать микросервис для интреграции двух систем или через очереди работать. А от подхода универсальный интегратор всех сервисов - отказываются.
>JMS Идея универсального адаптера к мессенджигу себе изжила. В том виде в котором API JMS сейчас - он не дает нормально использовать все возможности Kafka или RabbitMQ или еще кого современного. А идея, что ты можешь легко заменить реализацию, если работаешь через универсальное API - миф. Если у вас нет и не предвидится больших нагрузок, но при этом персистентность очень важна и есть надежная СУБД с репликацией и бекапами, то какой нибудь ActiveMQ не самый плохой выбор. Все необходимое на месте и настраивать проще чем Kafka или RabbitMQ.
>>2171917 Так ты не решаешь вопрос хранения данных, ты просто отдаешь его на аутсорс. Для сайта пицерии - норм решения, для корпоративной энтерпрайз поебени (которую часто и пишут на джаве), спрятанной за впнами - не всегда приемлемо.
Что лучше возвращать в методе Spring REST-контроллера, если мне нужно установить только Http-статус, без body? Сейчас отдаю ResponseEntity<Void>, это нормальная идея? Или нужно использовать что-то другое, например, протягивать какую-то сущность из сервлета?
>>2172375 > преимущества, перед ResponseEntity? Ну, само собой, в тех редких случаях, когда метод всегда один статус отдаёт, допустим если это ExceptionHandler какой-нибудь
К нам в IT отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные шарпогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал: - Это же Абстрактная фабрика! На чём ты кодил до этого? - На Джаве. - Жабапидор! - в один голос заорали все 20 человек. - Жабапидор! Жабапидор! Жабапидор! Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать джавапидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев: - Жабапидор! В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и джавапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох джавапидор даже дело заводить не стали.
>>2172535 К нам в IT отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные жабогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал: - Это же линкью! На чём ты кодил до этого? - На Шарпе. - Шарпопидор! - в один голос заорали все 20 человек. - Шарпопидор! Шарпопидор! Шарпопидор! Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать шарпопидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев: - Шарпопидор! В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и джавапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох шарпопидор даже дело заводить не стали.
Я хз как сформулировать. Поясните, как делать дто, когда в дтоОбъекте много слоев вложенности, например, есть поле Адрес, внутри него есть поле Кантри, в кантри есть лист ситей. Я не могу понять как реализовать такое, примеры которые я вижу в них, например, два стринг поля и всё отлично гоняется в обе стороны мапстрактом.
Подскажите, пожалуйста, как правильнее формировать JSON для тела ответа в @RestController, если я хочу вернуть одиночное значение? Я сейчас делаю примерно вот так:
@GetMapping("/path") public ResponseEntity<?> get(){ return new ResponseEntity<>(Collections.singletonMap("Varable", Value), HttpStatus.OK);
Нормальный ли вариант со складываем в singleton-мапу? Или лучше как-то руками сформировать json-строку? }
>>2159705 (OP) Сап харкач у меня есть два платиновых вопроса с подвопросами на которые гугл выдает херню с хабра и т.п., где в комментах срач и батхерт, что автор не прав и ничего не понимает. Но вы то тут гении)0 1.1) Как писать микросервисы 1.2) Является ли обычный сервер на спринге, допустим, выдающий хэлоу ворлд и не передающий ничего другим серверам микросервисом. 1.3) Как могут обмениваться микросервисы между собой информацией без кафки и прочих рабитмкью? 2.1) Как засунуть микросервис в докер 2.2) Зачем кубернейтс, если есть докер композ?
>>2173719 > 1.1) Как писать микросервисы Руками. У каждой тимы есть своя пачка сервисов, над которыми они работают > 1.2) Является ли обычный сервер на спринге, допустим, выдающий хэлоу ворлд и не передающий ничего другим серверам микросервисом. Если он крутится рядом с другими микрухами, да > 1.3) Как могут обмениваться микросервисы между собой информацией без кафки и прочих рабитмкью? Рест, gRPC, брокеры, кеши, база, файлы > 2.1) Как засунуть микросервис в докер Написать докерфайл > 2.2) Зачем кубернейтс, если есть докер композ? Кубер позволяет разворачиваться на нескольких нодах и не ебать себе мозги + куча всего остального, о чем я не знаю
Сап, джавач. Такой вопрос: пишу запросы к базе данных, которые традиционно имеют километровую длину. Собственно, есть необходимость некоторую заранее вставленную в запрос метку заменять на действительное значение. Вроде как SELECT....FROM....WHERE SOME_VAL = #mark# Я вижу два пути. Самое простое это тупо запихнуть запрос в String, а потом вызвать у него replaceAll с заменой метки на Value. Смущает в этом всем то, что запрос большой, точек замены может быть много, а строка финальная, соотвтетственно довольно сильно будет засираться память. Второй подход в том, чтобы создать StringBuilder, приаппендить к нему запрос, найти индекс метки, вызвать replase, передав ему индекс начала метки, индекс конца (начало + длина метки), и само значение Value. СтрингБилдер вроде мутабельный, и все эти упражнения вроде как не должны перерасходовать ресурсы, но зато реализация чуть сложнее (индексы нужно получать сначала). Как вообще лучше делать в этой ситуации?
Сап. Решал намедни задачу по обновлению статусов в режиме реального времени (типа last seen в телеге). Зацените решение:
1) В базе данных создаётся таблица user_activity (user_id, status, last_seen); 2) Для этой таблицы создаётся функция-триггер, которая рассылает уведомления об изменениях в этой таблице; 3) В коде создаётся слушатель этих самых уведомлений (событий); 4) Каждый клиент во время подключения к веб-сокету передаёт свой id/username на веб-сокет контролер; 5) Каждый раз, когда приходит обновление из соответствующей таблицы (users_activity), мы делаем: — достаём у каждого подключённого клиента список его контактов; — смотрим у кого в контактах есть пользователь, по которому пришло обновление с базы данных, и отправляем клиенту по веб-сокету соответствующий JSON, например
>>2173934 я бы делал всё в коде. В базу такую таблицу как дублирование только на случай ребута - чтобы приложуха при старте читала из этой таблицы состояние. Ещё флаг "обработано" не забудь
>>2173934 Двачую этого анона >>2173939 . Я бы в фильтре доставал SecurityContext и обновлял бы user_activity. Если производительность страдает, то можно было бы забить на вебсокеты, и просто с фронта спрашивать инфу о user_activity раз в 10 секунд, например
>>2173934 >>2173964 Я бы ещё не хранил status. Просто ласт сеен, а уже фронт сам решал бы, это онлайн, или нет. И тогда это замечательно уходит в кеш, скорость возрастает до небес, база говорит спасибо
>>2173948 всё это делаешь в коде. Возникает проблема - что при рестарте приложухи ты потеряешь текущее состояние. Для ликвидации дублируй изменения в таблицу в базу. И при старте приложухи читай состояние из этой таблицы
Флаг "обработано" - прочитал ты из базы состояние. Как узнать, ты уже оповещал по этой записи или ещё нет? Вот добавляешь флаг. Отослал все оповещалки - поставил флаг в true.
>>2173964 > SecurityContext и обновлял бы user_activity. Вот это хороший совет, спасибо. > Если производительность страдает Вот тут тоже есть вопрос, ну будем тестить. >>2173968 Тоже хорошая идея. >>2173969 Ну сейчас в базе всегда актуальное состояние хранится, типа записи не копятся. Один юзер = одно поле в user activity.
>>2173964 > Я бы в фильтре доставал SecurityContext и обновлял бы user_activity А нельзя просто при подключении/отдключении к вебсокету обновлять запись?
>>2174000 Ну по идее да, java-разработчиком нужно абстрагироваться от конкретной реализации jvm и пользоваться только тем, что говорит JMM. Но все же интересно какие механизмы используются для обеспечения volatile, хоть для любой реализации (хотя мне кажется везде +-одинаково, по крайне мере для linux-x86)
>>2173994 >Как под капотом работает volatile и что обеспечивает видимость актуального значения во всех потоках? По разному, в зависимости от хардвары. Но если кратко то: 1. JIT не делает оптимизации по изменению порядка кода или пропуск записи в память. 2. После записи и перед чтением ставит рид врайт барьеры специальная команда процессора.
>>2174045 Ну тоесть по факту получается доступ к некоему куску памяти блокируется, при этом не важно где он находится - в кэше или в оперативе (уже тонкости на уровне процессора, не видимые jvm)?
>>2173276 То есть, лучше использовать свой кастомный DTO-контейнер на каждый ответ, для маппинга на json? В чём преимущество? Просто если мы отдаём какой-нибудь "something" String, например, то его просто размапит в одиночную строку, а не вложенный объект, а в body будет просто ответ вида "somestring", а не { "field": "somestring" }
>>2174049 >(уже тонкости на уровне процессора, не видимые jvm)? Не совсем не видимые. У JVM есть модель памяти JMM которая дает гарантии видимости данных. И у процессора есть модель памяти, причем у разных процессоров разные модели. А дальше JIT при генерации нативного кода, вставляет нужные инструкции для конкретной платформы чтобы выполнить требования JMM.
Поясните, что такое: вторая линия поддержки различных серверов приложений (в основном на Java с базами данных Oracle) . разработка (SQL запросы для отчетов по запросам, процессы Talend, печатные формы и проверки на Drools) – не более 30% Там будет программирование или слово JAVA там просто байт и нужно будет составлять отчетики по данным из БД? Из этой вакансии реально стать джуном или ну её, куда вообще из неё карьерный рост?
>>2174458 сама вакансия https://hh.ru/vacancy/47886958 Мне просто интересно, я не первый раз вижу вакансии 1,2 линия поддержки всегда их скипаю, в моем понимании это чел на телефоне который записвает проблему и передает программистам, не? Ещё интересно узнать про всякие Pega, Low-Code это типа программирование с помощью картинок кек? Стрелоку перенес, цикл сам написался и т.п.
>>2174465 Вака не оч. Программеры на такую не откликнутся. Уровень подай/принеси отчет для белых господ, а затем пошел нахуй.
Лучше сразу идти в разрабы, пускай джуном, пускай даже интерном. Вокруг тебя будут квалифицированные коллеги и если не будешь лениться, за год- полтора выстрелишь до мидла. Через еще год крепкий мидл. Актуально для дотнет/жаба.
>>2174458 >Поясните, что такое: вторая линия поддержки различных серверов приложений (в основном на Java с базами данных Oracle) . Каждая контора понимает это по своему, но обычно это: человек который отвечает на саппорт тикеты, которые не смогла решить девочка на телефоне. Тут надо знать как система работает какие там есть внутренние сущности, как и где они хранятся, как части системы взаимодействуют, базовые знания программирования чтобы читать логи и хорошие SQL чтобы чекать базу. Это позиция не предполагает программирование, но если ты сможешь посмотреть код и понять как он работает это будет плюсом.
Поясните как правильно парсить массивы из джейсона? Вот у меня поле в дто List<User>. В рест контроллере метод для приема объектаДто с таким полем внутри, как должен выглядеть код js, чтобы упаковать всё это на клиенте?
>>2174465 >>Стажер департамента IT >>возможности профессионального роста Рост до мануального тестировщика? >>2 линия поддержки Видимо несущественные баги решать(серьезные дев команда решит), отчеты джаспера править (отступ слева 3 пикселя поправить на оступ в 2 пикселя). >>преимущества работы в РН Банке. Кек, это ж частный корпоративный банк не работающий с физиками, какие преимущества то?
Хуйня вакансия, если совсем никуда не берут - можешь попробовать - стаж набивать, но лучше выучи спринг бут и иди в джуны на галеру.
>>2174693 И во что это сконвертиться в таком методе - public void getUsers(@RequestBody List<User> list) {? Или как это надо получать, какая будет сигнатура у рест метода?
>>2174711 Есть дто. UserDto, поля - Long id, String name, List<Item> list. Как отправить такой объект из фронта в рест контроллер, например аяксом? Как сделать такой объект жаваскриптом, чтобы он спарсился рест контроллером?
Анонче помоги, нужна тема для диплома. Проблема в том, что преподавателю ненужно очередное web-app, необходимо что-то исследовать, а точнее разработать своё, какой-то алгоритм кекус или какую-то систему построенную на матане. Мне естественно охота набить руку и на бут спринге crud, со всякими liquibase и rabbitMQ, но препод ни в какую. Чего делать? Чего можно такого придумать?
>>2174851 Хуево - люди плохо знают, кто над чем работает и что конкретно накодил. Такие как >>2174886 ебошат говнокод с именами переменных a, b, c, форматируют его на отъебись и некому дать таким говнокодерам по щщам..
>>2174851 Зависит от адекватности ревьювера. Если он норм, то значительно ускоряется адаптация новичков, если долбоёб с имитацией деятельности, то задача на пару дней растягивается на неделю из-за неубранного лишнего импорта и лишней пустой строки с пропущенными при этом критическими багами.
>>2175023 >>2175069 Решил проблему. Надо зайти в Project Structure -> Project Settings -> Libraries, затем добавить Maven-репозиторий и ввести там org.apache.commons:commons-lang3:3.3.2. (Но это версия 14-го года, выше просто не ищутся. Странно...)
>>2174504 >Лучше сразу идти в разрабы, пускай джуном, пускай даже интерном. Я пытаюсь и к моему большому сожалению не я один. Может в сопроводительном писать "Готов работать полгода бесплатно и платить Вам каждый месяц по 30к"?
>>2175336 Мне кажется в какой-то момент там может быть и 100. Вот вам и дефицит IT кадров, вкатунов столько, сколько нет уже ни в одной специальности, наверное.
>>2175351 Я его знаю хуже, у меня в резюме есть и он, как и .net crud mvc в репе. По вакансия с C# я сразу отказы получаю, возможно из-за того что у меня был небольшой опытом java тестировщиком, видно это оскорбляет С# господ. Пока 0 приглашений, ищу с сентября, держу в курсе. despair++;
upd Предлагают работу автотестировщиком, но я хочу программистом щито делать? Это проклятие и теперь поработав тестировщиком >>2175360 мне будут предлагать только тестировщика?
>>2175504 Тогда вопрос тебе и другим анонам, как более опытным. У меня есть приглашения от IT галеры, двух банков и продуктовой компании(продукт веб приложение). Куда перспективнее? Сразу скажу, не хочу бегать от компании в компанию, хочу засесть лет на 5 в одном месте и расти до джава мидла во влажных синьора
>>2175513 На галере у тебя будет больше возможностей пощупать разные технологии и разные проекты. И в целом переход на другой проект проще. конечно если это крупная галера, а не Вебстулия Сокол.
>>2175560 Деньги практически одинаковые. Галера тоже отправит грести в банк. Не топовая, короче не епам и не люксофт. >>2175595 Мне вот тоже кажется на галере будет больше технологий, из минусов только что это будут технологии тестировщика, типа какой-нибудь селеноид, апачи-хуячи и прочи жметры. Надеюсь это не сильно повлияет на свободное время, так как по моей страте после работы я буду тренить пет проекты на джава джуна в этой же компании.
>>2175621 На крупной галере, если ты сильно захочешь и попросишь, тебе почти со 100% вероятностью дадут себя попробовать в разработке. У них проектов и людей много, они постоянно их туда-сюда двигают.
А вот в продуктовой - тебе могут сказать, что разработчики сейчас не нужны, а как раз нехватает QA. Подожди пока еще 2-х QA наймем, тогда и поговорим.
>>2175624 А галеры работают удаленно, сейчас? И если да, то какое может быть развитие? Ведь спросить ничего нельзя, только если приебаться к кому-то в скайпе, это мне кажется наглым надо быть.
>>2175640 Галеры разные бывают, кто-то работает удаленно, кто-то в офисе. Опять же тебе могут дать проект где команда не в твоем городе, так что все равно надо будет по слаку спрашивать.
Сбер смотрит мои резюме и молчит. Подумал, что он как тяночка стесняется и с ним нужно заговорить первым, скинул резюме, а он прислал отказ. И опять смотрит мои резюме...
Как указывать относительный путь до файлов, развёртывая приложение на Tomcat? Файлы деплоятся томкатом, и путь берётся из него. Как сделать, чтобы такого не было?
>>2176848 кстати вообще относительно джава/джакарта ее стандартов. >What is new in JPA 2.1? >JPA 2.1 was approved as final on 22 May 2013. между тем >The JPA was renamed as Jakarta Persistence in 2019 and version 3.0 was released in 2020. последние джава ее - первые джакартовские стандарты вообще кого то волнуют? Тот же хибер вроде соответствует последнему стандарту, но в статьях о джакартовских стандартах почти не пишут. Че там в других стандартах? Я даже с сервлетами не понял.
Жаба ЕЕ сейчас мягко говоря слабо востребована, не ебал бы ею голову. Если ты конечно не желаешь поработать в мохровых ытнырпрайзах в банках и прочей еботене. Но это мазохизм.
А так я думаю что основа jpa актуальна, в 2.2 они едва ли там все ПЕРЕДЕЛАЛИ.
Может кто делает опен сорс проект и кому-то нужен помощник, вкатываюсь в джаву и хочется практического опыта на каком-нибудь проекте, было бы круто так сказать работать с ментором, помогать буду в чём смогу по мере возможностей
Как в Java парсить строки? Есть простая строка типа "(3 4)(5 8)" и из неё я хочу получить четыре числа. Но морочиться с split, substring и так далее я не хочу - это кажется мне некрасивым. Есть ли такой метод, типа: YobaUtils.parse(str, "(%d %d)(%d %d)"), который вернёт int[] или какой-нибудь YobaParseObject?
В чем может быть проблема, стою на мастер ветке, хочу спулить к себе ремоут мастер ветку, идея пишет All files are up-to-date, но в самом гитхабе всё другое, всё изменено.
>>2176953 Я не знаю что за долбоеб тебе сказал, что в опен сорс берут вкатунов. Опенсорс это обычно инструменты для разработчиков. Сделать удобный молоток сложнее, чем забить гвоздь. Напиши пару крудов, подучи теорию и вкатывайся на галеру. Ментором станет тимлмд, который будет режектить твои пулреквесты. Просто так тебе объяснять никто ничего не будет, это сложно и за это не платят (или ты готов платить по ставке 50 баксов в час?). >>помогать буду в чём смогу по мере возможностей Это еще надо найти подходящую задачу чтоб ты смог принести пользу и ничего не сломать. Мне проще было бы самому такую таску выполнить, чем объяснять ее тебе. Особенно если ты даже не джун, а стажер, за которым еще все переделывать.
>>2176953 Ой ты хетрец, это как бы типа "готов работать за бесплатно" завуалировал под опенсорс, типа ты такой идейный, зачет, возьму на вооружение. мимо предлагавший лиду половину зп, если возьмет джуном
>>2176995 Чел ты... это ведь только ввод входных данных в тестовом, а ты уже застрял, может ну его и лучше почитать про substring и indexof? Они все равно не возьмут, там будет кукарек, что надо было делать в хэшмапе или дереве, что не по солиду и это только вершина айсберга
Помогите понять. Что делает кнопка гит->апдейт в идее? У меня две ветки мастер и фича_бренч, что будет если я в одной из веток сделаю мердж инто куррент? Какое будет состояние у обеих веток после этого? Если я в мастер мерджу, фича ветка исчезнет? Или наооборот если мерджить в фича ветку, что будет с мастером? Если ч хуево смерджил, например, и делаю фичу в мастере, как в этом случае пушить на гитхаб? Или можно, например из мастера ещё сделать один бренч, и так запушить, на гитхабе тогда изменения с какого момента будут видны. Я смотрел на Ютубе хуйню какую-то, но не понял, я не собираюсь использовать консоль и линуксы, совсем другим хотелось бы заниматься. Может внятное какое-то описание есть?
>>2177093 >>предлагавший лиду половину зп, если возьмет джуном Потом кабан об этом узнает и лид идет искать сотыги в другом месте. 20-30к стоит того как думаешь? Взятка должна быть большая, чтоб ее размер перебивал риск наказания.
>>2177426 При поиске в интернете по запросам "java raw string" и т.д. не выдаются статьи по типу "Виды строковых литералов в Джава" или ссылки на документацию. Выдаются только вопросы на форумах, типа "Есть ли в Джава сырые строки", "Как красиво составить регексп" и т.д., а также JEP 326: Raw String Literals (Preview), имеющий статус Closed / Withdrawn.
>>2177633 >Please note: This was intended to be a preview language feature in JDK 12, but it was withdrawn and did not appear in JDK 12. It was superseded by Text Blocks (JEP 355) in JDK 13. Ну ошибся с названием фичи, не Raw String Literals а Text Blocks.
Всем привет. Пробую учить Java по курсу со stepik, вроде интересно, несложные задачки в конце тем, но когда время доходит до следующего выходного, когда снова можно продолжать, забываю многое. На работе нет возможности учить, максимум раз в день полстатьи прочесть какой нибудь без возможности практики. Вопрос следующий: имеет ли смысл искать ментора/репетитора(доверия к объявлениям на авито нет почему-то), и сколько это может стоить? Я рассуждаю так: хороший кодер может здорово помочь новичку, особенно если есть затуп в каких то базовых вещах, который мешает идти дальше. Но зачем хорошему кодеру продавать себя на авито за гроши(по меркам средних зп, которые этот кодер мог бы получать), и тратить кучу времени на тупых вкатунов?
>>2177853 > Но зачем хорошему кодеру продавать себя на авито за гроши(по меркам средних зп, которые этот кодер мог бы получать), и тратить кучу времени на тупых вкатунов? Максимум - статью/доклад на широкую публику написать
Приветствую. Появился у меня вот такой нетбук. Я конечно понимаю что он слаб, но всё же потянет ли он Intellij IDEA? Оперативкa съёмная, могу свапнуть на 8Gb, поставлю SSD вместо винта. Проц распаян: Амуде 2 ядра, 2 потока, макс частота 1.33Ghz. Я только учу джаву и большие проекты конечно не пишу. Так что с учётом апгрейда пойдёт ли он для Intellij?
>>2177853 >хороший кодер может здорово помочь новичку Сколько ты репетиторам не заплати, пока ты не сядешь и не начнешь учить, как английский язык, теорию, практику, ничего не выйдет. Без преувеличений, тебе понадобится минимум 6 месяцев по 8 часов ежедневно разбирать только базовые библиотеки, core, lambda, concurrency, ты даже не коснешься спринг бута. Еще пол года ты потратишь после того как узнаешь, что помимо этого тебе надо знать не мало вещей из девопса и тебе придется в этом разбираться. Потом ты узнаешь, что знаний бэка недостаточно, тебе в любом случае придется разбираться в верстке, жс и т.д. Я уже молчу про БД, SQL, NoSQL про всякие хранимые процедуры, индексы, нормализацию и т.д. Если ты не поридж до 22 лвл, то никто тебя не возьмет с минимум знаний. А бумеру 30+, даже зная всё это, нужно быть готовым, что его резюме не просмотрит 70% работодателей, они даже не откроют его просто посмотреть на позицию джуна. Но ты можешь мне не верить, думать, что тут тебя отговаривают конкуренты, пожалуйста, твое право. Можешь открыть эксель и протянуть 120 строчек (10 лет) свой текущий оклад, с учетом прибавки зп, при карьерном росте, и рядом колонку твоего вкатунства, где ты скорее всего 2 года будешь сидеть без зп, а потом полгода получать 60к, потом год 80-120к, потом го 120-160 к. Проссумируй всё и сравни, ещё не забудь вспомнить как ты 2 годы будешь превозмогать и готовься что придется часто читать про новые фичи, а потом уже принимай решение. >Пробую учить Java по курсу со stepik А степик это просто чушь. Ты проанализируй, как я тебе посоветовал выше, может какой-то сертификат по текущей работе тебе принесет больше профита.
>>2178006 По текущей точно нет. Почему stepik чушь? Вроде отзывались многие неплохо, по крайней мере лучше цыган из скилбоксов. Да, я понимаю, что учить очень и очень много, но это единственный путь развития, который вижу, из того, что вообще интересует. Про репетитора спросил не для того, чтобы за месяц куда то вкатиться, а чтобы в идеале более качественно понимать, а не зубрить.
>>2178132 Я думаю нет. Чтобы изучать джава-стек тебе же надо кроме идеи еще браузер запускать и базу держать запущенной. А этот проц хуже самого слабого десктопного интеловского селерона 10-тилетней давности. Если все запустится, то будет боль. Этот проц разве что с голой джавой без иде играться. А для этого тебе память не обязательно покупать.
>>2176756 Вкратце: лучше делать проекты ide- независимыми и не полагаться на "магию". Возможно твои действия как раз и делают запись в pom.xml, но лучше понимать наверняка что ты делаешь
Короче когда шел по jdbc сделал схему, как на пик1. Табличка аккаунтов и табличка переводов, ссылающаяся на аккаунты в 2 своих полях. Объединялось это вместе в аккаунты с историей переводов(дтошкой, а не классом сущности), как справа на 1 пике + экстрактор. Ну и мне надо на хибер это перевести(только пока лист не дтошек, а самих сущностей) и я даже хз где я проебался. Он вместо списка сохраняет в только первый перевод. То ли @OneToMany не так прописал, то ли что-то еще, то ли там что-то нужно типа joincolumn вместо mapped by. Прочитал. Еще одно-направленные, двунаправленные связи. Я чем дальше мурзилки читаю, тем дальше запутываюсь.
>>2178132 IDE вытянет спокойно. Запуск будет немнго притормаживать, но можно и потерпеть У тебя нет постоянной высокой нагрузки. Есть маленькая, эпизодическая нагрузка. Хеловорды вытащит спокойно.
Как думаете, о чём конкретно идёт речь, когда java-приложение описывается как: >Standalone, то есть состоящее из одного выполняемого компонента верхнего уровня Хотелось бы услышать вашу интерпретацию данного определения.
Нужны инсайды. На носу собес, приглос пришел на понедельник, какие могут дать задачи на нем джуну? FizzBuzz, что еще? Где смотреть? В гугле их слишком много. Обосраться не имею права.
>>2178822 Райффайзен? Имеют в виду, что нужен не war для деплоя в томкат, не библиотечный jar и т.п., а исполняемый файл. Обычный исполняемый jar, который cобирается спрингбутом.
>>2178511 Не до конца может понял, что ты хочешь, но ты что ли надеешься на то, что по mappedBy="transfer_id" (схуяли вообще transfer_id?) хибер сам догадается про джойн и по "from" и по "to"? Не будет такого, но можешь сделать две отдельный связи. И не ставь никогда FetchType.EAGER на подобные коллекции.
>>2178511 В mappedBy должна быть колонка владеющая отношением. В твоём случае, либо fromAccount, либо toAccount. Вместо transferHistory, тебе нужно два поля, каждый из которых связан с from и to соответственно. А при необходимости объединять списки на уровне самой джавы.
>>2179675 >>2179675 Ну это понятно, что не ставить, а только когда нужен объект с вложенным списком. И в jdbc-ишном проекте в репозитории у меня было 2 метода: Optional<Account> findById(Long id) с простым запросом. Optional<Account> findByIdWithTransfers(Long id) с экстрактором. А как сделать второй с jpa?
>>2179681 Я просто достаточно бездумно копипастнул код с мурзилки. Так пока и не разобрался в этих ваших связях. Спасибо за совет. Сам думал о двух листах. Получилось вот так. Все работает. Но нельзя как то поизящнее с одним листом?
>>2179762 >а только когда нужен объект с вложенным списком Вот именно, а с EAGER он у тебя будет всегда со списком, а не только когда он нужен.
>Получилось вот так. Все работает. Но нельзя как то поизящнее с одним листом Ты не показал, что именно у тебя получилось, но ты подумай о том, что тебе не обязательно совершенно идти от account и доставать transfer как его связь. Можешь сделать запрос к transfer, где from_account или to_account равны тому, что тебе нужны. В реальной жизни как раз может оказаться так, что никакого смысле в такой коллекции у account нет, потому что тебе никогда не понадобятся сразу все transfer одного account, только с какими-то еще условиями, допустим с датой в определенном диапазоне.
>>2179781 Ну когда я себе этот проектик придумывал еще для изучения jdbc(сперва rawjdbc, потом jdbctemplate) там весь функционал - первая страничка: список акков, потом создать аккаунт, вторая сразу отображает всю инфу с сущности одного аккаунта, всю историю переводов, удалить аккаунт, перевести сумму. И хотелось бы фронт и контроллеры вообще не менять. Есть общий интерфейс репозиториев и 4 реализаций, хотел только имплементации репозиториев менять. Вот теперь еще два вида доменных моделей - jdbc-шная и хиберовская(по сути раньше у переводов были поля типа Long from_account_id, теперь Account from_account ). >потому что тебе никогда не понадобятся сразу все transfer одного account, только с какими-то еще условиями Мне нужен аккаунт с List<TransferDto> transferHistory(тот же transfer, но без айдишников). И раньше я аккаунт с листом дтошек прямо из базы дергал и ничего не меняя джейсоном отдавал на фронт. Теперь наверно два лист из настоящих трансферов придется в один лист дтошек где-нибудь в репозитории(по уму наверно в сервисе надо, но я уже написал себе контракт с интерфейсами AccountRepo и TransferRepo).
>>2179827 Для учебных задач, кажется мне, довольно глупый подход - "уже написал себе контракт", теперь вынужден с ним ебаться, но дело твое.
Вариант с двумя EAGER листами не очень хорош еще тем, что в результате получится такой селект с джойнами, у которого будет сильно раздутое, избыточное количество строк на выходе. Лучше либо делай два селекта - самого счета и его переводов - либо делай селект по переводам, от которых уже будет джойн к счетам. Счет будет заведомого один и тот же у всех, так что вытащишь нужный из любого перевода.
>>2179848 да я не хотел EAGER делать, мне он и не подходит. У меня будет запрос к аккаунту без листа переводов и потом с ним. Просто пока не понял, как с LAZY работать. Не увидел этого в мурзилке/не дочитал.
>>2179631 >Райффайзен? Да, он самый :) Тоже кинул заявку?
>Обычный исполняемый jar, который cобирается спрингбутом В целом, я примерно о том же самом и подумал, спасибо за ответ. Только откуда инфа про спрингбут? Было бы странно собирать стендалон jar'ник в именно в буте, вроде же вся его идея как раз в том, что он инкапсулирует в себе компоненты, в том числе контейнер/сервер embedded tomcat, и сам представляет собой некий верхнеуровневый "standalone", грубо говоря.
>>2179906 >Тоже кинул заявку Нет, самому мне туда не надо (уже есть свои 600кк/нсек), но попадались на глаза эти их носки.
> откуда инфа про спрингбут Ну а какие еще варианты, если это самый дефолт и мейнстрим, и если они сами пишут в задании, что желателен Spring(Boot) Framework.
>он инкапсулирует в себе компоненты И вот именно поэтому результирующий джар и можно назвать standalone, все сходится
>>2179909 >Нет, самому мне туда не надо Обознался, извиняюсь
>и если они сами пишут в задании, что желателен Spring(Boot) Framework. А что за задание? Просто я довольно внимательно всё изучил, и нигде не увидел упоминания спринга, кроме стека команд хотя да, логично, что он будет. Если поделишься какой-то инфой по заданию - буду очень благодарен самому интересно быстрее глянуть, что там
>И вот именно поэтому результирующий джар и можно назвать standalone, все сходится Действительно, ну я и херню сморозил, хотя выше сам себе ответил. В момент затупа почему-то подумал, что компоненты бута будут не в одном джарнике уже спать пора, походу
Сап, программач. Есть энтерпрайзное говно на джаве. В рантайме энтерпрайзное говно сериализует объекты и складывает их в БД. Мне нужно из этих сериализованных объектов достать определенные атрибуты. В либах энтерпрайзного говна мне удалось найти нужный объект и десериализовать его, но один атрибут достать не могу - геттер там хитровыебанный и выплевывает ошибку хотя сам атрибут инициализирован и в нем есть данные, это видно в дебаге - localSymbolTable.data
Подскажи, программач, могу я как-то достать нужный атрибут?
> либо ручками разобрать сериализованый формат. Что там за формат кстати, джавовская сериализация или что-то еще? В БД лежит byte array сжатый gzip. На всякий десериализация в прикрепленном пике.
Помогите.Есть кто работал с vaadin? Есть ссылка на элемен(страницу) она работает если проходишь по пути,обнавляешь(ф5), она пустая. В чем может быть проблема? Как решить.
В чем может быть проблема? Есть проект, делал не я. В нем есть интеграционные тесты, которые не запускаются. Вылетает туча эскуэль эксепшенов. Failed to load application context. Я не очень понимаю в тестировании. Что ему можнт не хватать? Последнее сообщение Access denied for user 'root'@'localhost' (using password: YES). Сами тесты вроде простые, просто на каждый метод контроллера проверка всякой хуйни.
>>2180468 Если тест не может подключиться к базе, значит ему не хватает каких-то настроек бд? Для обычной бд есть класс applicatio.properties. Где искать аналог этих проперти для тестовой базы?
>>2180483 Я нашел, просто не смог сообразить что приложение работает с двумя базами. А как обычно бывает на производстве? Вот закончил ты пилить логику проекта, и начинаешь хуярить тесты, сам их придумывая, и делая объем работы равный или больший нахуяренной логики?
>>2180492 Если повезет, и на проекте так заведено, то да. Лично я накидываю кучу работающего говна, покрываю тестами, а потом рефакторю это же говно с их помощью
>>2180573 >Может они такие же тупые Вполне может быть. На самом деле инструмент действительно непростой, им нужно учиться пользоваться, понимать ограничения и подводные, затупы вполне естественны. И уже только когда хорошо разобрался и освоился, тогда и начинается какой-то от него профит.
>>2180578 Я не знаю, я только начал. Может дело во мне. Но же популярный. Почти все вакансии на спринговом стеке его требуют. Да и во всех мурзилках тоже про него. >>2180591 Может еще от размера схемы зависит? Вот я читаю мурзилку, переделываю ее. И тамошний пример на 3-4 табличке с jdbc сильно понятнее. Ну а сам я базы больше 15 табличек не видел никогда пока(из какого-то учебника по sql уже не начального, а среднего уровня) и мне уже было тяжеловато. А реальная база на джава-стеке это наверно от 50 и до нескольких сотен(я так предпологаю). Может там профиты?
>>2180619 ощущения ненужности sql не почувствовал. Вроде многое делается через jpql, который абстракция поверх sql. Думаешь реально плохо знать sql и хорошо знать хибер?
>>2180608 > Может еще от размера схемы зависит Зависит, да. Хелловорды с тремя таблицами вообще без разницы на чем писать. Профит от хибера ощущается на больших проектах, где много сущностей (таблиц) и много логики, которая ими манипулирует, и соответственно много простых и однотипных crud-запросов. Хибер позволяет не тратить свою жизнь на то, чтобы писать и поддерживать их руками. Но сначала нужно один раз вложиться в то, чтобы научиться обходить его грабли.
>>2180629 по-умолчанию везде Eager. С ним всё будет работать. Но медленно >Вроде многое делается через jpql круды можно без запросов лепить, через все эти merge, save
>>2180633 >Но сначала нужно один раз вложиться в то, чтобы научиться обходить его грабли. Проблема в том, что грабли хибера обширны, а разработчики приходят и уходят. Причем проблема может вылезти в совершенно другом месте. Добавил в одном месте ленивое поле, а в другом пошла по бороде производительность из-за ломбоковского toString().
С чистым SQL ты хотя бы видишь запрос и что он грузит из базы. Никто лениво ничего не тянет. Если не делать select * то новые поля старые запросы не замедлят. SQL это хорошо, SQL это надежно.
Подскажите, пожалуйста, по JDBC Template: Если в Java JDBC я сам получаю Connection'ы из DriverManager, которые потом могу засунуть в свой ConncetionPool, то как быть с DataSource в Spring JDBCTemplate? Темплейт сам принимает DataSource и делает у него getConnection. 1) Как тогда реализовать свой пул коннекшенов в JDBC Template? Тупо сделать пул DataSource'ов? Но ведь тогда все-равно каждый раз будут выполнятся новый getConnection у датасурса, что ломает всю идею предназначения пула, с постоянно открытыми конекшенами. 2) Нужно ли закрывать какие-то ресурсы за собой? Если да, то как? У DataSource и JDBCTemplate нет никаких методов close() и имплементации Autocloseable, судя по докам. Где происходит закрытие стейтментов и конекшенов в темплейтах?
>>2180783 Ну я понял, типа принято реализовать свой DataSource, связанный с пулом и который будет отдавать пул. Это понял. Остался только вопрос с пониманием механизма закрытия ресурсов.
Если мне нужен какой-нибудь функционал, какого-нибудь фреймворка. Буквально пару строчек надо. Что мне надо я в этот момент не знаю. Мне говорят читай документацию. Вопрос насколько это правильный ответ? Документация обычно очень большая. Правильно ли тратить время на чтение её всей? Запомнить при этом хоть что-то определенно не получится. Или отвечающий как бы говорит отъебись от меня, и больше это ничего, кроме этого не значит?
>>2181105 Документация, как и большая часть людской писанины, чаще всего содержит вводную часть - от 1 абзаца до пары страниц - объясняющую вкратце что это за велосипед. Полезно в том числе чтобы быстро дропнуть то, что тебе не нужно и идти дальше. Так что совет вполне дельный.
>>2181105 А если речь про конкретный функционал конкретного фреймворка, то вбиваешь в гугол фреймворкнейм и суть вопроса. Тебя выкинет на документацию к фреймворку напрямую или через со, я гарантирую это. Читать документацию целиком полезно, но при наличии норм ревью кода необязательно. А частоиспользуемые фичи сами запомнятся.
Аноны мне для лаб нужно сделать пользовательский интерфейс. Одна лаба обычное консольное приложение на текущий момент, другая веб сервер к которому надо прикрутить поля и кнопку. Что использовать, чтобы опыт использование потом пригодился (жс не осилю, я дибил)
Какие практики написания thread-safe DAO используют для Spring JDBC template? Сами template, как я понял, потокобезопасны из коробки.
Принято ли реализовать свои read/writeнапример, с помощью ReentrantReadWriteLock блокировки? Либо, для операций на запись, всё делают на транзакциях, с выставлением нужного Isolation level?
В случаях с использованием одних лишь транзакций на запись, по идее, можно получить сайд-эффекты в виде неактуальных селектов, до тех пор, пока не пройдёт транзакция на запись. Такое вообще допустимо?
Ананасы, столкнулся с диллемой – каким уровнем логировать бизнесовые ошибки, WARN или ERROR?
Прилетело мне, например, сообщение с Кафки с ошибочным полем, сообщение в БД не записали и залогировали ошибку о том, что такое-то поле не удовлетворяет каким-то там условиям. По логике же это WARN, я правильно понимаю?
В мою пользу еще сентри, например, ругается на error – говорит, что это ошибка и ее надо исправлять как-то.
>>2181432 >другая веб сервер к которому надо прикрутить поля и кнопку. Что использовать, чтобы опыт использование потом пригодился (жс не осилю, я дибил) Eсли это EE на сервлетах, то можешь в через request/response передавать и принимать атрибуты на JSP-страницах. Для спринга, можно дописать контроллер, который будет мапить модель на JSP-страницу. Правда, вряд ли тебе сейчас где-то опыт работы с JSP пригодиться. Но это самый простой и легкий вариант. Консольное приложение я бы тоже разобрал веб-контроллерами обмазал тупо, а дальше по схеме выше.
>>2181432 Самый простой способ - использовать на спринге шаблонизатор типа thymeleaf. Его освоить за пару часов можно, но опыт не пригодится. Пригодится ангуляр, но это не пару часов, а пару дней (для твоей задачи) и вообще дикий оверхед для одной кнопки. Вью тоже не намного проще.
>>2181432 Осиль голый жс. Он простой(мне показался проще фримаркера/таймлифа), для кнопки его достаточно и может много где пригодиться. Можешь просто погуглить, как сделать таблицу на жс и кнопку с рест запросами через fetch. Думаю за вечер прочитав один-два примера разберешься.
У меня из дто с фронта прилетает массив айдишников ролей. Потом я хочу в конверторе в цикле переберать эти роли, создавая по одной, а потом сложить всё это в сет ролей, и этот сет сбилдить вместе с остальной частью дто в юзер объект. Как это реализовать в мапстракте?
>>2182016 Я другой анон и хочу перестать просто изучать и нацелиться на работу. Раньше учил так(учебники, онлайн-тренажеры, ютуб, видеокурсы с торрентов), для развлечения скорее. Вот думаю может денег занять и ментора нанять. Что ты думаешь по этому поводу анон? И сколько это может стоить? Открываю какую-то биржу менторов из гугла и там 2.5-4к за час. Биржи эти адекватные и адекватна ли цена? Ну часов 20-30 мне нужно наверно. Ну вот я бы у него попросил проинтервьюировать меня, найти слабое в джавакоре и дать направление, как и что учить из фреймворков, а то в них конца и края не видно, даже в основных. Ну и проектик помочь наметить и проверить потом раза 2. Ну это 100к надо.
>>2162387 В ArrayList ты не можешь записать int, только Integer, думаю тут ещё оверхедиков добавилось. Потом когда ты его наполняешь - он каждый раз создаёт новый с размером ~1.5 когда заполняется до края, соответственно старый в мусор.
>>2181968 Я не создаю роль, она в базе. Можно подробнее про , qualifiedByName = {"getRolesFromDto"}) и MapperUtil.class? Я этот класс должен сам написать? Может есть пример какой?
>>2182118 >>MapperUtil.class? >>Я этот класс должен сам написать? Да это самый обычный класс, ты его в маппере указываешь, чтоб к его методам можно было обращаться. Назвать можешь как угодно.
Но конкретно под твою задачу - проще все же достать из базы роли в сервисе и добавить их к уже преобразованному юзеру, а не пытаться воткнуть логику в мапер. Маппер должен выполнять одну роль - преобразование энтити в дто и обратно.
>>2180180 Вариант с reflection api не сработал - при попытке сделать Field f = rootBPDExecutionTreeNode.getClass().getDeclaredField("localSymbolTable"); получаю исключение: java.lang.NoSuchFieldException: localSymbolTable Хотя поле в классе есть. ЧЯДНТ, анон?
Можно ли стримами конвертировать строку типа "1 0 X\n0 1 ?\n0 0 0" в char[][] {{'1', '0', 'X'},{'0', '1', '?'},{'0', '0', '0'}} ? У меня ничиво не получаицца, я чет путаюсь в трех соснах
>>2182571 но ведь надо еще split(" ") а потом String[] преобразовать в char вот моя нерабочая версия String[] rows=board.split("\n"); return Arrays.stream(rows) .map(i->Arrays.stream(i.split(" ")).map(t->t.charAt(0)).toArray()) .toArray(s->new char[rows.length][s/ rows.length]);
>>2182606 так, ну вот с Chatacter[][] получилось, как char[][] сделать String[] rows = board.split("\n"); return Arrays.stream(rows) .map(i -> Stream.of(i.split(" ")).map(t -> t.charAt(0)).toArray(Character[]::new)) .toArray(s -> new Character[rows.length][]);
>>2182606 >>2182638 Непонятно что делать если будет больше одного символа подряд, но можно сделать так: Stream.of("1 0 X\n0 1 ?\n0 0 0".split("\\n")) .map(s -> s.replaceAll("\\s+", "").toCharArray()) .toArray(char[][]::new);
Есть два целочисленных стрима {a, b, c, ...} и {x, y, z, ...}, нужно из них получить стрим {(a, x), (b, y), (c, z), ...}, где (a1, a2) - пара двух чисел из библиотеки Apache Commons Lang 3.
>>2182699 Можно сконкатенировать все и перегнать в char[] Stream.of("1 0 X\n0 1 ?\n0 0 0".split("\\n")) .map(s -> String.join("", s.split("\\s+")).toCharArray()) .toArray(char[][]::new);
>>2182844 Не понял. А разве на уровне интерфейса базы данных есть какой то отдельный синтаксис для транзакций кроме:
BEGIN; INSERT INTO accounts(name,balance) VALUES('Alice',10000); COMMIT; Или он начинает транзакции на уровне базы но не через интерфейс бд, такие команды как BEGIN?
>>2182897 >разве на уровне интерфейса базы данных есть какой то отдельный синтаксис Да, на уровне jdbc вообще есть много всякого, чего ты не увидишь в "синтаксисе" текстового терминала. PreparedStatement, батчи...
>>2182931 Но я был уверен, что при препейред стейтмент на уровне джавы выполняется и подставляет там значения с проверкой. А базе отдает уже готовые строчки запросов.
>>2182897 >А разве на уровне интерфейса базы данных есть какой то отдельный синтаксис для транзакций кроме: Все сильно зависит от базы. Обычно если ты выполняешь некий DML у тебя автоматом начинается транзакция её не нужно явно стартовать. Можно начать явно START TRANSACTION. В некоторых базах есть READONLY TRANSACTIONS, которые стартуют на любой SELECT. А еще есть savepoint, если произойдет ошибка, то транзакция откатится только до savepoint.
>>2182935 >Но я был уверен, что при препейред стейтмент на уровне джавы выполняется и подставляет там значения с проверкой. А базе отдает уже готовые строчки запросов. Зависит от драйвера и СУБД, но обычно в современных СУБД он отдает выражение с подстановочными параметрами и сами параметры отдельно. Это нужно для улучшения перформанса.
Создал обычный проект на Java в IDEA, в качестве сборщика проекта выбрал Maven. Решил добавить стороннюю библиотеку в проект. Создал файл pom.xml в корне проекта, нашёл на сайте mvnrepository.com библиотеку, скопировал и вставил в pom.xml какую то фигню. Но библиотека по прежнему не доступна, она не импортируется. Что делать?
Простейший ХеллоВорлд Тест, не запускается. Что он хочет?
java.lang.NullPointerException: Cannot invoke "org.springframework.test.web.servlet.MockMvc.perform(org.springframework.test.web.servlet.RequestBuilder)" because "this.mockMvc" is null
>>2183633 Проблема, кажется, решена. В поиске по Maven-репозиториям в окне Project Structure->Project Settings->Libraries можно добавлять в проект библиотеки из этих репозиториев. Моя проблема была в том, что там не высвечивались новые версии библиотек. Но я решил её так: File->Settings->Build, Execution, Deployment->Compiler->Java Compiler->Per-module bytecode version сменить на последний (у меня вообще стоял 1.5, и я этого не замечал)
Помогите пожалуйста , 2й день бьюсь не могу заставить thymeleaf подружить с css файлом. Приложуха на spring mvc , репозиторий для вьющек настроил брать из web-inf, все отображается. Но стилей нет.
>>2184833 Тоже , уже наверное все попробовал. Пытаюсь этот метод переопределить , но тоже бестолку. Не понимаю относительно чего этот метод определяет директорию ресурсов. Кто то пишет что все должно лежать в папке resources , кто пишет что эта папка должна быть в webapp.
>>2184835 когда я делал без бута, все лежало в вебапп и через мавен можно было дерикторию менять, если не выбирать web при иницилизации проекта. а буте все лежит в ресурсах да.
>>2184836 дак я не юзаю бут. Но при инициализации веб выбрал , при том что thymleafe все формы сука обрабатывает , а конкретно стили не хочет подтягивать.
Кароче , спустя 5 часов гугла я залез в документацию для пятого спринга и нашел это решениехз почему я этого не сделал ранее. Оно правда не использует thymeleaf. Если кто знает как через него это реализовать просьба все же подсказать. Решение было просто перенести папку ресурсов в webapp с таким конфигом.
Объясните, нахуя каждая вторая контора требует знание докера и умение деплоя в нем? Я, блять, сколько книжек по жаве не читал, все в один голос говорят что это такое неебаться преимущество что написано один раз - запускается везде, просто блять божья роса эта жава машина. Какой нахуй от нее смысл, если деплоят также в докере, как и на других языках? Сука, этот вопрос не дает мне покоя уже месяца полтора.
>>2185030 В конце 20го века докеров не было + маркетинговый ход: наша жава везде крутится, в отличие от вашего ЯЗЫК_НЕЙМ. А докер - вещь хорошая. Тебе даже не надо жвм ставить. Собрал контейнер, и все работает
>>2185030 >>что написано один раз - запускается везде Там имеют ввиду, что код на джаве в принципе можно и на винде и на маке запустить, в отличие от плюсов. Это не значит, что в процессе не придется ебаться с установкой жвм, мавена, БД.
Сап гайс. Есть кто нормально волокущий в JDBC? Вопрос такой: можно ли ResultSet, как-то разобрать на массивы сразу поатрибутно, а не дрочиться с пойнтером? Например, мне приходит набор из десяти записей, у каждой из которых пусть три атрибута. Я вызываю что-то вроде getIntAttrArray(1) и получаю сразу готовый массив int[], в котором 10 элементов. А еще лучше массив массивов сразу со всеми ячейками. Впрочем, можете нахуй послать, потому что написать такое самому раз плюнуть, но может есть че готовое.
>>2177178 Потому что ты ебонавт. Ему дали дебаггер, но нет, он лучше будет жрать говно на двачах Твое условие никогда не станет false, ты забываешь обновлять inputNumber и оно у тебя всегда заходит в проверку одинаковым.
У меня есть контроллер. Есть метод delete, который по айди из сервиса тянет юзера. Если юзер null то ResponseEntity.notfound().build(); потом без условия его удаляю и return ResponseEntity.noContent().build(). Всё работает, всё ок. Теперь я хочу протестировать эту хуйню. this.mockMvc.perform(delete("delete?id="+id)).and(print).andExpect(status().isNoContent()); или .isNotFound(); Но прилетает 405 и хуй пойми что с стектрейсе. Может я не правильно понимаю смысл тестирования? Контроллер должен отдать noContent, ведь юзер удаляется, значит и ретурн контроллрр делает.
>>2185423 Я просто сижу гадаю, чё там должно прилететь. И подставляю всё подряд что есть в этом перформе - isForbidden, isBadGateway, isBadRequest... Это и есть тестирование? Я должен угадать?
>>2185520 А что такое sessionAttr? И где брать userClientObject? Я ничего подобного в контроллере не использую. У меня return ResponseEntity.ok().build(). А без этого не работает, всё подчеркнуто красным.
>>2185991 После мурзилок ощущение что знаю только малую толику инструмента и шаг вправо-влево можно наткнуться не просто на новые классы и методы, а на какие-то новые концепции, о которых после мурзилки не подозревал.
В Москве не имеет смысла искать работу джава джуна или стажера на хх. Тем более, что на хх очень часто встречаются фейковые вакансии, которые не закрываются годами.
Нужно заходить на сайты энтерпрайзных контор (сбер, телекомы, всякие галеры вроде нетсракера, ебама, ланита, крока, и прочей параши) отправлять им резюме и ждать результата. Хедхантер уже морально устарел. Спецы с минимальным опытом на линкедине находятся, джунам нужно искать вакансии вручную.
И да, вкатиться в джаву, как показала практика, довольно просто, особенно если ты студент вуза на старших курсах или только что выпустился. Остальным посложнее, но в целом не сильно сложно. В сбер часто берут любых дегенератов, чем вам не айти? Правда потом тяжело будет на другую работу перекатиться.
>>2186228 Двачую. Лично я полгода назад задавался тем же вопросом. Неделю сидел над таймоифом, потом еще дня три над фримаркером, что-то не пошло. Потом решился и чуть больше чем за месяц прошел основную часть жс (сам жс, дом, работа с аджаксом) и даже кое-что лишнее. Без лишнего за 2 недели часов по 15 в неделю реально весь нужный жс пройти.
Вопрос по Spring JDBC: Чтобы у меня получилось корректная thread-safe конфигурация, я должен шарить один экземпляр DataSource между всеми темплейтами? Или лучше сделать его статическим бином?
Я что-то не понял? В хибере можно удалить сущность по ид только через hql? Но тогда это удаление проебывается в кеше. А если удалять, как пишут везде нужно сперва лишний селект делать. Зачем так сделано?
>>2186497 >Но тогда это удаление проебывается в кеше Ты про кэш сессии? Если в нем что-то проебывается, значит, сущность в нем уже есть, значит, можно ее удалять, не опасаясь лишнего селекта.
>>2186540 Про кеш фабрики сессий, т.е. второго уровня. Или он по другому взаимодействует с hql ? Ну и вообще почему нет метода у сессии с удалением по ид? Там какой то сакральный смысл?
>>2186565 >второго уровня Ничего в нем не проебывается при удалениях/апдейтах через hql
>почему нет метода у сессии с удалением по ид Вот такой дизайн. Если хочешь кидать как бы запросы напрямую в бд, подобно голому sql, пишешь запросы. Не хочешь - работаешь с сущностями, где применяется все это отслеживание состояний, кэш сессии и прочее. Удаление по id не является каким-то особым важным случаем, чтобы для него делать исключение.
>>2186497 >В хибере можно удалить сущность по ид только через hql? > void delete(Object object) throws HibernateException > Remove a persistent instance from the datastore. The argument may be an instance associated with the receiving Session or a transient instance with an identifier associated with existing persistent state. Создаешь пустой энтити, сетишь айди и удаляешь.
Есть абстрактный класс Person,в нем два поля,его наследуют два класса. При переопределении хэш кода должен ли я плюсовать туда хэш родительских полей или нет? Я думаю в абстрактном классе переопределить хэш,потом переопределить по полям в ребенке и тупо приплюсовать + туда хэш код родителя. Это будет правильно?
>>2186743 >Это можно как-то адекватно реализовать? Нет, потому что ты пытаешься сделать нелегальную операцию. Вот пример, ты в B2 пытаешься передать не A2 который он поддерживает, а A1. https://pastebin.com/srQ1wVJW
Более того, если у тебя есть метод с параметром <T> и в объявлении T указан как <? extends ...> то ты такой метод вообще ни с каким аргументов вызвать не сможешь.
>>2186939 Да, я это прекрасно понимаю. Вопрос был в том, чтобы сделать это красиво. Сейчас я проверяю класс и кащу до нужного. Появляется простыня из ифок/свитч. Хотелось бы автовайрить List<? extends B>, и строить мапу: класс А - объект B, но так не работает из-за того, что у меня "? extends"
Читаю про Safe publication в Java concurrency in practice 16.2.4. Про пикрил Брайан Гоец пишет, что это антипаттерн, потому что "possible for a thread to see a partially constructed Resource". Как получить этот partially constructed Resource? Как я ни ебался, так у меня ничего и не вышло. new Resource() блокирует, пока объект не будет до конца создан. К тому же Гоец сам потом добавляет, что если добавить volatile к resource, то всё становится ок. Каким образом изменение переменной на волатильную предотвратило бы partially constructed Resource? Шипилёв тоже пишет, что с DCL всё в порядке, если переменная volatile (https://shipilev.net/blog/2014/safe-public-construction/). Так как же получить не до конца построенный объект, которым пугает Гоец?
>>2186609 >Удаление по id не является каким-то особым важным случаем удаление по ид достаточно частый случай, как мне кажется. Или чаще с фронта приходит сущность с одним айдишником? >>2186637 жесткое костыление. В реализации spring crudRepository делают таки через селект + делит. Им не жалко селекта.
>>2186944 >Появляется простыня из ифок/свитч. Хотелось бы автовайрить List<? extends B>, и строить мапу: класс А - объект B, но так не работает из-за того, что у меня "? extends" Засунь это все внутрь базового класса. https://pastebin.com/1uHyY3gq
>>2186970 >удаление по ид достаточно частый случай, как мне кажется Такое, чтобы откуда-то извне прилетел id, и ты, не глядя, кидаешь в бд для него delete, это только в простом случае прокатит. А довольно часто, действительно сначала нужно посмотреть на запись, которую удаляешь. Например, чтобы проверить, имеет ли право юзер удалять именно вот эту вещь. Или чтобы записать в лог/аудит, что удаляем вот такую херню, у которой были вот такие параметры. И тогда получается, что нет смысла плакать о "лишнем" селекте. А если все же нужен именно строго один delete, не такая большая проблема написать пару строк с hql.
Хочу хоть немного подтянуть английский на слух. Можете посоветовать видосы по spring/hibernate с условиями: 1. Хорошее произношение. Индусы не подойдут. 2. Компетентные. Не инфоцигане. 3. Свежие видосы по свежим версиям технологий. Опционально, но желательны неавтогенерируемые субтитры на английском. Пока вроде одного нашел, подходящего по 1 и 3 пунктам. https://www.youtube.com/watch?v=8SGI_XS5OPw Но насчет компетентности не уверен пока. Он норм?
>>2187440 >За один проход считаем среднее и складываем в мапу. >один проход >складываем в мапу >в мапу Проиграл с этого computer scientist-а. У тебя поди и поиск медианы через Arrays.sort() + array[mid] будет константной.
Аноны, приветствую! Надеюсь сюда по теме пишу. В общем, имеется сайт с паролем, для чека пароля используется проверка в виде правила регулярного выражения :
>>2188056 >/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{1,5}|[0-9]{1,3})(\]?)$/ Жесть, почему вместо явных диапазонов не стоят буквы, типа \d для цифр? И что значит >для чека пароля ?
Ты дурачок думаешь, что если ты сам проитерировался один раз, то у тебя однопроходный алгоритм. И не понимаешь, что под капотом дерево дает тебе большую сложность, чем 2 раза пройтись по массиву.
>>2188480 >Внутри tailMap дополнительных проходов нет, твердо и четко. В глаза порешься? >>2188449 >>Inserting a value in Red Black tree takes O(log N) time complexity and O(N) space complexity. >А поскольку вставок N, то будет O(N log N). Где тут про tailMap? Тут про map.compute() в цикле.
Да и tailMap имеет сложность совсем не константную, но на фону map.compute() это уже мелочи.
>>2188261 Питухон сейчас на первом месте по запросам. Студенты, школьники, хайп датасайнса и етц делают своё дело. Бейсик - мб ретро вейв(соскучились люди по говну).
Я новичок в джава, может кто поможет... Если я могу найти какие-то сторонние либы, которые нужны моему проекту, только в виде ссылок на мавен репозиторий, то как мне их получить себе в проект в идее? У меня нет никакой специально подключенной системы сборки, все собирается средствами самой Intellij Idea. Как-то можно не подключая мавен скачать все что нужно и чтобы идея добавила это в classpath проекта?
>>2188803 >Нужно скачивать жарку с либой и подключать руками Но я не знаю где взять ее просто в виде жарки. Есть только ссылка мавен. >В идее есть интеграция с мавеном, оно будет подтягивать все либы Конечно будет, только у меня сугубо плохой опыт пытаться навернуть мавен на уже готовый большой рабочий проект. Из-за моей рукожопости и слабого знания темы, конечно, а не из-за самого мавена. Но все же рисковать не хочу.
>>2188842 Возможно, ты имел ввиду создать пустой проект, выкачать туда нужные либы, и потом найти их физически на диске и спереть в целевой проект. Если так, то звучит довольно реализуемо, спасибо.
Всем привет! У меня проблема, есть строка, типа: """00000000: 1d c4 15 25 91 e6 09 59 04 99 15 29 0a 45 21 29 ...%...Y...).E!) 00000010: 26 8e 74 a0 1a be 75 68 06 dd 70 33 a4 77 7a 5d &.t...uh..p3.wz] 00000020: b1 ba 22 a7 cf cc f7 ef b1 e3 13 ed f1 89 ad ad ..".............""" И нужно перевести двузначные шестнадцатеричные числа в byte[]. Я составил регулярку, которой соответствует каждое число: " ([0-9a-f]{2})" Есть ли такой метод в классе String или Matсher, чтобы в него передать такую регулярку, и она выдаст {"1d", "c4", "15", ..., "89", "ad", "ad"}? Типа, найти первую пос-ть символов, соответствующую регулярке: " 1d". Сохранить группу: "1d". И так далее.
>>2188883 Может я конечно дебил, но почему просто не сплитануть это все с использованием пробела, и не отсеять мусор по принципу if(arr.length != 2){мусор}?
>>2188857 нет. Пустой проект, где в корне есть pom.xml файл. Открываешь проект в идее, открываешь вкладку с интеграцией с мавеном, нажимаешь кнопку "обновить", и оно выкачивает все либы автоматически
>>2188584 Единственный минус это не очень нужный свинг(гл.11 т.1), но без понимания свинга будет сложно с примерами кода из других тем, например из многопоточки(гл.12 т.1), потому что там код с участием свинга. Если совсем зеленый, как был я, когда начинал читать, то смело пропускай: - жаба fx(гл.13 т.1) - модули(гл.9 т.2) - и еще свинг(гл. 13 т. 2) Это это не нужно почти всем. Опционально: - знакомство со свингом(гл.11 т.1) - работа с хмл из голой жабы(гл.3 т.2) - интернационализация(гл.7 т.2) - безопасность(гл.8 т.2) - платформенно-ориентированные методы(гл.12 т.2). Остальное мастхев, хотя в некоторых главах тоже не особо нужные подпункты.
>>2188975 А что нужен оказался? Ну можно попасть в те пару процентов мест, где он нужен. Тогда и доучить можно. Там вроде ничего сложного, просто объемно достаточно для необязательной темы и муторно.
>>2188949 >Если совсем зеленый Я после долгого переыва решил вернуться к своему проекту, который на самом деле как лоскутное одеяло состоит из спижженых кусков кода с разных сайтов. Как итог костыль на костыле и жором ОЗУ и ресурсов ЦП. Удивительно что вообще работает. Сейчас хочется системное понимание этой вашей жабы получить, чтобы переписать код в труъ рабочее состояние. Сам работаю прогером 1С, принимаю соболезнования. Хз, считать меня зеленым или нет. Наверное буду читать всё.
>>2189159 Там крутых советов по перфомансу нету все равно, про кишки тоже. Там основы. Да и для префоманса, мне как челику тоже плохо разбирающемуся кажется нужно знать не язык, а комьютер саенс. Алгосы, архетиктура пк и операционки. К тому же на основе хорстмана ты ничего особо не напишешь. Чтобы написать что-то дельное, нужно читать много отдельных книг и кучу статей и документации. Причем объемом, как 10 Хорстманов. Голая джава мне кажется очень мало что умеет. Жс или питон из коробки сильно больше дают на мой взгляд. Что за проект?
>>2190031 Тоже сегодня начал тему jpa уже со спрингом, до этого с хмлками играл без спринга. Тоже не сразу смог настроить. Не вижу у тебя @ComponentScan
Посоветуйте, плиз, по части говнокодия новичку. Задача: Мне нужно сделать некоторое логирование работы класса. Поскольку опыта с логгерами у меня нет, пока что это будет простой FileWriter. Так вот, я его создаю в точке запуска программы, и мне надо как-то его связать с логируемым классом. Сам класс, само собой, написан до решения что-то логировать, и высирает просто эксепшены, и иногда что-то в конслоль. Я вижу два решения: 1)Включить в логируемый класс объект FileWriter как дополнительный член, и передавать его туда конструктором или просто через public-доступность для внешнего кода. В этом меня смущает, что этот сраный Writer не имеет отношения к бизнес-логике, и выглядит там чужеродным мусором. 2) В запускаемый класс (держащий main) включить его как публичное static поле, тогда его можно будет легко дергать из любого места в коде. В таком подходе смущает, что нельзя будет создать несколько логгеров, да и вообще статик поля периодически подбрасывают проблем когда-то в неизвестном будущем. Что из этого лучше? Как вообще делают нормальные люди?
>>2190075 >Как вообще делают нормальные люди? Аоп. Но для этого нужна какая-никакая инфраструктура в приложении, может тебе это будет оверкилл и проще действительно руками вкрутить.
>>2190064 А для чего он нужен в конфиге JPA ? Ты так пометил где у тебя интерфейсы репозиторий лежат ? Просто я в гайдах встречал @EnableJpaRepositories , но с это аннотацией у меня конфиг вообще не запускается.
>>2190188 >>2190165 Ещё пару дней не буду у компа. Это я приколхозил с книги проспринг5, глава8. Только там h2. Скачай код, посмотри. Зависимости не помню, не свои, не там. Тоже крутил конфиги с разных мест, как дебил, с этим вроде заработало.
>>2190165 Ну да. РЕПО Этож бины. Их же надо откуда то брать. Хотя если у тебя Бут с его классом main, то там над ним в одной из аннотаций есть автосканилка бинов. У меня просто модельки, репо, тестик и конфиг. До Бута я и спрингдаты ещё не дошел. Но когда смотрел видосы с практикой, читал спрингинэкш там вообще как то без конфигов на самых простых крудах все работает. Пока выглядит, как магия.
>>2190316 >>2190270 У меня не спринг бут , я по хардкору спринг мвс учу. Бут насколько я понял сам все необходимые бины создает для настройки JPA , ему тока в проперти надо вписать параметры для DataSource
Почему декларация import не работает, если в ней нет ни одного пакета? Пытаюсь импортировать внутренний класс: import somefolder.Outer.Inner; - работает import Outer.Inner; - не работает, "package Outer does not exist", хотя папки я соблюдаю. Как импортировать внутренний класс, не помещая ради этого всё в пакет?
>>2190571 Так у меня там вообще нет пакетов, и ни в одном из классов нет строки package. Попробуй сделать импорт внутреннего класса без использования пакетов, нихуя не выходит.
>>2190270 В общем с учетом добавления аннотации @EnableJpaRepositories(basePackages = {"proj"}) твой конфиг рабочий. Только я не понимаю зачем у тебя написано factoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter()) , если ты уже создал бин который создает этот адаптер и логичнее было бы вписать jpaVendorAdapter(). или я чего то не понимаю
Сап, джаваны. Посмотрел вот эту серию из двух видео https://www.youtube.com/watch?v=BmBr5diz8WA про Спринг. Понравилось тем, что представляет из себя нечто, что пригодно для обучения с нуля, но при этом захватывает ещё и внутреннюю кухню, причём в адекватном объёме, без слишком уж мелких деталей. Есть ли ещё что-нибудь похожее про другие популярные технологии? Тот же Спринг МВЦ, Хибернейт, что-нибудь типа JAX-RS... Чтоб после просмотра оставалось не просто понимание, как делать, но и что при этом происходит.
>>2190340 Ну в той книжке без бута большая часть. Единственный большой минус книжки, что там не просто градл, а древняя его версия 2017 года. В новых туториалах хеловордах более свежий градл поприятнее. >>2190640 Это опечатка книжки походу. Я потом убрал это. Я погуглил. Твоя аннотация нужна для работы через интерфейсы наследуемые от crud repository, а я пока не дошел до спринг дата жпа. И пользуюсь синтаксисом обычного jpa. И там достаточно компонент скана.
>>2190725 Раньше тоже смотрел. Типерь думаю зря. Все эти постбин аннотейшн процессоры ищ головы вылетели, ибо тоже нулевыц как и ты. Если зашло, что что мешает всего Борисова посмотреть? У него как минимум спринг Бут и спринг дата есть.
Кстати я вам пару месяцев назад рассказывал, что собираюсь сделать учебный круд с 5 реализациями репозиториев(rawjdbc, jdbctemplate, springdatajdbc, rawjpa, springdatajpa). Ну по ходу изучения. А все остальное чтобы одинаковое. Ну короче сегодня решил сдаться. Ну от springdatajdbc я отказался раньше, ибо меня тут убедили, что это ненужная технология. А вот на реализации rawjpa я понял, что объектная модель jdbc и в jpa разная. В пером ссылка через лонг айдишников, во втором через экземпляр объекта на который ссылаются. Можно было сразу догадаться. Попробовал короче сделать модели с наследованием от интерфейса, в котором реализация геттеров/сеттеров всего, кроме различающихся полей. Там поколхозил с явным даункастингом и тесты заработали. А вот с сериализацией через jackson на фронт проблема хз насколько решаемая. Вроде можно настроить jackson на несколько реализаций (но я не уверен, что смогу), но выглядит уж совсем еботней ради еботни. Буду мутить второй проект с raw jpa + springdatajpa. Но хотелось бы на той же базе. Как настроить jpa/hibernate на уже готовую базу, тем более, что хибер в тестовой базе мне генерирует в постгрессе не всегда такие же типы, что я себе сам написал? Или это очередная глупая идея?
>>2190959 Да, это так. И еще слишком бездумно распечатывают листнинги, с повторениями, многое не нужно, причем все равно часть кода не распечатывают и без кода перед глазами не все ясно. Я думал там пиздец толмуд 1100 страниц, если вырезать листинги будет 500, если их грамотно редактануть и убрать лишние куски листингов будет страниц 900. То есть по факту книга очень поверхностная оказалась для реального объема текста на 500 страниц и охвата тем.
>>2190982 Ну а что смешного? Сперва чистый спринг, потом с бутом. Я и книжечку скачал на русском. Круды свои ксати пишу с бутом. Иногда подрубаю стартеры бутовские, а пишу с обычными спринговскими контекстами и конфигами. Я так то смотрел несколько курсов с практикой на буте, спринг дате и прочитал половину spring in action. Магия какая то. В общих чертах ясно что и для чего. Переделать чужие программы под себя я могу. А если с нуля писать для меня магия. По баелдунгам тоже как то очень обрывочно все понимаешь. Там темы в кучу, их миллион и не ясно, какая базовая, а какая для специфических случаев.
>>2191083 Можно поподробнее? Типа мне надо написать круд в стиле стековерфлоу девелопмент, не зная что вообще творится под капотом, походу пройти баелдунгов по самым самым непонятным встречающимся темам, задрочить топ100 вопросов к собесам на джуна и через месяц идти по собесам?
>>2190896 >Ну от springdatajdbc я отказался раньше, ибо меня тут убедили, что это ненужная технология Зря отказался. Напиздели.
>Или это очередная глупая идея? Наоборот, в коммерческих задачах никто не генерирует скрипты для базы хибером. Вообще базу делает разработчики баз данных, а не бэкендеры, а ты получаешь готовую схему. Поэтому учись настраивать хибер на уже готовой схеме.
>>2191135 Ну хз, анон, как знаешь. Я обратную инфу в треде читал, от местных, когда такие вопросы заходили. Просто не уверен, что ORM-подход прям в 100% случаев используют. В вакухах я вообще редко видел, чтобы какие-то компоненты спринга перечисляли. Обычно просто обобщают в что-то типа "знание Spring".
>>2191140 Так если ты не тролишь, расскажи чем эта спринговская недоорм, как я видел в нескольких местах ее называют хороша. Может ее чисто по кайфу поучу, а не ради вакух. А про компоненты часто вижу boot, mvc, datajpa, иногда security. И это только в джуновских. В мидловских еще 3-4 подфреймворка могут упомянуть.
>>2191142 >Так если ты не тролишь Конкретно итт троллингом не занимаюсь, пишу серьёзно.
>расскажи чем эта спринговская недоорм, как я видел в нескольких местах ее называют Я не могу назвать себя опытным в java-бэке, но мне кажется, если "её" Spring JDBC так называют, то, скорее всего, уже не совсем понимают, о чём речь идёт. ORM - это объектно-реляционное отображение. Например, ты подключаешь хибер, и он сам тебе вычитывает из твоей реляционной базы данных сразу готовые объекты - часть работы делают за тебя. Spring JDBC - это всего лишь удобная надстройка над Java JDBC. Грубо говоря, это стандартный API, который позволяет получать доступ к БД и производить взаимодействия с ней. Там ты вручную пишешь Statement'ы В Spring JDBC - темплейты, где прописываешь обычные SQL-запросы, и на них получаешь набор ответов, как бы указатели на строки и колонки таблицы - ResultSet в Spring JDBC можешь получать объекты через имплементацию RowMapper. То есть в случае с JDBC, ты просто прогаешь SQL-запросы и получаешь результаты их выполнения. А вот построение объектов из них - это уже твоя задача в DAO-слое. То есть, этот подход как бы на один уровень абстракции ниже, чем ORM-подход. Их нельзя сравнивать между собой, на мой взгляд.
>>2191160 Это еще одна проблема спринга, что он блядь просто бесконечный и многие даже работающие на нем не знают что в нем есть, кроме того, что они используют. А уж как нам вкатунам отбросить зерна от плевел это хз. А еще ведь правда есть java ee. И куча сопутствующих технологий. Вот курс полугодовой на 80 часов видосов за овер 200к для вкатунов. Все ли это нужно? Я очень хз. Spring in action такой же +- по содержанию.
Решал задачку по проге и пришел к решению просто блять создать дохрена бинов , которые делают одно и то же , но с разными значениями у возвращаемого объекта. Вопрос в том , можно ли это как то сделать не создавая дофига однотипных бинов вручную ? Код рисует из символов шахматные доски используя эти бины.
Бля, мужики, помогите. Пытаюсь добавить spring security, и он вообще не реагирует ни на какую конфигурацию, которую я ему задаю. А если его вызывать явно, через AbstractSecurityWebApplicationInitializer То он отображается, и даже сравнивает креды, но, опять таки, форма логина не конфигурируется, выбивает при переходе по любому запросу, что .permitAll, что нет - все похую. А также не различает роли, то есть залогинившись даже с ролью юзер я все равно могу перейти на hasRole(ADMIN). Готов скинуть на пиво 150 рублей, только поясните, какого хера у меня ничего не выходит
Подскажите плиз, как можно в проект в идее добавить исходники другого проекта? Именно в виде исходников, а не откомпилированных классов. Можно ли просто прям в проводнике ОС запихать в каталог проекта каталог с исходным кодом, чтоб он стал пакетом, или как-то это надо делать изнутри идеи, чтоб ничего не наебнулось в проекте?
>>2193012 Я ебусь с двумя собственными проектами, которые были запилены давно и независимо друг от друга, без всяких мавенов и градлов (во первых, они начинались как песочницы, во вторых я нуб в системах сборки). Один из проектов теперь превратился в рабочий (работает в реальной пользовательской среде как своего рода микросервис), но мне в нем нужна функциональность другого проекта. Я бы мог второй проект откомпилить и подключить как библиотеку, но вероятность того, что там будет кровавая адаптация, очень велика, и я хочу его иметь именно в составе исходников, чтоб иметь возможность все редактировать прям на месте, без перекомпиляции каждые 5 наносекунд.
Вопрос к флибустьерам. Как вы обходите ограничение правильной редакции версии 2021 года у самой популярной IDE для Java? А то я вчера скачал саму свежую версию, пришлось аккаунт создавать.
>>2191808 Нажимая enter, чтобы отправить число, ты отправляешь так же и символ пропуска строки. nextLine() поглощает этот символ, а nextInt() - нет, оставляя его потомкам (в твоём случае - следующему вызову nextLine).
>>2193283 Там нужно просто кое-какие файлы и директории стереть, чтобы триал сбросить. В интернете куча готовых скриптов по первому же запросу. Не ленись и пойди загугли. Скрипт на сброс триала всех продуктов жидбренса для macOS могу кинуть в тред, если кому надо
Вопрос по хиберу и Spring JPA, каким образом он понимает связи? Допустим, у меня есть две таблицы: компании и сотрудники. Сотрудники хранят внешний ключ на id компаний. Схему создаю сам, хибер выполняет только validate. Соответсвенно, в самом классе "сотрудники" стоит аннотация на связь ManyToOne (без cascade) и JoinColumn на внешний ключ. Так вот, я делаю компании и кладу их в void компанииДАО. Потом создаю сотрудников, добавляю им компании и кладу в void сотрудникиДАО. Для первичного ключа у меня GenerationType.IDENTITY. Все методы дао работают в своих транзакциях, т.е. у EntityManager всегда разные сессии. Так каким образом хибер понимает, что компании в новых объектах сотрудников, которых я положил ВНЕ его сессии (а сессия есть только в пределах транзакции, как я понимаю) - это те самые компании, которые и отослал в компанииДАО ранее?? По итогу, он отлично разруливает, что и куда я положил. Но как он это делает? У него же нет никаких первичных ключей, потому что в МОИХ объектах, которые я создал руками, они тупо не заданы. То есть в сотрудникиДАО уходят сотрудники со вложенными компаниями, у которых не заданы первичные ключи в объекте, но они уже были добавлены в базу ранее, через компанииДАО. Как он их связал? JpaRepository имеет аналогичное поведение.
Всё, забейте, не читайте это >>2193638 Последствия ночного затупа. Все первичные ключи там на месте, их в объект неявно entityManager.persist возвращает, когда туда объект передаётся по ссылке. То же самое и репозиторий делает, по-видимому.
>>2159705 (OP) Набросал несколько примитивных проектов на спринге на гитхаб. Думаю, что для портфолио хватит. Осталась теория для собеседования. Что посоветуете почитать до конца выходной недели? У меня из теоретических знаний только поверхностный университетский курс по джаве.
>>2159705 (OP) Дали рабочий МАК, на котором нихуя не понятно. Как-то можно стартовать пробный период Ultimate версии без регистрации аккаунта? Если нельзя, то скрипты помогут обновить пробный период или данные о времени останутся на аккаунте?
>>2193023 В Idea можно несколько проектов в одном открыть как модули. Как это делать не знаю, но коллега таким пользовалась. Погугли intellij idea multiple projects
>>2193771 Сделал гораздо проще. Просто скопировал каталог с исходниками внутрь проекта. Идея без проблем все это увидела и вкючила в проект. Единственное что пришлось сделать, это подправить в каждом классе package defenition в начале файла исходника. Пока что каких-то проблем с таким примитивным подходом не нашел. Если бы мне нужно было например интегрировать это вместе с историей git-репозитория, был бы геморрой, а так все вроде норм.
>>2193780 Да я просто забил сюда 4 строчки, чтобы кто-то мне сказал насколько так делать можно и нет ли подводных камней, потом еще минут 10 потратил на то чтоб попробовать. С мавеном мне бы пришлось разбираться на каком-нибудь песочном проекте, потом тащить этот опыт в рабочий с риском все наебнуть. Короче, куча времени бы ушло. Я понимаю что тут полно гениев которые изучают спринг за 2 дня и кор за 21 час, но я не из таких видимо.
>>2193784 А что у тебя за проект? Сколько своих классов, сколько внешних библиотек подключено? Если там 20 классов и нет внешних зависимостей, то что там можно мавеном то наебнуть? Просто я до того как освоил мавен пилил хеловорды меньше 10 классов на стандартной либе и их даже проектами язык не поворачивается назвать.
>>2193634 Я этим способом и пользовался до 2021 года . Теперь же они аккаунт требуют. Не может быть, что до сих пор можно сбросить удалив те же файлы и ветку в реестре.
>>2193794 Ну, тот куда надо добавить, содержит в качестве внешних библиотек два драйвера баз данных, библиотеку связи с продуктами MS_Office, и мой собственный утилитный джарник. Сам состоит из штук 10 пакетов классов по 5 в среднем каждый. А тот который надо докинуть - просто минипроект из 8 классов и без зависимостей.
Знает кто-то, можно ли как-то явно инициировать запись в файл через FileWriter до закрытия потока? По дефолту никакие обновления в файл не идут до вызова .close, а хотелось бы делать что-то вроде коммитов, ничего не закрывая на полпути.
>>2194311 Чтобы класс был иммутабельным, он должен соответствовать следующим требованиям:
Должен быть объявлен как final, чтобы от него нельзя было наследоваться. Иначе дочерние классы могут нарушить иммутабельность.
Все поля класса должны быть приватными в соответствии с принципами инкапсуляции.
Для корректного создания экземпляра в нем должны быть параметризованные конструкторы, через которые осуществляется первоначальная инициализация полей класса.
Для исключения возможности изменения состояния после инстанцирования, в классе не должно быть сеттеров.
Для полей-коллекций необходимо делать глубокие копии, чтобы гарантировать их неизменность.
>>2194245 Жесть какая то, типа фулстек фреймворк. Типа реакт внутри проекта спрингбута. А поверх реакта собственный DSL, основанный на XML. И фронт пишется на на этом DSL-xml. Что-то я сомневаюсь вообще идти ли на собес.
>>2194391 Только я не понимаю почему они тогда не пилят на нормальных старперских технологиях. Зачем нужен обрезок с ограниченным функционалом поверх рякта. Может они сами запилили эту шляпу? Но на собес я схожу. Нужно тренировать собесы.
>>2194547 >>2194568 Зачем нужны зеленые треды в джаве? Всякие пулы подключений к базе делать и хттп соединения? То есть это минимум два года надо ждать это в лтс джавы, а потом еще ждать чтобы во всякие томкеты и хикари добавили?
>>2194566 Я хз, думаю потому что нет необходимости. Не то, чтобы я охуеть энтерпрайзер, но ни разу не было нужно это при работе с джава. А в шарпе только когда прогал в Unity. Чем тебя не устраивают обыкновенные треды?
>>2195390 Это похоже на отус, ищи на торрентах. Там просто двухчасовые лекции на каждую тему. Научить толком не научат - просто будешь знать что это и зачем.
>>2195390 да, отус. На nnmclub лежит. Пока первые 5 вебинаров отсмотрел, полет нормальный, неплохо системетизировал, что уже читал. В том же проспринг куча неактуальщины оказалось. И в многих других гайдах тоже. Норм на самом деле. Единственные минус из-за того, что это вебинары - много воды. А некоторые лекторы не умеют разговаривать и там воды больше половины. Думаю после этого курса прочитаю спринг ин экшон(бросил его после трети прочтения первый раз) и норм будет. Как раз новое издание выйдет через 2 месяца. >>2195403 А кто научит?
У кого-нибудь итт получилось сделать индексы на MySQL базе через ChangeLog'и liquibase? Вчера почти 4 часа возился - и ни в какую. Выплевывает какой-то экспепшон непонятный на стадии верификации, якобы у меня не указаны имени колонок. Ошибка не гуглится. Все доки перерыл уже. Даже sql-скрип инклюдил в файл - всё равно не работает. Отпишитесь, пожалуйста, у кого оно работает.
>>2195425 >>вебинары - много воды Меня бесят все эти "меня видно? эммм ну вот, понятно?". Особенно после юдеми, где тебе столько же информации выдадут за 15-20 минут с картинками и схемами. >>А кто научит? Я через петы учился. Сначала пару раз почти прямо по гайдам (юдеми), потом свои проекты с гуглением отдельных моментов. Когда вкатился оказалось что мои петы были не так уж и далеки от реальности, кек. Масштаб меняется, а принципы те же самые.
Анонимус, скажи, за какую ЗП ваши фирым готовы брать джунов без опыта? Если я все технологии, которые указаны в вакансии изучил? Только город укажите, а то в этих ваших ДС'ах рейты повышены.
>>2195688 >>за какую ЗП ваши фирым готовы Я зп других разрабов то не знаю, откуда мне знать сколько кабан готов платить? В вакансиях на джунов и вилок то обычно нет. 20-120к в зависимости от упругости.
>>2195688 Если прям вообще опыта нет, то на 30к рассчитывать можно на какой-нить сбер хуестажировке. Я на пет проектах посидел, без опыта в резюме встал на 80к. Это в Новосибе
>>2194245 >>2194245 Короче сходил. Собеса не было. 40 минут директор с кучей ненужных подробностей рассказывал, что они поддерживают миллион говна для гос органов. И им отдали на поддержку говнолегаси монстра инф систему для медиков. Им нужен базист на оракле с plsql и джавист. Джависту придется работать с ораклом, постгресом, джавой8, спрингом 4.2, но с бутом, миллионом интеграций другими гос системами и кучей баз, очередями и тем странным фреймворком для фронта. Во фронте тоже походу придется ковыряться джависту. Дали тестовое. Какая-то несложная шляпа с базой, веб-мордой и небольшим парсингом регулярками. Думаю опытный челик за час сделал. Мне 3-7 дней придется копаться. Думаю таки сделаю тестовое чисто для себя. Если вдруг возьмут, насколько такой опыт плох?
>>2195951 >Если вдруг возьмут, насколько такой опыт плох? А у тебя на руках уже есть 5 офферов или с чего ты решил перебирать офферами?
Глубоко ничего не изучишь, но получишь представление о большом количестве разного говна, будет о чем в резюме написать. И в целом лучше год тут отработать, чем потратить его на поиск работы мечты.
Более того, на первом этапе глубоко лучше вообще ничего не изучать. Лучше изучать широко, в смысле поверхностно, но побольше всякого разного, чтобы быть всесторонне развитым. Это в перспективе куда лучше и выгодней, чем задрочить какую-нибудь одну хуйню, а за её пределами и хелловорда не мочь.
Да и всякие около/госконторы обычно работают довольно размеренно (хотя с уебанским управлением часто всякие факапы будут случаться наверняка), а значит можно учиться всякой хуйне и в рабочее время.
>>2195986 По описанию кабан-кабаныча(реально оказался очень подходящим под стеретип) это прям легаси в худшем его понимании. Это говно под которое они нанимают написали другие такие же рога и копыта из другого региона лет 7 назад и оно уже сменило 2-3 компании сопровождения. И на одно слово про технологии десять, как он много работает с местными бюрократами, с федеральными, выигрывает тендеры и т.д., что по каким законам. Ну и хоть частники, но так много рассказывал об этом, что на меня снова пахнуло запахом(неприятным) госслужбы.
>>2196017 И? Ты хочешь услышать, что это не работа мечты? Да это херовая работа, но это все равно лучше чем ничего.
Тебя же никто к батарее пристегивать не будет, через год обновишь резюме и будешь неспешно искать новую работу уже в приличной компании имея и опыт и зарплату на текущем месте. Можешь неспешно выбирать интересное предложение.
>>2196038 хз, может вы мне еще подводные камни таких шараг накидаете. Понятно, что я сам буду думать. У меня в этом из знакомых просто никто вообще не разбирается, есть только один фронтендер. Хочется с кем то обсудить. Я кстати все еще жду начала курса епама, нацеленную на удаленный найм на джуна в питерский офис. Мне уже сказали, что курсы епама это хоть какой-то вариант, но далеко не 100%. И логично, что у сегодняшнего варианта шансов стать первой ступенькой для вката больше. Короче вопрос: написать тестовое на spring-jdbc или на spring-data-jpa. У меня есть проект на spring-jdbc, но там велосипед по загрузке скриптов sql для создании базы(я не нагуглил как это правильно делается). А spring-data-jpa я почти не трогал еще, но выглядит, что там все чуть-ли само делается.
>>2196050 >хз, может вы мне еще подводные камни таких шараг накидаете. Нормальных процессов там не будет и ты привыкнешь делать так, как там "принято". Я реально работал с сеньорами которые не понимали зачем нужны пул реквесты, код ревью и прочий CI/CD. Так он еще и активно сопротивлялся внедрению всего этого - типа 15 лет кодил так и все норм было. Работа может быть организована через жопу. В начале года пока бюджетов нет работы мало, а в конце года когда нужно освоить бюджет куча задач которые надо сделать вчера. Ты офис то посмотрел? Прилично выглядит? Чай-кофе-печеньки есть?
>Короче вопрос: написать тестовое на spring-jdbc или на spring-data-jpa. У меня есть проект на spring-jdbc, но там велосипед по загрузке скриптов sql для создании базы(я не нагуглил как это правильно делается). А spring-data-jpa я почти не трогал еще, но выглядит, что там все чуть-ли само делается. Иди по пути наименьшего сопротивления. Идешь https://start.spring.io и генерируешь себе проект с JPA, H2 и прочими необходимыми вещами. Дальше напихиваешь туда требуемые вещи. Я обычно в корень проекта добавляю README.md с коротеньким описанием как собрать и запустить.
>>2195912 >>хорошее на юдеми смотрел? Мне Mosh понравился, amigoscode. Батыршинов (JavaBegin) и Алишев тоже пойдет. Они и на ютюбе есть (но там не все само собой). Книги читал только по патернам/архитектуре/алгоритмам. По фреймворкам - хуита. Устаревают быстро.
>>2196154 >Ты офис то посмотрел? Прилично выглядит? Чай-кофе-печеньки есть? там совок. 5-10 кабинетов по соседству с кучей других компаний, в советском административном здании, переделанном под офисы. И подход очень совковый у всех, госслужбисткий. Но просто это в моей мухосрани в 20 минутах ходьбы от сычевальни. У нас в мухосрани есть еще адовые местные галеры. в 2\3 из них вообще нет спринга, а в остальных вакансии бывают раз в год. Может самому написать им в соцсети?(Знакомый фронт начинал с одной из этих галер и перекатился в епам на удаленку и сказал по организации процессов земля и небо, плюс переработки прям сразу) >Иди по пути наименьшего сопротивления. да, уже энтити накидал, вроде сохраняется. Правда всегда боюсь с jpa что-то напутать в связях типа manyToMany. Сейчас сервис с регулярочкой буду пилить, а потом контроллер и фронт.
>>2196190 По алгосам - для начала и грокаем алгоритмы пойдет, Седжвика понемногу читаю (у него курс на курсере есть) но пока времени маловато. Это больше на вырост, щас я джейсоны перекладываю. Паттерны, архитектура - Фаулер + мельком про DDD (Миллет). GoF пишут сложно и непонятно, но внезапно есть Head First Design Patterns в котором все это пересказано человеческим языком с примерами (другие книги серии не рекомендую, но эта - ок). Но паттерны/архитектуру со временем и так понимать начинаешь и книги лучше читать когда уже не нулевой и писать что то осмысленное умеешь.
>>2196227 Ну грокаем это по сути просто перечисление общего смыла алгосов, после них деревья не покрутишь. Блоха советуют уж очень многие и Чистый код. думаешь стоит читать?
>>2196288 Так этого и так хватает. На собесе про О(n) ответить сможешь, а деревья крутить джуна не отправят. >>Чистый код Если нравится фантастика. Это работает до первого изменения требования перед дедлайном. >>Блоха Я читал местами перед самим вкатом, чтоб подтянуть то что слабовато знал. А так лучше время потратить на практику и спринг.
7 месяцев уже работаю на удалёнке. И вот казалось бы мечта уже исполнилась, но откуда не возьмись появилась другая проблема: мне лень даже из дома выйти в последний месяц. Я тупо утром просыпаюсь, сажусь за комп, работаю, вечером закрываю рабочий ноут, сажусь за пека, играю, ложусь спать, и так дальше по кругу.
>>2196865 На самомм деле в модификаторах доступа вообще смысла нет. Ведь к любому полю можно получить доступ через рефлексию. Делать доступ к полю напрямую без геттеров\сеттеров это детские грабли. Если сделать геттер и сеттер, то это оставит больше возможностей для изменений в будущем. Ты сможешь добавить логику для этих методов.
>>2197267 > Как тогда не утонуть? Читать мурзилки. > Что вообще нужно знать из хибера джуну? Знать инфу из пары туториалов и суметь написать круд на жпа.
У нас было я знаю джава кор, с большей частью стандартной либы (включая всякие типа "сложные" закоулки, вроде дженериков, стрим апи, рефлексию, етц) низкоуровневое коннективити к базам данных, sql конечно же, немного опытен в свинге (хотя это тоже по большому счету станд.либа), и очень хорошо умею абстрагировать предметную область в какую-то программную архитектуру. Я могу с таким багажом уже стать джуном, или смело могу пойти сразу нахуй доучиваться?
>>2197284 >я знаю джава кор, с большей частью стандартной либы (включая всякие типа "сложные" закоулки, вроде дженериков, стрим апи, рефлексию, етц) низкоуровневое коннективити к базам данных, sql конечно же, немного опытен в свинге (хотя это тоже по большому счету станд.либа), и очень хорошо умею абстрагировать предметную область в какую-то программную архитектуру. Набор студента, перешедшего на второй курс. Пока сам не напишешь круд, покрытый тестами и упакованный в контейнер, шансы на вкат минимальны даже на стажировку
>>2197297 Проигрываю с местных экспертов-крудошлепов, которые из мультипарадигмального языка общего назначения сделали средство шаблонного крудошлепия, и не только этим гордятся, но еще и других через это мерило оценивают. Кринж нахуй. Ни дать ни взять, макаки забивающие микроскопом гвозди. мимо
>>2197312 Проигрывай дальше >из мультипарадигмального языка общего назначения сделали средство шаблонного крудошлепия, и не только этим гордятся, но еще и других через это мерило оценивают. Абсолютно во всех прочих задачах c# лучше, а дополнительно мои хотелки закрывает rust. Я больше не пишу на джаве вне РАБоты
>>2197312 Если 80% вакансий такие, а на джунов-джавистов, которых нанимают открыто по объявлениям за 90%, то остальное просто статистически незначимо. Так что для вкатунца по факту джава и является >средство шаблонного крудошлепия Это сложившееся в сообществе мнение.
>>2197284 >включая всякие типа "сложные" закоулки, вроде дженериков Никто не знает дженерики. Сделай Builde дженерик, так чтобы код компилировался https://pastebin.com/CnSRGQhY
>>2197317 Согласен про шарп на 107%. Хотя с одним но: Intellij лично для меня лучше VS, кроме своего мегаублюдочного конструктора форм (которые в Java все равно не нужны) Хотя есть решарпер и райдер, конечно, но я не пробовал. Почему ты тогда не найдешь работу на шарпе?
>>2197289 Благодарю за надежду :3 >>2197297 Окей, буду пока учиться еще >>2197324 Легко. Ну что, берешь на работу, лол. В классе Бэ там аналогичный прием, только public <T extends B.Builder>T bar(String bar) {...}
Знатки jpa, помогите. Есть документ, у него есть коллекция "кодов", коды я засунул в @ElementCollection(fetch = FetchType.EAGER), потому что они всегда нужны. Но на фронт мне нужно отдавать лист дтошек, все без основного текста. Долгим перебором и подбором я дошел до выделенного jpql запроса, но он все равно не работает и я не понимаю почему.
>>2197411 Ну, ты ж не сказал что надо именно класс билдера дженерезировать. Можно и так попробовать >>2197433 От чего тут в голосину? Так уж видимо сложилось, что все навыки 95% прогающих на джаве сводится в дженериках к List<String> list, в стримах к какому-нибудь Array.toStrim.max, а рефлекшен это что-то что лучше вообще не трогать потому что нарушает какую-то там безпасность и медленно. Ну либо у меня в окружении одни дебилы, я не уверен.
>>2197411 Ну хз, мусора всякого так побольше, чем если только целевые методы дженеризировать. Но для любителей кучи скобочек и брейнфакинга конечно лучше https://pastebin.com/BTQAPYTX
Есть проект на буте,он запускается,но грейдл все равно мне подсовывает значок "load gradle changes". Когда я туда нажимаю в Build: Sync вылезает имя проекта:failed. Почему так и нахуя он так делает. Повторюсь, проект работает без нареканий
>>2197455 >Ну, ты ж не сказал что надо именно класс билдера дженерезировать. Можно и так попробовать Очевидно же что: .<C.Builder>.bar() - это говно. Хорошо когда в API сами дженерики не отсвечивают вообще. A a = A.builder().foo(1).build(); B b = B.builder().foo(1).bar("abc").build(); C c = C.builder().foo(1).bar("abc").baz(0.5).build();
>>2197472 Much better! @SuppressWarnings("unchecked") только добавить, чтобы глаза не мозолило.
>>2197521 Ну, ты прав, конечно. В основном в том, что многословность самого внутреннего кода - всего один раз, а клиентские многословные вызовы - многократные. Хотя интуитивность даже дженерик-методов хорошая, как по мне - сразу видно что дженерик значит. Короче согласен во всем.
>>2197565 Принципиально - ничем, все языки программирования более-менее взаимозаменяемы, если опустить ряд особенностей вроде типизации или многопотока. Нишево - сложилось так, что жабу в основном юзают в очень больших проектах, а пхп - в маленьких и средних. Из-за этого экосистема развивается по-разному, и заменить одно на другое сложно. Жабашарпы отдельно, питонопыхожиесы отдельно.
>>2197582 Да. >>2197583 Не всё так просто. Жаба может поддерживать сложность, а вот простоту не может. Попробуй без удобных пыхо-CMS и фрейморков сделать какой-нибудь интернет-магазин на жабе - ёбнешься. Пыхоплеяда тем хороша, что небольшие проекты на ней очень быстро пишутся.
>>2197476 Пиздец, теперь эта долбоебина вообще не стартует. Все классы помечены красным значком j. При этом в Edit Configuration он мейн класс не видит,ебанат блять
А можно как то в спринге в теле хттп-запроса передавать обычные стринги? Вот мне нужно передать с фронта пост запросом 2 поля объекта и еще 4 сфомировать на беке. И сперва я 4 поля забивал нулями. Но это как то не очень. Я например не хочу, чтобы фронт знал все поля настоящего энтити. Ну самый разумный ответ - дтошка с этими двумя полями. Но нелья ли просто две строчки передать в теле (ну вот лень мне писать дтошку например) без обертки? Если нельзя, то почему?
>>2197604 Уже перекопировал блять,спасибо дядь вов. А вообще,я посмотрел что изменилось и сраный грейдл тупо проебал все стартеры,хотя они записаны в файле конфигурации,и не хотел билдиться потому что не может найти файлы, которые он сам должен был скачать и внедрить. Долбоеб блять,хуй я больше когда к этой залупе притронусь
>>2197639 Я ведь хотел сегодня блять день посвятить изучению спринга,постгрес в докер закинуть и подключить к проекту,а вот хуй там,с двух часов,а это уже блять 9 с половиной часов,9 сраных часов я пытался починить эту шайтан машину. Пошел нахуй дибил ебучий сука зла не хватает
>>2197184 >>это оставит больше возможностей для изменений в будущем А потом в каждый проект тащишь ломбок, пишешь @Getter @Setter и не видишь этих геттеров больше никогда.
>>2197657 Ну а ты как хотел? Один костыль, чтобы замести следы за другим. Минус на минус дают плюс. А два костыля совершают работу, результирующая которой, стремится к нулю. Зато соломка подстелена. Все выиграли.
>>2197700 Ну так идея умная и знает, где искать гит, нашла его по стандартному пути в Program Files, а терминал тупой и сдаётся, если не нашёл чего-то в PATH.
>>2197613 >Если нельзя, то почему? Можно, но все просто пишут DTO-шку для этих целей, потому что мапперы вполне себе хорошо их сериализуют. Плюс объект DTO можно легко валидировать, расставив аннотации для Validation Api в нём, и он сразу отрыгнёт экспепшеном в контроллере, если фронт невалидного говна прислал.
>>2197767 Если не считать того, что будет плюсом, то довольно простое задание для пары вечеров. Только я не понял, что означает standalone - состоять из одного выполняемого компонента верхнего уровня и Схему БД желательно хранить в репозитории в любом удобном виде. Кто-нибудь может пояснить?
>>2197771 Помоги по-братски сделать дтошку. Или разубеди ее делать. Короче хотел деркать дто прямо из базы. Но у меня не получается: >Есть сущность "документ", у него есть коллекция "кодов", коды я засунул в @ElementCollection(fetch = FetchType.EAGER), потому что они всегда нужны. Из сущности выделяется дто, все поля кроме текста. Нужно сформировать метод для репозитория springDataJpa и запросом jpql, который возвращает лист с теми DTO, сет кодов которого содержат определенный код. https://pastebin.com/ztsB90Dp Тут мне вместо сета в конструктор дтошки передается один лонг. И еще вся проблема в том, что мне нужен не просто лист дто, а с пагинацией. Так вот я разобрался, как забрать page сущностей, а потом их форматнуть в page dto на ходу. Но там будет грузиться каждый раз самое большое поле из базы. За это могут предъявить. И мне еще по этим кодам потом фильтровать надо будет. Сейчас уже думаю лучше бы на jdbc пилил тестовое это. Правда там с пагинацией еще больше проблем.
>>2197777 >standalone - состоять из одного выполняемого компонента верхнего уровня Грубо говоря - всё запаковано в один джарник. Без каких-нибудь томкатов рядом, в которые ещё нужно это всё задеплоить. Ну, в общем-то, это как раз джарник спрингбута и будет.
>Кто-нибудь может пояснить? Обычное описание sql-запроса на создание схемы базы данных в файле.
>>2197777 >standalone - состоять из одного выполняемого компонента верхнего уровня Ожидают, что ты не будешь выебываться и твое приложение будет состоять из одного сервиса. >Схему БД желательно хранить в репозитории в любом удобном виде. Выложишь вместе с приложением дамп своей БД.
>>2197767 Посмотрел пул реквесты и почему-то все вкатыши напрочь игнорируют существование в этом мире составных ключей. Их вообще не смущает, что генерируемый id не используется фактически никак, а все выборки осуществляются фактически по двум колонкам, которые у них не ключевые, ещё и без индексов.
>>2197917 Чел, я с гитом пока на вы. А как удобнее их смотреть в гитбаше/идее? Склонировать проект, в идее есть еще git -> github -> view pull requests. И виден код. Как этот код запустить или скопировать себе этот код с пулреквеста? Я вообще это могу сделать, как не владелец репозитория? Ну и раз смотрел вкатунские пулреквесты, скинь пожалуйста ссылку на лучшее из худшего, что видел.
>>2197787 короче с Interface-based Projections https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections все работает без jpql, чисто на методах спрингдаты. А с обычными дто я ебался весь день вчера. И пагинация, и само отделение дто(проекции) и фильтрация по элементам коллекции. Это практически все задание и есть. Сейчас на постгрес вместо h2 только накину. И только контроллеры с фронтом останутся.
Сап тред. Есть вопрос. На прикреплённой пикче выдержка из документации к PostConstruct. Если исходить из написанного, то получается, что обработка Inject происходит перед PostConstruct.
Вопрос: почему так? Ведь тогда получается, что впрыскивание происходит раньше, чем запускается postInit у BPP. То есть при такой логике впрыскивается неактуальный бин (например, без прокси). Как понимать такое?
>>2198025 >почему так? Потому что нахуя тебе на практике PostConstruct-метод, в котором ты не можешь использовать зависимости бина.
>Ведь тогда получается, что впрыскивание происходит раньше, чем запускается Действительно так, на этапе вызова PostConstruct не вся инициализация из BPP уже отработала, и что-то может быть еще "неауктуальным". На практике чаще всего этот эффект заметен в виде неработающих @Transactional.
>>2198055 Так это правильный подход. Сначала учишь C, потом C++, потому джаву, причём задрачиваешь сокеты, свинг, треды и прочее, потом сервлеты с ЕЕ, потом спринг, потом спринг бут. По каждому читаешь минимум одну книгу на 1000 страниц.
>>2198045 Ну ты же не понимаешь досконально как работают процы от интела и амд, изготовленные за последние 5 лет, на которых и будут работать твои серверные программы под спрингом. И ничего.
>>2198061 Ну си и ассемблер куда ни шло. Но зачем тут плюсы? И си с ассемблером учится во время изучения архитектуры эвм, операционок и сетей. Там талмуды типа Таненбаума и после каждого талмуда горы спецификаций последних версий железа/операционок/сетевых протоколов. Ведь талмуды пишутся с задержкой 5-20 лет. Ну и куда после синтаксиса джавы в сервлеты сразу? А спецификация jvm как же? Там тоже гора абстракций, которую абстракционист-перфекционист должен задрочить.
>>2198102 C++ - это мост в промышленные языки из C. Ассемблер учится параллельно с архитектурой, но не C. Спецификации надо читать сеньорам, для вката достаточно учебных талмудов по EE.
Посоветуйте схему вката в спринг, плиз. С чего начать и по каким материалам, желательно не курсы а книги/видеоролики в свободном доступе или на торрентах
Отус >>2195425 вот другой чел советовал. Я только алишева смотрел. Основы наверно лучше ди популярнее всего разжеваны >>2196178 Еще prospring5 читал. С нуля подойдет, но много неактуального в примерах. Почти все примеры без бута и на хсл кофнигах. И самое уебищное это градл, причем древний, у которого нет обратной совместимости с нынешним. Ну и по примерам - книга spring in action и на ютубе letscode два плейлиста хороших.
>>2198259 Паскаль общего назначения язык, на нем что угодно можно, просто он нахуй никому не нужен, никаких ниш не смог занять, фреймворков нет, даже рад-студия пидорское ПО, которое стоит дохуя а пиратнутое стучит в офис разрабам
>>2198108 >А как тогда быть 1. Убедиться, что проблема не умозрительна, а реально существует - ты в ситуации, когда нужно использовать в PostConstruct нечто, что не успевает подцепиться. 2. Использовать любой подходящий workaround, например, вместо @Transactional брать напрямую TransactionManager
>>2197917 >>2198257 Вообще, для таких задач просто индексы нужно прописывать на нужные поля. Другое дело, что в том же liquibase, у меня ни в какую не получилось индексы прописать. Ни через ченджлоги, ни через инклюд sql-скриптов напрямую. Была как-то такая задача - провозился в этой парашей 4 часа, и нихуя не заработало. Может быть, в этом и причина, почему многие так сделали схему.
>>2198348 1) Как ты будешь ссылаться на эту таблицу из других таблиц? Там тоже делать дублирующие поля для составного ключа? 2) Может измениться структура, правила заполнения этих полей, обязательность, возможность дублирования и так далее. Всё это создаст огромные проблемы если использовать их в качестве ключей 3) Производительность и сложность индексирования. Ключ по текстовому полю - плохая идея
You can close all the open tool windows at once and thus enlarge the split screens. Place the cursor in an editor tab and press Ctrl+Shift+F12 or just double-click the tab. IntelliJ IDEA hides all the open tool windows so all the space is shared by split screens.
Как блять это говно ёбаное отключить? Каждый 3 раз при переключении вкладок у меня эта поебень срабатывает. Уже клавиатуру пополам почти сломал.
Привет, народ! Интересно узнать, кто что думает... скоро в университете иннополис стартует третий поток для обучения разработке корпоративных приложений на java (чуть ранее стартовало уже два, в каждом, как я понял, по 1000 мест). Самый прикол в том, что половину обучения платит государство, половину какая-то конторка Тим Форс, обещая после завершения обучения - собеседование и, возможно, трудоустройство. При этом, если последует офер, должен на них отработать год... так сказала менеджер. Сам курс стоит в районе 95к, итого на каждого вкатуна они раскошелятся на ~45к... Что-то не могу понять, какой профит с их стороны, платить чумовые деньги на обучение этой оравы, чтобы принять n джунов? Хм, не проще ли закинуть объявление на hh и брать тех же джунов за еду? Какие подводные могут быть? P.S. сам курс ни о чем, за два месяца предполагается объять необъятное.
Всем привет, проходил собес на джуна на джаву, сказали что вроде норм, но сказали что писать буду на Scala, кинут - разберусь. Приступаю через неделю. Внимание вопрос: "А что делать-то, епта?". Яж так сильно в функциональщину не погружался, я круды на спринге клепал. Сказали конечно что всему научат, но тем не менее, я за недельку решил сам начать что-то изучать. Что на этой вашей Scala делают? Посмотрел как там REST делается на Баделунге и ахуел немного, но тем не менее язык нравится. Наставьте на путь истинный.
>>2198632 Охуенно подфартило же. Тут наоборот как не спросишь, что надо джуну знать, так говорят что если ты не знаешь спринг то вероятность успеха равна нулю, а тебе сказали что разберешься по пути. Заебись же.
Приветствую аноны. Насколько я знаю, java очень изолирована от системы. Я вкатыш пока что, поэтому хочу поинтересоваться, а насколько сильно она от системы изолирована? В чём это выражается?
>>2198727 По моему это пиздежь просто. Я сам вкатыш, но всегда, когда требовалось каким-то образом провзаимодействовать с чем-то вне программы, гуглилось это за минуты и делалось тоже. Например всякие там создания директорий, файлов, чтение/запись реестра, переменных среды и т.п. Есть куча встроенных в джаву классов которые для тебя все это абстрагируют
>>2198727 Это значит, что у тебя нет прямого доступа к системному API (winapi, posix и прочее), но и его можно получить через системно-зависимые обёртки. Больше никакой изолированности нет.
>>2199160 плагины для: - баз - жс и фреймворков - хибера и жпа - хттп клиент - спринга И это я только вкатываюсь. На комьюнити этого или вообще не будет или придется пользоваться клиентами баз и постманом каким-нибудь. Интересно как с этим в SpringToolSuite или вскоде. Сейчас пишу тестовое для компании, где очень нарядли будут оплачивать идею.
Пацаны,у меня идея не предлагает валючить авто импорт и в подсказки не выдает в докерфайле и при указании пути например. Где можно этот контекст включить?
>>2199828 > идея не предлагает валючить авто импорт Пидоры из жидбрейнс ломали-ломали функцию автоимпорта, наконец-то доломали. > и в подсказки не выдает в докерфайле и при указании пути например Купить ультимативную идею или попробовать поискать плагин.
>>2199833 И так ультимейт,а чем там с автоимпортом? У меня кстати еще когда создаю вручную файл типо application context среда не отмечает его как спринг файл,он тупо висит как обычный, соответственно подсказок там тоже нет
фаст вопрос: Есть ли сейчас Spring in Action на русском языке в нормальном издании, где не будут допотопные технологии описываться, желательно спизжено с торрентов чтоб все это было?
>>2199851 Он просто перечисляет какие есть классы и какие методы в них вызывать, но общего представления у меня от этого не возникает. Как будто предполагается, что я уже писал сетевые приложения на другом языке и хорошо знаю, как работает этот ваш инторнет.
>>2197641 > докер >>2199092 > докер >>2199828 > докер >>2199910 > докер Слушай, анон, мы может и понимаем, что раз ты учишь сопутствующие к жабе технологии, то тебе кажется логичным про всё это спрашивать в жаба-треде, но скажи, если у тебя сломается винда или надо будет починить принтер, про это ты тоже здесь спросишь?
>>2199906 Нет конечно. И вряд ли будет. Читай на инглише с автопереводом, там язык очень простой, даже я все понял. Можешь прям 6ое издание начинать. Там первые 5-7 глав уже вышли, а вся книга выйдет через месяц.
>>2199913 Ну мне все понятно было https://www.youtube.com/playlist?list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1 вот плейлист поверхностный-ознакомительный по сетям. Посмотри 5-10 видосов про ip, tcp, сокеты и http. Я когда эту главу читал написал первое учебное приложение сам. Типа чатик в cmd на tcp-сокетах по локалке, с двумя потоками. Помню было два джарника: клиент и сервер, на клиенте пришлось захардкодить ип сервака. Поставил на второй комп в другой комнате и тнусом переписывался.
>>2199939 Читать всё. Вдруг ты вкатишься в древнее легаси с вебсферой, антом, шестой жабой, DB2, на спринге (третьем) только пара модулей, остальное на ЕЕ.
>>2199957 В последнее время я скорее больше проектов на котлине с вебфлаксом видел, чем с жабой. И gradle тоже нужно из жаботреда увольнять, жаба для него всего лишь один из возможных плагинов.
>>2199937 Но при этом там многое упущено. Например по тем же базам. На один пример с современными автоконфигами бута - 5-10 старых с хмл/ддава конфигом. Про бут, стартеры, хуяртеры придется отдельно читать.
>>2199920 Сосачую этого. Кстати, кто каким софтом пользуется для перевода? Лет 15 назад был годный Babylon, который мог моментально перевести слово под курсором. Сейчас уже канул, наверное.
>>2200274 Тоже его скачал 3 часа назад. Попробовал почитать Spring in Action 5 [2019], и оказалось что переводить там практически ничего не нужно. >>2200158 - кун
>>2200158 тоже кутранслейт, только недавно яндоксовский движок перестал на нем работать. Приходится пользоваться гуглом. яндекс по моим ощущениям с английского на русский был чуть лучше.
>>2200365 .Net Core может только в консольные и веб приложения. А если хочешь графические, то только Windows. Кроссплатформенность .Net Core - это обман.
Нужно изучить технологию @ Гуглишь статью/видос @ Вникаешь, радуешься @ Случайно позже натыкаешься на статью "yoba-технология теперь устарела, надо использовать ололо-Api" @ Ловишь бугург
>>2200504 > yoba-технология теперь устарела, надо использовать ололо-Api" Не надо. Даже если кто-то считает, что устарела, это ещё не повод учить ололо-апи, если на нём нет работы.
Учишь как пилить CRUD'ы на Spring'e. @ Чел показывает тебе аннотацию @RequestMapping @ Радуешься @ Знакомый мид/синь засерает тебя, говоря что нужно использовать @GetMapping/@PostMapping и др @ Грустишь
>>2200584 > @GetMapping/@PostMapping Не всё так однозначно. Понадобилось на рабочем проекте мне как-то покопаться в рест-контроллерах, а то в основном с соапом ебусь. Вижу везде @RequestMapping, с учебных крудов вспомнил про @GetMapping, попытался заменить, идея его не нашла, и выяснялось, что четвёртый спринг их не поддерживает.
Скалист в треде. По сложившейся ситуации выше в треде описывал, вынужден писать на Scala. В связи с этим возник вопрос. Как часто приходится иметь дело с каррированием и функциями высшего порядка,
Изучал Java в 2006-2007 в универе. Писал даже свой ftp-сервер/клиент. После универа уже не программировал и не интересовался Java. Сложно ли будет вкатиться сейчас в язык?
А что дает нам запись "throws" в сигнатуре метода? Че-то там типа пробрасывается "наверх".. Получается, что этот метод сам с исключением не работает и если оно возникает, то оно будет обрабатываться в том месте, где текущий метод вызывается? Типа вместо результата текущего метода исключение придет?
>>2201159 Это ошибка в дизайне языка, суть которой в делении исключений на непроверяемые (unchecked) и проверяемые (checked). И если ты кидаешь проверяемое исключение или вызываешь метод, который кидает такие исключения, ты обязан либо поймать его в этом же методе, либо пометить свой метод throws, заставляя всех, кто использует твой метод, проделывать то же самое.
>>2201350 Ну ты чо как маленький-то? Ты же даже не гуглил. Качается драйвер для твоей БД, подключается к проекту как зависимость, загружается в программу через Class.forName (видимо это надо чтоб класс-лоадер отработал), потом у DriverManager (это часть джава.скуэль) вызывается статический метод GetConnection, в который параметром передается всякая трехомудия с параметрами подключениея. Возвращается из вызова коннекшен, с которым уже можно всякое чудить. Потом тупо пишешь запрос на языке SQL той базы, которую используешь, кладешь его в строковую переменную. Создаешь объект класса Statement, через вызов createStatement у объекта Connection. В зависимости от того, надо ли запрос параметризовать, юзаешь или просто Statement или PreparedStatement. Стэйтмент можно уже отправить выполняться на сервер. В зависимости от того, селектит ли что-то запрос, используется или execute или executeQuery. Если ты селектишь, то результат приезжает в виде так называемого ResultSet, у него есть как бы курсор, который указывает на единственный кортеж результата. Из того кортежа, на который сейчас указывает курсор, ты можешь вытаскивать результаты по индексу, имени атрибута, и т.п, и делать с ними уже все что угодно. Движение курсора в ResultSet только одностороннее - хотя структура и реализует интерфейс, позволяющий вызов previous, база данных пошлет тебя нахуй скорее всего, всегда работает только next(). В самом начале кстати курсор стоит как бы над первым кортежем, и чтоб начать что-то получать нужно один раз вызвать next(), чтоб получить первую запись
>>2201420 если не можешь, выкидывай выше. При этом код выше должен жестко знать об этой возможности получения такой ошибки, которую надо обработать. Если он тоже не может, то снова выше. Это заставляет думать о корректной обработке эксепшенов
Читаю Блоха, там "методы, генерирующие проверяемые исключения, не могут быть использованы в потоках непосредственно". В чем причина? Где об этом можно узнать подробнее?
>>2201517 Возможно, речь про Runnable, который не декларирует исключения, и если в качестве его реализации попытаться подсунуть метод с throws, это не скомпилится.
>>2201159 Если ты вызываешь метод, который в сигнатуре имеет throws, то у тебя два стула пути: либо ты оборачиваешь строку с вызовом этого метода в try-catch, либо тот метод, который ты пишешь в данный момент, тоже должен быть помечен как throws этого же типа исключения, либо супертипа. Надо понимать, что если исключение возникло, то исполнение, так сказать, бизнес-логики метода в блоке кода прекращается. Если все это происходит в блоке трай, то продолжается оно в выражении catch и finally, если же ты просто пробросил вверх через сигнатуру метода, то метод этот вообще умирает, совсем.
Кто-нибудь может объяснить, что происходит с ресурсами при упаковке? Куда мавен их девает и как правильно указывать путь до них? Пытаюсь с помощью @propertysource достаю из внешнего файла пароли к базе, но томкат их не видит (а где он, блять, их вообще искать то пытается?).
>>2201669 Очевидно, что никто, все лепят синглтоны, большинство даже не подозревает, что есть что-то ещё. Пару раз попадались prototype и request, но делать кастомный скоуп - эио ж насколько спринганутое приложение должно быть.
>>2201525 А есть какие-то способы сделать это в принципе? Или принципиально никак не избавиться от того, что перехватывать и обрабатывать эксепшены придется внутри работающего треда?
>>2201710 А чтобы снова сделать исключение обязательным к отслеживанию, я так понимаю, надо делать чтото типа try{ thread.start() }catch (RuntimeException rte){ if (rte instanceof MyException) throw new MyException(rte) }
>>2201744 Чем они тебе не угодили? Ну если ты их так не любишь, пробрасывай всегда вверх. IDE это позволяет делать автоматически. Просто бесит что ли срань в коде? Тогда джава в принципе не для тебя, если только ты не какой-нибудь лобколюб
Создал с помощью spring data rest три сущности. Запросы работают нормально только для классов с названиями в одно слово. У класса EmployeeDetail не работают никакие хттп методы. Почему так?
>>2202047 У меня контроллеры и сервисы создает spring data rest. Я даже классы такие не создаю. При этом у сущности department например все работает заебись. Вбиваю в постмен localhost:8080/departments и все ок. А как вбивать имя из двух слов я вообще хз,уже и так и этак пробовал и с подчеркиванием и с дефисом
Поясните немного новичку про Мавен. Если я например юзаю зависимости Спринга в каждом своем приложении, значит ли это что Мавен всякий раз выкачивает эти библиотеки и складывает локально у меня на диске, или он где-то в системе создает свой репозиторий, и сначала ищет там и подключает к проекту, а уже если не находит, то лезет во внешний репозиторий и тогда качает?
Поясните за курсы\лекции, которые на всяких торрентах и ютубах лежат. Про любые, которые вы смотрели и можете примерно оценить. Даже если там просто java core. Самому отсматривать ебанёшься, а за советами ко мне прибегают часто.
>>2201361 >надо ли запрос параметризовать, юзаешь или просто Statement или PreparedStatement Ещё надо добавить, что б не вздумал параметризовать простые запросы через конкатенацию строк, иначе можно получить дыру для sql injection.
>>2202520 Деанон-травля же. Город-миллионник в РФ.
>>2202521 >Поясните за Н2 Её, в основном, используют как in-memory database. Профиты в виде использования для тестов, в том числе.
>Если кините как докер компоус составить вообще супер Миллиард статей и видосов на ютубе по запросу "docker compose spring postgres". C стационарной H2 всё должно аналогично работать. Единственное, если она долго стартует и приложение успевает упасть, то, возможно, нужно будет присрать какой-нибудь скрипт, типа этого https://github.com/vishnubob/wait-for-it
В чем смысл проверяемых исключений? Я так понимаю, что в том, чтобы мы имели возможность самостоятельно обработать возникновение исключительной ситуации, которая не относится к RuntimeException. То, что относится RuntimeException, является непроверяемым потому, что восстановление работы программы после него невозможно/нецелессобразно? Есть вот, например, проверяемое исключение FileNotFoundException. Если мы перед октрытием файла, к примеру, сначала проверим его на наличие, а в следующей строке откроем, все же есть вероятность, что между этими строками файл будет перемещен/удален и поэтому нет способа избежать исключения с помощью проверок. А например, деление на ноль всегда вина того, кто пишет. Такой смысл?
>>2202466 Что ты имеешь ввиду под конкатенацией строк? Если ты сконкатенировал у себя в коде и отправил запрос уже готовым, чем это отличается от того чтобы просто отправить запрос? Или там есть какие-то механизмы отправлять запрос в СУБД кусками?
>>2202566 Нет. Смысл в том чтоб ты не мог проигнорировать факт возможности возникновения проверяемого исключения. Ловить ты можешь в том числе и непроверяемые (ты в трай-кэтч можешь заключить блок кода который бросает рантайм эксепшен, словить его и обработать, просто ты не объзан этого делать. Ты можешь в трай-кэтч заключить вообще что угодно, даже если там никаких исключений не случается, хотя все тело метода, исключив выход чего-либо наружу). Так же можешь и не ловить проверяемые, пробрасывая их вверх во всех мотодах где они вываливаются, вплоть до main (это чревато тем что твоя программа будет наебываться по любому самому пустяковому эксепшену). Короче, у тебя нет прям непреодолимой обязанности делать что-то с ними, они просто как иголки воткнутые в воротник, настоятельно подталкивают тебя использовать их так, как они задуманы.
>>2202856 Откуда нам знать, что тебе интересно? Может, ты так любишь писать бизнес-логику без привязки к языкам и технологиям, что тебе и кобол понравится.
>>2202862 Ну это субъективный вопрос. Что у тебя может вызвать интерес в работе на спринге? Я просто пока не работал. Хотел бы послушать мнения других людей об их интересах. Ну понятно, что очень значительному числу >>2202865 даже тех кто работает, интересна только зп.
>>2202926 Наверное, возможность поиграться с архитектурой. Интересно делать что-то с нуля, когда дают самостоятельно написать целый модуль или микросервис, там прокачиваешь умение в архитектуру, может понадобиться юзать интересные спринговые фичи, о которых и не слышал раньше. Но такая возможность выпадает не очень часто, обычно надо дорабатывать или фиксить существующее и написанное давно. На больших проектах почти весь спринг скрыт за ядром приложения, и пользуешься в основном всем готовым, никогда не открываешь конфиги, пишешь логику и скучаешь, от спринга юзаешь пару аннотаций.
>>2203071 Создание архитектуры невозможно автоматизировать, это наиболее творческая часть программирования. Можно использовать готовые ее паттерны просто.
>>2202593 Я просто не до конца понимаю, зачем это разделение на проверяемые и непроверяемые и на каком основании они сделаны? Как обращаться, мне понятно. Чтобы обратить внимание? Почему именно на них? Есть ли какая-то смысловая разница? Моё предположение было в том, что разделение основано на том, что возникновение RuntimeException всегда зависит только от программиста, написавшего код, который породил RuntimeException, в то время, как проверяемое исключение (отсутствие файла) гарантированно предупредить невозможно (между двумя строками проверки наличия и открытия он может быть перемещен), потому что там задействованы внешние ресурсы, которые неподконтрольны программисту, написавшему код. Верно ли это?
>>2203222 Не могу тебе на этот счет ничего сказать. Мне это представляется довольно естественным: тебе дизайн языка дает возможность как вынудить пользователя помнить о возможных исключениях при работе с твоим кодом, так и скрыть эту возможность, воспользовавшись анчекед вариантом. Зачем задаваться вопросом, зачем дано слишком много каких-то возможностей? Лучше думать о тех, которых не дано, а надо бы. Про ситуацию с файлом... опять же не понимаю что не так. Механизм исключений как раз таки тебе позволяет в случае если файл куда-то перемещен не наебнуться при попытке начала работы с ним, а предпринять, например, вторую попытку, указать новый файл, и все такое. И то как оно сделано вынуждает тебя хотя бы обратить на это внимание (хотя ты можешь забить и просто пробросить вверх). Если бы там стоял анчекед, ты бы, возможно, просто даже не стал париться о том что файла может и не оказаться, просто набисал бы логику а потом словил эксепшен. С этой точки зрения, безопасность работы с этим инструментом была повышена через чекед эксепшен. Анчекед эксепшены они имеют такое свойство, что возникнуть могут буквально везде. Если бы дизайн языка не имел вообще анчекед варианта, тебе приходилось бы буквально каждый математический стейтмент оборачивать в трай-кэтч, потому что вдруг там деление на ноль. Естественно, это уже что-то вроде неоправдявающего себя перебдения за безопасностью. Тебя бы такой стиль просто заебал.
>>2203369 Нету тут XML , задача ебанутая. Этот конфиг был как дано. Только вот он нихуя не работает и в тестах независимо от того что я меняю в коде стабильно 404
Сап, на связи вкокотун. Есть собственно вопрос: а можно ли на Java написать допустим бампалку для двача или автопостер для втентакле? Иными словами можно ли как-то имитировать/автоматизировать действия на сайтах с помощью Java?
>>2203383 Форумы и интернет-магазины, потом вкатываемся в работу, и больше никаких петов. Бесплатно что ли этим заниматься? >>2203385 Можно, хоть на ассемблере можно, но для это лучше взять какой-нибудь питон.
>>2203400 Но современная джава заточена под большие серверные приложения. И ты такое: 1. Вряд ли запилишь один. 2. Под большой проект нужна большая дорогая инфраструктура. А если пользоваться джавой для чего то более мелкого, то будешь пользоваться не самым подходящим инструментом, то есть забивать гвозди микроскопом. Так что на джаве пилятся учебные проекты(причем скучные и однотипные), для изучения джава технологий и их возможной демонстрации для джунов. А ты уже не соискатель, то они и не нужны.
>>2203385 >а можно ли на Java написать допустим бампалку для двача или автопостер для втентакле
Да, можно. Берем selenuim и погнали нахуй. Никто не запрещает. Только не проще ли питон взять для этих целей? Правда вк уже умеет ботов распознавать. А для двача нужен пасскод.
>>2203383 >откуда идеи черпаете? Из головы. Много идей всяких.
Распределенное отказоустойчивое хранилище данных.
Бот для инсты/vk, который будет на протяжении долгого времени собирать разную информацию и строить социальный граф. Что-то вроде автоматизации построения досье на человека и его окружение.
Система контроля версий для геометрических моделей. Во всяких 3ds max и cad/cam наверное такое уже есть, но все равно интересно самому подобную хуевину сделать.
ГИС система с бекендом на жабе, и с фронтендом на js или c++/rust/wasm. Что-то вроде клона викимапии или народных карт яндекса. Ну и соответственно хранилище для картографических объектов. Хотя это уже излишнее велосипедирование, postgis давным давно существует.
Всякие интерпретаторы/компиляторы/трансляторы. Тут можно много всякого придумать. Но какой-нибудь транслятор Verilog -> VHDL было бы интересно запилить, правда такой уже наверняка есть.
Как-то так. Можно хоть всю жизнь писать, работы дохуища в каждом из проектов. Как инженерной, так и исследовательской. Другое дело, что их писать можно на любом другом языке, не обязательно на жабе. А вообще идеи для проектов берутся легко, если у тебя есть кругозор какой-никакой. Ну то есть, если ты последние 6 лет только лишь скроллил двачи 24/7, то ничего кроме скачивателя вебмок из фаптредов и автобампа тебе на ум не придет. Нужно кругозор расширять.
>>2203477 >Система контроля версий для геометрических моделей. Во всяких 3ds max и cad/cam наверное такое уже есть, но все равно интересно самому подобную хуевину сделать. Вот об этом тоже думал, остальное в голову вообще не приходило. >кругозор какой-никакой Вот это точно. Устраивался впервые на одну работу, связанную с продажами - сразу понял что там можно автоматизировать. Правда решение для этого уже существовало. А так как я больше нигде не работал и не знаю других воркфлоу, то и идей, соответственно, нет.
>>2203477 >Система контроля версий для геометрических моделей. Во всяких 3ds max и cad/cam наверное такое уже есть. А что, обычный гит этого не сумеет? Это же просто бинарные данные о геометрических примитивах в составе модели Професси-анально работал в 3DMax несколько лет - там такого не было (правда это было много лет назад)
Почему Н2 не сохраняет объекты в базу? Посылаю запросы,возвращает и добавляет данные,при этом в самой базе изменений нет. Тип подключения у меня embedded,файлик лежит в папке с ресурсами.
Просмотрел серию гайдов по Spring Core, вроде все понял, все легко. Не понял только одно: нахуя все это надо? Чем создание контекста и получение из него бинов проще, чем создание точно таких же объектов руками?
>>2203607 Что это значит? Или ты просто зеленишь? Я правда не понимаю. То есть я понимаю что наверное вся важность спринга раскрывается вместе с прочими его компонентами типа бута, мвс, секьюрити етц. Но вот если взять кор в вакууме то это какая-то муть имхо
>>2203608 Ну, кор в вакууме редко используется. У тебя есть 100+ объектов. Тебе их нужно создать, настроить, проинжектить. Скорее всего придется делать какую-нибудь фабрику и изобрести спринг и каждый раз ее править, когда что-то меняется. Получаем огромный класс-помойку, на котором постоянно мерж конфликты, в который лучше не лезть вообще и тд и тп
>>2203615 Еще так и не понял пока что, как создать несколько бинов из одного класса, но с разными значениями values. В файле пропертиз дублирование не допускается же
>>2203618 Можешь через конфиг: @Configuration public class MyConfig { @Bean public MyBean foo() { return new MyBean(); } @Bean public MyBean bar() { return new MyBean(); } }
>>2203802 А почему бы тебе самому тогда не поискать более глубоких знаний самому? Это же джава, здесь все миллион раз придумано до нас. Возьми и погугли хорошенько на английском. Залезь в сорцы самих di-фреймворков. Я о таком честно говоря не задумывался, меня все эти аннотейшн процессторы, рефлексия и класлоадеры не возбуждают. Но что там такого сложного, если есть желание повозиться?
>>2203816 Сложного ничего, у меня просто в голове крутится идея объединить аннотейшн процессор и сервис лоадер, но я не понимаю, как. Они друг с другом никак не стыкуются на первый взгляд.
>>2203829 По аннотациям можно генерировать META-INF/services/... но это нахер не нужно. Уж лучше сразу на базе аннотаций генерировать код который будет инициализировать классы при старте.
>>2203623 Ну если у класса MyBean есть поле примитивное, например int someInt, как я создам два бина с разным значением из конфиг-файла? Пока что я вот такой способ нашел, но только через конструктор: @Value("${myBean.someInt}") int someInt;
@Bean public MyBean myBean() { return new MyBean(someInt); }
Блять аноны,вот какого хуя н2 такое говно и при этом хуй че нагуглишь. Вот указал я папку куда хочу сохранять базу,хуй так, ничего туда сохранять не будет,создаст два файлика НА УРОВЕНЬ ВЫШЕ,а срать все равно будет в .idea/datasource. Вот нахуя так делать,я просто хочу чтобы бд хранилась в файлике там где я скажу и чтобы оттуда нормально считывались данные,а не слетали к хуям при каждом запуске при условии что я сука указал,что хочу хранить в файлике,а не в оперативке
>>2203986 Ноунейм шарага в новосибе,блять как же я заебался,второй день с этой базой сраной ебусь и не могу дальше пройти.Ненавижу ебучую Н2,горите в аду создатели этого говна.На постгрес переключаешься и все волшебным образом работает
Добрый день, 300к/наносеки это жи борда для успешных? А можно ли на Java забабахать визуальную новеллу? Я знаю про RenPy, но для закрепления навыков хочу заделать именно на Джаве. Такое возможно?
>>2203992 Существуют движки VN, написанные на жабе. Но для скриптинга юзаются другие языки типа Lua, ибо жаба компилируемая, в ней нет питоньего eval/exec.
>>2203978 У тебя прям в задании так написано что ли - "Берите именно H2, допишите его исходники, чтобы научить делать то, чего он не умеет, затем уже пилите свой круд"? Почему нельзя взять SQLIte, который и умеет сохранять в файл без сервера, и поддерживается хибернейтом?
Пацаны,как методы добавления в коллекцию при многие к одному То есть есть сущности например department и employee. У department есть лист employees и метод allToEmployees. Так вот,как и где вызывать этот метод? Реализации круд операций за нас то реализованы
>>2204158 Намекну. В этом треде все сидят исключительно с целью найти работу или поднять своё ЧСВ. А похлебать борщи можно на чём-нибудь поинтереснее спрингокваркусов.
>>2204189 Сейчас глянул из любопытства, на самом деле их ~4000. >>2204216 Да, много лет проекту, пилит много разрабов, на каждую вторую фичу требуются новые таблицы или изменения в существующих.
>>2204228 Если кто-то что-то сломает, выявляют и чинят достаточно быстро. До релиза это проходит несколько этапов тестирования на тестовых схемах БД, при проблемах всегда можно восстановить бэкап.
>>2204181 Поднять ЧСВ - это пилить на чистой джаве. Наблюдая местные высеры, зачастую можно подумать что спрингодети уже просто не умеют ничего делать вне фреймворка.
Есть гайд исчерпывающий по тестам в спринге? Чтобы объяснили нормально на примерах отличие юнитов от интеграционных и юниты показали ко всем слоям. И в одном месте и структурировано.
>>2205000 Так прямо в самом любом гайде по юнитам начинают с теста к сервиса, где сервис автовайрят, а репо и другие компоненты, от которых завист сервис мокаются. Этот один автовайр разве не поднятие контекста?
>>2205011 Если автовайр встречается вместе с моками, то это значит, что часть зависимостей все равно обеспечиваются спрингом. То есть это интеграционный тест.
>>2205018 Хз, что за гайды у тебя, но 1. если ты в сам тест заавтовайрил сервис, но дальше тестириуешь только один сам этот сервис, а зависимости его мокаешь, то это по сути именно юнит-тест, хоть даже спринговый контекст чуть-чуть где-то сбоку там участвует. Могу кстати заметить, что в типичном энтерпрайзе полезность юнит-тестов очень ограничена. Нет ничего более глупого, чем мокать репозитории, и сводить тест к проверке того, что сервис действительно вызывает у репозитория нужный метод. 2. с тестами есть эта вечная путаница с терминологией. Частенько юнитами называют любые тесты, которые являются частью проекта, запускаются вместе со сборкой, и не требуют участия внешних систем. Ну типа раз через junit запускаются, значит unit, и похуй, что там в нем.
Анончики,нужна ваша помощь,умираю. Есть спринг бут приложуха,для создания одной сущности требуется еще две другие. Как мне сделать так чтобы я мог дочерние сущности передавать в виде айдишника? Отдельно конструктор с айдишками я создать не могу така ка между основной сущностью и второстепенными стоит связь ManyToOne и я обязан привязывать столбец с айди к объекту,а не к числу. Я чичас расплачусь умоляю
Как записать хибером java.util.date Date-объект с unix-timestamp в postgresql? Хотел использовать timestamp-поле для postgresql, но там не юниксовый timestamp, а какой-то свой. В итоге, пишет неправильно.
>>2205027 >Есть спринг бут приложуха,для создания одной сущности требуется еще две другие. Ты сделал какую-то херню. Родительская сущность должна всегда создаваться первой и без дочерних. Персистишь ее и уже потом создаешь дочерние и линкуешь к родительской.
Важный вопрос от вкатуна: как учить этот ваш Спринг? Работаю макакой-тестировщиком, периодически приходится писать простенькие заглушки на Спринге, которые отвечают 200 OK, но делаю это я в общем-то интуитивно. Ну а как дальше? Есть ли смысл в курсах конкретно по Спрингу,что почитать, с чего вообще начинать?
>>2205052 >Хотел использовать timestamp-поле для postgresql, но там не юниксовый timestamp, а какой-то свой. В итоге, пишет неправильно. Если неправильно пишет -то 99% у тебя стоят разные таймзоны на сервере с постгресом и сервере с приложением. В общем или поменяй тип поля на long или в бине используй ZonedDateTime а в базе timestamp with time zone
>>2205000 >Поднимаешь контекст - интеграционный Ебанулся что ли? Интеграционный тест проверяет интеграцию между системами и у тебя должны не контексты подниматься, а сервисы целиком деплоиться.
>>2205018 >>2205021 >>2205216 Во, вот как раз я и говорил о мутной терминологии. У кого-то, как видим, интеграционные это про "интеграцию между системами" (все остальное, видимо, юнит), так что и нет смысла задаваться вопросами про контексты.
>>2205201 >но делаю это я в общем-то интуитивно Да вообще писать продакшн-код тоже так можно по началу. Если ты не дурачок, базовые принципы понимаешь, уже что-то написать в состоянии, то вполне может хватить официальной документации.
пока лучше всего мне зашел курс от отуса(есть на nnm-club). >>2191161 Я целых пол года по 5 разным гайдам/ютуб каналам/книгам дрочил спринг core, boot, jdbc, data, mvc, правда до security так и не добрался, Но вот иду по отусу, посмотрел пока 7 видосов из 40 и узнаю много нового(судя по названием тем я знаком с содержанием первых +- 17 видосов, но где-то на 70%). Много бойлерплейта(прям как в джаве), лишнего балабольсва, разговоров с аудиторией. 80 часов видео при грамотном монтаже можно было бы урезать в 2.5 раза. Если первый раз знакомишься со спрингом наверно все таки кое-что, но немногое придется гуглить. Например все по базам там на h2, а не на нормальных postgres/mysql. Но костяк весь есть и понятно будет,что гуглить и какие гайды читать. Ну а потом практику думаю норм отсмотреть. Например книга spring in action. Я с нее начал и там просто ничего не объясняется, тупо пользуются кучей магии.
ах да, мне тут полгода назад только и посылали нахуй типа этого анона >>2205224 читать доку. Но дока только по самым важным подфреймворкам это около 2к страниц, как я подсчитал. Я пару раз за нее садился не вывез и лезу в доку, только когда гуглю что-то и читаю ее наравне с каким-нибудь гайдом baeldung. Может дело во мне, но вот такой у меня опыт самообучения, может кому тут пригодится. >>2205227- кун
>>2205219 >Во, вот как раз я и говорил о мутной терминологии. Все нормально с терминологией, просто надо почитать пару мурзилок про теорию тестирования.
Юнит тесты тестируют отдельные классы и поведение публичного API этого класса, если у класса есть зависимости их обычно мокают, для предсказуемости поведения. Это тесты для разработчиков.
Функциональные тестируют бизнес функционал. Можно тестировать как через REST API подняв сервис целиком, но иногда можно поднять контекст и тестировать функциональность вызывая методы у класса. Главное что тестируется бизнес функциональность, а не API класса. В общем-то это основной тип тестов для проверки, что система соответствует требованиям бизнеса.
Интеграционные тестируют интеграцию между системами. Поднимается несколько систем и смотрят как они между собой взаимодействуют. Тут тестируется, что разрабы из разных команд успешно договорились про API, формат данных, порядок взаимодействия и прочее. Тут тестируют базовые сценарии, весь функционал тестами, как правило, не покрывают.
>>2205273 >просто надо почитать пару мурзилок О, спасибо за совет, действительно, как же разобраться без "мурзилок". Вот, например, всем известная музрилка baeldung https://www.baeldung.com/integration-testing-in-spring действительно описывает, как поднять несколько систем, чтобы проверить договоренности о порядке взаимодействия, ну да
>>2205273 >Все нормально с терминологией, просто надо почитать пару мурзилок про теорию тестирования. Ты теоретик обоссаный или хочешь нормальные тесты писать?
Ну и например, у меня есть фейн клиент, который представляет собой интерфейс взаимодействия с внешней системой. Когда я пишу в тестах мок для этого клиента, я превращаю функциональный тест в интеграционный или как?
>>2205198 Ну вот есть у меня книга,у книги есть автор и жанр. У жанра и автора много книг,у книги один и жанр и автор. При создании книги я должен передавать и автора и жанр,а там по несколько полей. Я хочу тупо их айди передавать
>>2205284 Это мурзилка "как протестировать", а не "зачем и что тестировать".
>>2205286 >Ты теоретик обоссаный или хочешь нормальные тесты писать? Кстати, такие мудаки как это реально проблема индустрии. Сейчас стало модно заставлять разработчиков самих тестировать свой код, но при этом никто не подумал, что разрабы плохо понимают тестирование. Зачем пишутся тесты, какие тесты бывают, а уж выражение "тестовый сценарий" для большинства разрабов звучит как ругательство.
>>2205293 >То есть в этом видосе автор попутал и LoginTest это функциональные тесты, а не интеграционные? Да, он даже сам вначале говорит что будет тестировать функционал логина. Если бы он тестировал OAuth2 авторизацию, через сторонний SSO сервис - это был бы интеграционный тест. А это чисто функциональный тест.
>>2205215 Спасибо за ответ! Не уверен, что дело именно в таймзонах, потому как была бы куда меньшая погрешность. А так, выходит, что я вношу unix-timestamp типа 2021-10-25 само собой, лонговой строкой, для облегчения понимания дату написал, а из базы селектом что-то типа 1970-01-19 выходит. Как-то так. Видимо, всё же придётся менять на лонговое поле.
Короче сразу два препода с отуса говорят, что когда jpa-orm использовать не резон, то обычно используют облегченные orm типа mybatis или spring data jdbc. А чистый spring jdbc в проде c нагромождением RowMapper-ов и ResultSetExtractor-ов это муторно. А тут топили за чистый jdbcTemplate.
>>2205538 >и кто пиздит или не шарит Ты может удивишься, но в этом нашем ремесле обычно так не бывает, что способ X в 100% случаев это единственный правильный вариант, а способ Y это однозначно зашквар и кто так делает не шарит. Если б все было так просто и однозначно, тут бы и не платили 400к/наносек, быть может. И то используют, и то; в каких-то случаях что-то муторно, в каких-то вполне приемлемо. Кто-то больше любит одни подходы, кто-то другие. Многие вещи вполне можно нормально сделать и так и сяк, и выбор будет зависеть просто от вкуса, привычек, того, с чем больше знаком.
Начал понемного пробовать вкатываться в спринг, и позвольте такой вопрос: Thymeleaf и шаблонизаторы вообще - нужны ли они бекенд разработчику на реальной работе с реальными проектами, или это хрень, которая во всяких уроках юзается только чтоб как-то видеть как данные выводятся в браузер? Я совсем пока не понимаю как происходит стыковка работы приложения и итогового фронт-энда. Может кто-то скажет в двух словах как данные которые выдает контроллер превращаются в настоящие нормальные страницы, вроде двачевской. просто один только тимлиф можно изучать кучу времени, хочется быть уверенным что это не совсем зря и что запоминать его стоит на долго, а не ради уроков
>>2205569 хтмл - это строчка. таймлиф внутренней магией меняет куски строчки. и строчку отдает на фронт. Не советую вникать, просто повтори примеры в источнике механистически и переходи к ресту.
>>2205569 > это хрень, которая во всяких уроках юзается только чтоб как-то видеть как данные выводятся в браузер? Обычно да, но ситуации разные. Бывает, делают внутренние тулзы для облегчения разработки, которые юзают только разрабы и тестеры, но не пользователи, и там может быть что угодно, на чём даже вакансий нет, хоть таймлиф, хоть свинг. Это всё по необходимости, на собесе за незнание таймлифа никто не завернёт. > Я совсем пока не понимаю как происходит стыковка работы приложения и итогового фронт-энда. Может кто-то скажет в двух словах как данные которые выдает контроллер превращаются в настоящие нормальные страницы, вроде двачевской. На более-менее современных проектах юзают SPA: на бэке только рест апи, и отдельно существует проект с фронтом на каком-нибудь реакте, который деплоится на какой-нибудь nginx и просто дёргает апишку.
>>2205575 >который деплоится на какой-нибудь nginx и просто дёргает апишку я короче захотел как то докеризировать отдельно фронт, отдельно спрингбутовое приложение, отдельно nginx с js-ом. Ну и короче я сломался в настройках nginx. Полдня потыкал и забил(пришлось отрубить cors в spring security). Уметь настраивать nginx это вообще релевантно для джависта? Я знаю это всяким там фулстекам на пхп надо. Вроде хочется покопаться, но жалко времени, и так в планах на изучение много материалов.
>>2205573 >>2205575 Спасибо, аноны >на бэке только рест апи Ну, вот например сейчас я вижу в уроках что спрингом делается мэппинг какого-то запроса на метод контроллера, который выдает (везде, что я пока посмотрел) просто строчку с названием представления, после чего спринг сам что-то там связывает и выдает в браузер. А на реальных проектах куда попадает аутпут метода с мэппингом и что в нем вообще лежит? Сорян за тупые вопросы, можете если что просто послать в гугол
>>2205582 > Ну и короче я сломался в настройках nginx. Полдня потыкал и забил(пришлось отрубить cors в spring security). Вроде, делается несложно через proxy_pass. > Уметь настраивать nginx это вообще релевантно для джависта? Нет, ты не девопс, разве что для общего развития. В пхп-мирке не могут себе позволить отдельно фронта, отдельно бэка, отдельно девопса, отдельно лида, вот и приходится им учить всё.
>>2205583 > Ну, вот например сейчас я вижу в уроках что спрингом делается мэппинг какого-то запроса на метод контроллера, который выдает (везде, что я пока посмотрел) просто строчку с названием представления, после чего спринг сам что-то там связывает и выдает в браузер. Есть просто контроллеры (@Controller, которые Spring MVC), а есть рест-контроллеры (@RestController). Контроллеры да, возвращают название вьюхи, но рест-контроллеры возвращают объект, который надо сконвертировать в JSON и отправить фронту.
>>2205583 Ну в просто контроллере он отдает штмлку/динамически измененную шаблонизатором штмлку(которую он берет из файла с "представлением") строчкой в теле http ответа. А в ресте в теле тоже в виде строчки будет сериализованный объект. А штмлку тебе нарисует жс внутри браузера. Короче почитай статьи про основы http и rest.
Имеет опыт коммерческой разработки от 2 лет Хорошо знает Core Java, Spring Знает Angular, RxJS, TypeScript Владееь технологиями HTML 5, CSS 3 а также знание препроцессоров Знает стек TCP/IP; Знает работу с HTTP, WebSockets Умеет работать с инструментами: Webpack, Jest, Cypress, Docker Готов читать задачи и доводить их до работоспособности (важный редкий навык!)
>>2205613 Хз, обычно фулстеки со спрингом это мидлы/синьеры. Для вкатунцов фулстек это как раз всякое странное говно на фронте типа шаблонов/jsp/ваадина, примеры совсем странного велосипедного говна.
>>2205489 jdbcTemplate есть из коробки в спринг буте. А твой спринг-дата я хуй знает. Второе. Знаешь зачем это нужно? Если нужно сделать хитровыебанный запрос, или всякие хранимки, или специфичные функции субд, типа там массивов или геоданных. Я сильно сомневаюсь что @Query сможет обработать такие штуки
>>2205647 Ну челик говорил, что сложные агрегации с которыми хибер плох он делает на майбатисе и это ему проще чем на темплейте. А про новую спринговую поделку просто сказал что небесполезно. Эти челики для меня не авторитеты. Я просто украл их курс и смотрю.
>>2205695 Ты за 2000 год смотришь? И как тебе лекторы? Я 2018 украл, там один тип всё рассказывает, говорит быстрее, в сон с него не клонит, как с Колыбельного.
>>2205830 2020 Самый частый, толстый такой лысый - реально плох в плане умения рассказывать. Плюс, если отходит от плана, то там точно сделает опечатку, которую 2 минуты будет искать. Но вроде шарит и сам план норм. Слушать тяжело. Очень хочется монтажа. Пришлось даже через метод помидорки это смотреть. Но инфа мне нравится.
>>2205762 >>2205366 >>2205052 Проблема была не с БД, а со старым говнообъектом даты. Может кому понадобиться - не пытайтесь просто взять и вкопипастить лонговое значение unix-time в сраный Date()-конструктор - он засетит его неправильно. Инициализируйте объект через другие конструкторы даты, например, через GregorianCalendar SimpleDateFormat.
>>2206140 Скорее всего, потому что он принимает unix-time расширенный, в миллисекундах. Можешь попробовать туда засетить unix-timestamp и умножить его 1000 - может заработает.
>>2206413 >Ну то есть стандартный формат Это не стандартный формат. В стандартном формате unix-time принято указывать с секундной точностью.
>о чем и в джавадоке написано >Ты-то нахуя ему секунды кормил? Потому что до открытия доки это было неочевидно. Я просто вставил стандартную секундную строку и пошёл искать поломку в другом месте.
>>2207113 Мухосрань-милионник, 60к Не могу сказать что смог, просто вписался в разношерстный ИТ-отдел одного пром-предприятия, где вообще лютый треш и салат из всякого легаси-говна чуть ли еще не на бейсике и 1С-хуиты. Я просто имел много идей по бизнес-логике, и сказал что реализую все сам, но работать буду на джава, подключая все свое дерьмо как что-то вроде микросервисов к единой почти корпоративной БД. В итоге я там сам себе и архитектор и реализатор. Поскольку я еблан, пилю всю свою шнягу на чистой джаве (кор + ждбц + всякие прикладные вещи). Хуйня, конечно, потому и зарплата по меркам отрасли нищая. ХЗ зачем я это высрал, но тоже своего рода опыт.
>>2207118 >Это не стандартный формат. В стандартном формате unix-time принято указывать с секундной точностью. Нет, стандартный как раз в миллисекундах. В джаве же нет метода System.currentTimeSeconds(), или ты результат System.currentTimeMillis() на 1000 делил всегда?
Вот везде пишут, что запрос в базу это дохуя. Особенно по сравнению вызова из кеша. Но нигде Мне стало интересно насколько. Померил у себя на компе - память ддр3, база постгрес на ссд сата3. Считал через System.nanoTime(). Ну вот простое обращение к полям объекта - 1-3к наносек. А вот первый запрос к постгресу(я делал инсерты), что через jdbc, что через хибер это 20-60 кк наносек. Правда со второго по десятый инсерт(тут только на jdbc пробовал) например это уже 150-400к наносек. Но все равно 2 порядка разницы с java-объектом. Первый инсерт это время подключения к базе походу. То есть - подключение к базе - 50 миллисекунд(как пангинуть до франкфурта), - простой инсерт в базу это 300 микросекунд, - обращение к объектам 2 микросекунды. И это на очень простых запросах и пустых базах. На крутом серверном железе разница будет максимум в пару раз. Правильный порядок цифр?
>>2207137 >Нет, стандартный как раз в миллисекундах. Алло, это в жаве он стандартный в миллисекундах. А в стандарте unix-epoch он в секундах: >Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без необходимости вычислений для определения года, месяца, дня, часа или минуты для удобства восприятия человеком. Современное Unix-время согласуется с UTC — отсчет происходит в секундах СИ.
>>2207154 Ну считаю минимумом. Ясно, что база часто на другой машине. Но я не могу так проверить. А какие порядки цифр показательные? Я в хаброответах вообще нагуглил, что 200 миллисекунд на сложный многосоставной селект это многовато, не не то чтобы очень. Просто хочется понимать порядки цифр и насколько например кешированный объект сэкономит времени для полного цикла запроса в рест-приложухи от нажатия кнопки на фронте до перерисовки компонента на фронте же.
>>2207162 Хз, но сталкивался, что когда приложуха крутится на локалке, она выдает стабильную и большую скорость, когда же начинается работа с удаленным сервером это становится довольно плавающей характеристикой - может и быстро прогрузиться, может и подлагнуть иногда. Я бы придерживался стратегии хранить в памяти такие данные, которые нужны неоднократно (например на весь сеанс работы), и такие которые герантировано не сожрут много памяти (например, какие-нибудь весьма ограниченные списки). Если возможны селекты больших объемов данных, можно сделать логику, которая кэширует в память весь пул кусками, например по 500 объектов (после работы пул очищается и ты лезешь за некст 500). Это позволяет не селектить каждый объект отдельным запросом, но в то же время не пытаться закэшировать сразу 100500 рекордов, рискуя получить аут оф мемори. Сугубо мое мнение и практика, может нормальные люди так и не делают.
>>2207199 Охотно верю, что пагинация в кеш это норм вещь, думаю там много конкретных способов оптимизации. Но хотелось бы про какие-нибудь порядки цифр узнать для общих случаев.
Аноны, а кто здесь мидл? Кто считает себя таковым? По внутренним ощущениям или по мнению других, по уровню з/п. Понимаю, что это все довольно условно, в то же время какая-то примерная грань существует. Пусть каждый и определяет для себя сам оттенки.
Расскажите о своем становлении. Как вы поняли что уже на уровне мидла? Сколько времени это заняло(может занять)? Мб есть какие-то конкретные хардовые критерии уровня. Интересно узнать, чтобы хоть какой-то ориентир и цель иметь
>>2207293 Здесь в основном сеньоры, это же борда для успешных людей. По моим ощущениям - все действительно очень условно, определяется больше ролью на конкретном месте, чем какими-то "хардовыми критериями". Для себя никогда не задавался таким вопросом - перешел ли я уже на конкретный "уровень" или нет - и неплохо себя чувствовал. В качестве ориентира и цели лучше иметь либо размер зп, либо задачи/проекты/предметные области, которыми хочешь уметь заниматься, а не условную лычку мидла или сеньора.
>>2207360 Я программирую на языке жопаджава, в котором и так многое стандартизировано, потому что один прикладным языком весь мир не ограничен. Например, работа с ФС для JVM регламентирована стандартами окружения, в котором она запущена. Поэтому неочевидность несоответствия каким-то общепринятым стандартам - это вполне себе причина для неожиданных ошибок в коде.
Есть 2 пк. Нужно иметь возможность кодить сидя за обоими. Для этого можно юзать git. Но вот незадача, удалять коммиты с remote сервака не принято. Можно коммитить проект в нерабочем состоянии, но не хочется устраивать там срач, вдруг показывать придётся. Как выкручиваться?
>>2207614 Если нет цели представиться (недо)фулстеком, а хочется потыкать что-то для себя, так чтоб не голый сваггер, можно много чего придумать. Да хоть декстоп клиент к своему рест-апи сделать.
Я добавил зависимость в POM, вылезла какая то ошибка что он там чето не может, ну хуй с ним, я эту зависимость удалил, и теперь этот ебучий мавен не собирает приложение с ошибкой Could not transfer artifact "зависимость" from/to nexus
НО БЛЯДЬ УДАЛИЛ ЭТУ ЗАВИСИМОСТЬ СУКА, КАКОГО ХУЯ И ГЛАВНОЕ ОТКУДА ОН БЕРЕТ ИНФУ, ЧТО ОН ТАМ ЧЕ-ТО НЕ МОЖЕТ СДЕЛАТЬ С ЭТОЙ ЗАВИСИОМСТЬЮ, КОТОРОЙ СУКА НЕТ В ЭТОМ ЕБУЧЕМ POM.XML.
Подскажите кто сталкивался с такой задачей , пожалуйста. Как формулы распозновать? Парсер логических выражений я написал , но толку от него мало потому что на вход не подаются числовые значения. Вопрос в том , как парсить эти выражение на наличия аксиом. Я думаю что можно исходное выражение парсить , пока оно не сократиться до адекватных размеров и там уже перебором решать. Но не понимаю как это сделать , ведь названия переменных в исходных выражениях могут быть рандомными.
>>2207933 >Вопрос в том , как парсить эти выражение на наличия аксиом. Ты мешаешь в кучу, 2 несвязанных вещи: 1. Парсить надо по грамматике - можно регулярками токенизировать, потом строить дерево синтаксического разбора, но если есть формальное описание синтаксиса лучше взять antrl и сделать нормальный парсер. 2. После того как распарсил АСТ - уже начинаешь вычислять, вот твои аксиомы и пригодятся.
>>2207970 Мой парсер может распарсить по грамматике и посчитать выражение если заменить все на 1 и 0. Но я не понимаю как сократить выражение , если оно содержит в себе аксиомы. >можно регулярками токенизировать Шо это значит.
>>2207997 >Мой парсер может распарсить по грамматике Что твой парсер выдает как результат парсинга? Реальный парсер должен выдавать синтаксическое дерево. Подозреваю что твой, просто eval какой-то делает.
Почему или зачем хибер в jpa.show-sql=true(это только в логах или как?) добавляет какие-то цифры к именам колонок: >Hibernate: select document0_.id as id1_0_, document0_.name as name2_0_ from document document0_
Скоро выхожу на первую работу. Проект - легаси, контора в которую я устроюсь уже третья или четвертая, кто поддерживает проект. И к софтине пользователь предявляет много новых требований. Особенно по интеграции. Расскажите что это означает для джуна. Особенно в условиях того, что штат небольшой.
>>2208755 >Может там просто долбоебы бенчмарки готовили? А может наоборот профессионалы, которые знают как написать тест чтобы CLR был топчег, а JVM наоборот отстой. Например достаточно создавать кучу мелких объектов в JVM и использовать value type в .Net - и вуаля, JVM тормозит на GC а .Net на коне. Или использовать в JVM BigDecimal, а в .Net - Decimal и делать много вычислений.
Была такая утилита java, которая позволяла писать код прямо в командной строке и там же его выполнять. Например, пишешь out.println(5==6) и на экран выводится false, вроде того. Как она называется?
>>2208266 Мой парсер численный ответ выдает. Скобки он тоже понимает. Порядок выполнения вроде бы тоже. Сори за тупые вопросы, но eval это что ? А как он это дерево выдает ? Я делаю методом рекурсивного спуска его мне собсна и показывали на лекции, тока написанного на Си
Подскажите, пожалуйста, как в Spring Boot в теле принимать массив? Представим что есть класс SomeData, который внутри содержит строковый массив: @Data public class SomeData { private Sttring words[]; } Контроллер: @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE) public SomeData doIt(@RequestBody SomeData object) { return object; } В итоге передаю Json следующий через постман: { words: ["двачер", "тяночка", "Тони", "лайф"] } Но потом все валится с ошибками, т.к. массив в итоге остаётся null. Как правильно передавать массив и принимать их со стороны Spring Boot? Может быть в Spring Boot что-то ещё дополнительно надо описать, чтобы он принимал массивы?
>>2209353 Класс ReentrantLock, реализующий интерфейс Lock, также, как и synchronized, обеспечивает многопоточность, но имеет дополнительные возможности, связанные с опросом о блокировании (lock polling), ожиданием блокирования в течение определенного времени и прерыванием ожидания блокировки. Кроме того, ReentrantLock предлагает гораздо более высокую эффективность функционирования в условиях жесткой состязательности. Другими словами, когда несколько потоков пытаются получить доступ к совместно используемому ресурсу, виртуальной машине JVM потребуется меньше времени на установление очередности потоков и больше времени на ее выполнение.
В переводе reentrant может означать повторно используемый (повторный вход). Что может означать блокировка с повторным входом? Это учет количества получения определенных блокировок. Т.е. один и тот же поток повторно получает одну и ту же блокировку. Но для того, чтобы реально разблокировать необходимо уже будет два раза снять блокировку. Это аналогично использованию synchronized; если поток повторно входит в синхронный блок, защищенный монитором, то блокировка не будет снята при выходе потока из второго (или последующего) блока synchronized, блокировка будет снята только когда поток выйдет из первого блока synchronized, в который он вошел под защитой монитора.
Одним из интересных методов интерфейса Lock и его реализации ReentrantLock является запрос блокировки с возможностью прерывания процесса ожидания. Т.е. если поток запрашивает блокировку методом lockInterruptibly() и не получает ее сразу же, то переходит в процесс ожидания. Методом interrupt работу потока можно прервать. Тогда ожидающий блокировки поток просыпается, и генерируется исключительная ситуация InterruptedException. После этого попыток доступа к защищенному ресурсу (получения блокировок) не делается и освобождать блокировку не требуется.
>>2209448 Разные есть мнения на этот счет. Работать нормально будет и то, и то. Хазелкаст получше в основном тем, что его удобно встраивать, а редис это всегда отдельный сервис, дополнительная devops-нагрузка
>>2209135 >Я делаю методом рекурсивного спуска Не уверен, как его тут применить. Я бы просто взял ANTLR и сгенерировал парсер, для таких булевых выражения она должна быть несложной, а потом уже можно пройтись по дереву делая замены для правил которые попадают под аксиомы Начать можно с этого примера https://stackoverflow.com/questions/30976962/nested-boolean-expression-parser-using-antlr вначале реализовать свою грамматику, заимплетентить EvalVisitor без аксиом, потом добавить замену аксиом.
SimpleJpaRepository это ведь и есть то, что выполняет волшебные методы из JpaRepository? Оно на критерии написано. А много где прям нелюбовь к критерии встречал.
Читаю джуновские вакансии и вижу дохуя таких, где нужно писать тесты. Стоит ли на них ходить? Боюсь, что там нихуя полезного не получу, только заклеймят как вечного тестописателя и придётся до пенсии только этим и заниматься.
>>2209931 Типа так и пишут, что ты только тесты будешь писать за другими, а больше мы тебе ни к чему не подпустим? Мне кажется, даже если так и есть, то в этом в вакансиях не признаются.
>>2209931 >>2209935 Признаются, если вакансия называется типа "Автоматизатор ручного тестирования" и в обязанностях "Писать автотесты". Перекатиться в нормальную разработку потом да, будет труднее. Есть такой сиереотип, что у автоматизаторов квалификация ниже и кодить они умеют хуже, и поэтому при переходе на другой проект, услышав, что ты раньше писал автотесты, могут захотеть тебя опять посадить за них. Часто даже бывает, что автоматизаторами становятся после обычных ручных тестировщиков, когда они начинают изучать кодинг.
Поясните, плес, как при имплементации классом каким-то классом интерфейса Clonable, и единственном вызове в методе клонирования super.clone(), оказываются скопированными поля наследника? Ведь у Object нет доступа к полям потомка? Там происходит что то с использованием рефлексии, или я просто что-то плохо понимаю? Как это срабатывает?
>>2210081 Я и так не использую, предпочитаю конструктор клонирования. Но, во-первых, я ковыряюсь в говнолегаси где это сделано, и все места там зарефакторить будет сложновато. Ну и в основном спрашиваю просто потому что бесит, когда что-то непонятно как работает, тем более в такой базе (хоть и мусорной)
>>2210079 >Там происходит что то с использованием рефлексии, или я просто что-то плохо понимаю? Как это срабатывает? Там не рефлексия, а нативный код JVM memcpy скорее всего. Но тебе на это пофиг, тебе надо знать какие эффекты есть для тебя: 1. Конструктор не вызывается. 2. Копируются все поля, для ссылок копируются только ссылки. 3. Поведение можно переопределить с помощью внезапно переопределения метода clone(). Т.е. ты можешь заменить клонирование на конструктор копирования хотя это и не рекомендуются.
>>2210176 Все эти свойства и особенности использования этого говна я знаю. Не знал только, как оно это умеет делать, думал что может упустил какие-то полезные умения джавы, относящиеся к "публичным" инструментам языка. Если оно работает чисто магически, то хуй с ним. Спасибо за ответ.
>>2210648 > soap с виндовым клиентом на жаба8 это сильно больно? Что "это"? Больно юзать SoapUI? Больно писать с нуля свой велосипедный аналог SoapUI? Больно писать клиентское приложение, работающее через SOAP?
>>2210678 Я сам пока не понял, что там. Может поддерживать клиент, может переписывать его на веб-морду. Явно нужно будет дописывать модули для сервера. Я вообще пока не знаю soap. 90% современных роликов это рест с spa-фреймворком. Нагуглил себе "мурзилок" и видосов. Сейчас буду вкушать. Пока выглядит сильно сложнее реста. Особенно хеловордный пример на spring.io, но там класс домена отсутствует в исходниках и генерируется с xml-ки. Это прикол соапа или еще откуда-то?
>>2210703 > класс домена отсутствует в исходниках и генерируется с xml-ки Соап в отличие от рест-жсонок типизированный, из-за чего системе-отправителю надо строго соответствовать контракту, понятному системе-получателю, описав не просто вложенные структуры и названия полей, но и типы, чтобы можно было провалидировать ещё до отправки. Переписывать все типы было бы сложно, поэтому обычно выгружают схему контракта в специальном формате и используют её на обеих сторонах. Схема - это описание типов в XSD и описание самого SOAP-сервиса в WSDL. Хотя подобное и в ресте иногда практикуют с OpenAPI/json schema.
>>2210943 Именно JAXB, не jax-b, он не имеет отношения к jax-ws. Это сериализатор/десериализатор между джава-объектами и XML (примерно как Jackson для JSON), но ещё есть jaxb-maven-plugin, который умеет генерировать джава-классы из XSD-схемы. JAX-WS - это оракловая спецификация API для серверов приложений, реализующих SOAP-сервисы на Java EE, просто стандарт. В Spring-WS этому стандарту не следуют, там свой подход.
>>2210957 Блядь, как же всего этого говна много. Ощущение, что я не очень скоро узнаю даже то насколько глубока кроличья нора. Не говоря уж до знания всех нужных штук.
>>2210969 Разобраться можно, если долго ежедневно ебаться с этой хуйнёй. Но глубоко понимать и не надо, достаточно только на том уровне, что нужен для решения текущих задач.
>>2210973 А для собеседований насколько глубоко нужно погружаться? Я проект пилю, но ощущение, что всё равно какую-нибудь редкую поебень могут спросить, до которой я не дошёл.
>>2210995 Единственная вакансия на hh по которой мне ответила херка на мой отклик это магнит, но на собес не позвала, ибо не знаком ни c jms, который нужен в вакансии, ни с кафкой. Резюме без опыта, с 2 крудами на гите. Написано - java, jdbc, spring mvc, spring data, hibernate, sql, rest, html/css/js, docker. Вот сейчас буду дальше в таком порядке: soap(ибо с этой штукой там вроде предлагают работу, но может обломаться в любой момент и даже если возьмут, то там походу такое, что лучше больше полугода не сидеть) потом nosql, месседжинг, секурити, микросервисы, облака. После каждой новой техи обновлять резюме, делать отклики на хх. Тут челик еще сказал делать отклики на сайтах крупных контор типа >сбер, телекомы, всякие галеры вроде нетсракера, ебама, ланита, крока, и прочей параши буду делать на след шаге. Глубоко дрочить ничего не собираюсь. Разве что джавакор подтянуть.
>>2210969 это описание методов запросов и ответов. А также структуры запросов и ответов. Вместо того чтобы юзать костыли типа сваггера или описание контрактов в вики - эта штука сама описывает все возможные запросы и все возможные структуры данных. Можно даже автоматом генерить сервисы и дто. Взял всдл, сгенерил по ней классы, юзаешь их. Элементарно. Что-то изменилось - взял новую всдл, сгенерил новые классы, идея сразу кидает ошибки что изменилось Гораздо удобнее и строже говнореста
Просто это как обычно, вначале зумерье кричало что XML тяжеловесный, а XML Schema сложная, SOAP вообще отстой, а мы сейчас обойдемся простым REST по шаблону /ресурс/айди/ и валидировать будем кодом на беке. Но потом на реальных проектах жилко пернуло, после того как API разрослось и сталу нужно отдавать его внешним заказчикам. До них наконец дошло, что было бы неплохо и формат запросов валидировать, и формальное описание сервисов иметь. В общем по второму кругу изобрели SOAP.
В гайд из шапки треда было бы неплохо добавить пару слов про ELK и MQ, они сейчас во всех вакансиях в том или ином виде присутствуют. Ещё про bpmn движки можно вспомнить, апишки для всяких gRPC с SOAP.
>>2211360 > ELK Специфично, не в каждом проекте нужно. > MQ Там и учить нечего. @СлушатьОчередь(очередьНейм) очередьСервис.отправить(очередьНейм, сообщение) А с остальным девопсы ебутся.
>>2211369 > ELK > Специфично, не в каждом проекте нужно. В той же мере, в какой кубер специфичен. И тем не менее, он упомянут. > MQ > Там и учить нечего. Неправда. Хотя зачастую чего-то сверх того, что ты описал, действительно не требуется.
>>2211440 >Аргументы? изначально предполагалось, что менеджер или топ будет сидеть такой и мышкой менять схемы бизнес-процессов в редакторе, и всё это будет загружаться и автоматически изменяться. Надежды не оправдались, топам не всралось изучать bmp редакторы и ебаться с багами и ограничениями. Им проще как и раньше описывать всё на бумаге и спускать четырёхглазым засерям по почте. А засерям не усрался bmp, им проще в коде поменять
>>2211670 Ну смари. Мне дали задание решить задачу по матлогике. Языки были : Java , Python , C , Kotlin. На каком языке я ее решил думаю понятно. И вот хуяк он вываливает системы теста. Я то думал как на тимусе будет или там какие то условия есть раз Java и Kotlin в списке. А нет нихуя, система тока через makefile принимает.
Ебать пацаны,за 6 часов я смог вывести данные из базы в vue.js. Ебать я гений. Уверен когда нужно будет вводить составные данные я отсосу,ну да похуй. Кто-нибудь знает годные туториалы?
Есть несколько разных типов бинов, условно Extractor, Processor, Writer. Есть один енум с типом источника. Для каждого типа источника создается свой бин каждого типа. Как мне в другом сервисе получить все бины трех типов, для каждого значения енума?
>>2211896 А в чём проблема то? Чем DI не устраивает?
Хуёво ТЗ поставил. У тебя 3 бина и енум, принимающий 3 значения? А в сервисе хочешь 3 бина получить? Тогда инжекти все три через конструктор и похуй на енум.
>>2211919 >Для каждого типа источника создается свой бин каждого типа
Enum1Extractor, Enum1Processor, Enum1Writer, Enum1Extractor... Я хочу их во первых объединить в одном классе типа Enum1Support, Enum2Support, а затем заинжектить в другой сервис в мапу <Enum, EnumSupport>.
>>2211896 >>2211919 Или у тебя только в рантайме станет известен источник, для которого будет персональный набор бинов? Инжекти сам енум и сделай в нём геттеры для бинов.
>>2211930 >Enum1Extractor, Enum1Processor, Enum1Writer, Enum1Extractor... >Я хочу их во первых объединить в одном классе типа Enum1Support, Enum2Support, а затем заинжектить в другой сервис в мапу <Enum, EnumSupport> В Enum1Support передаешь 3 бина Enum1Extractor, Enum1Processor, Enum1Writer, в Enum2Support - Enum2Extractor, Enum2Processor, Enum2Writer. По типам все разрулиться. Чтобы засунуть все в мапу в конструктор передаешь List<EnumSupport> спринг соберет в лист все бины которые реализуют этот тип.
>>2212011 >Я хочу чтобы саппорт-бины генерились автоматически Ты хочешь чтобы спринг за тебя бины генерил? Может еще и бизнес логику за тебя реализовать?
>а в мапу все автовайрилось по квалифаерам. У тебя каша в голове, попробуй вначале ту мапу описать, потом поймешь что это невозможно. <Enum, EnumSupport> - не описывает что должно быть ключом, что значением.
>>2212022 >Ты хочешь чтобы спринг за тебя бины генерил? Может еще и бизнес логику за тебя реализовать? Это две противоположные вещи. Да, бины он и так за меня генерит. ><Enum, EnumSupport> - не описывает что должно быть ключом, что значением. Ключом енум, значением бин, в который заавтовайрены другие бины с определенным квалифаером. Ты тупой?
Аноны, че по джаве читануть? Шилдт какая-то душная хуйня, на инглише лень ибо надо моск напраягать, ибо сука две задчачи сразу надо дрочить... надо чет на русском. Говорять Эккель норм, но он написан хуй знает когда ещё был да и перевод от Питера сраного, говно... Мне бы ченить от ДМК или Диалектики, какие годные книги для вкатуна? Курсы сразу нахуй, а в будущем хочу в андроид вкатиться, кстате инглиш норм, но если читаю то надо напрягаться.
>>2212035 >Да, бины он и так за меня генерит. Мамка твоя дебило генерит, а спринг генерирует только прокси.
>Ключом енум, значением бин, в который заавтовайрены другие бины с определенным квалифаером. Ебать ты даун! Как протрезвеешь, подумай если найдешь чем и скажи как по сигнатуре <Enum, EnumSupport> спринг должен понять, что надо в мапу вайрить.
Спринг вайрит типы, а не конкретные значения. Если ты такой тупой, что не можешь из List сделать Map то тебе надо идти в клининг менеджеры и не ебать тут мозг.
>>2212003 А я могу все собрать в jar пакет и просто через мэйк его вызывать ? Я просто вообще мэйкфайлы писать не умею. Увидел питоновский пример такого файла и охуел от краткости скажем так. Нельзя ли и jar так же ?
>>2212546 На заборах тоже много чего пишут. Не имеет значения, заменяет или нет. Сейчас работы на жабе больше, а если это когда-то станет не так, то к тому времени можно успеть переучиться.
>>2212118 >Шилдт какая-то душная хуйня Да ты охуэл штоли сука. Шилдт прекрасен. Наверни хэд-фёрст Сьерры и Бейтса. Там как раз для любителей унылого стендапа, которым серьезные дядьки скучна/сложна.
Сорян за оффтоп - не нашел в шапке доски. По каким ресурсам прокачаться в веб-технологиях? Есть какой-нибудь пиздатый труд-монография для полных дебилов? По тому как организовано общение клиентов и серверов, HTTP, всяким там запросам и ответам, HTML-ам и прочим CSS-ам, JSONам и т.п.? А то в мануале к этому треду висит "Вы должны уже шарить во всей паутине, не падать в обморок от слова Endpoint", а как это хоть немного прокачать не рассказано.
>>2212600 А что, можно как-то эффективно разрабатывать веб-приложения толком не понимая как оно все работает? Если все так не важно, то зачем же в шапке, на которую все слегка дрочат, указывается что шарить надо?
Кто-то пробовал подключать в качестве дата-сурса Firebird/Interbase к Intellij? Что-то не вижу такой опции. Может нужен какой-то плагин или что-то вроде этого?
>>2212642 Во первых в чем проблема дописать к справочнику бойлерплейт и выложить сорцы? Во вторых вкатыш сверху прямо сказал, что пошел по Шилдту, как по учебнику и в этой роли Шилдт душная хуйня, и в этом он прав. В третьих а нахуя такой унылый справочник нужен? У тебя есть справочник - дока называется.
>>2212651 Проблема в тебе. Совсем уже охуели, пряники гречневые. В олдскульных книгах всех рекомендуется код писать в блокноте без всяких ИДЕ и собирать/запускать из командной строки, а этим хлебушкам уже даже лень написать три строчки в тепличных условиях. Нахуй вообще его запускать? Ты что не веришь что тебе в книге правильный аутпут покажут? Посмотрел листинг, понял о чем в нем речь и погнал дальше.
>>2212724 лол. чувствуется запах программиста из говновуза. Нахуя код запускать вообще? Сиди и пиши его на листочке и дрочи на него. Программы пишутся же не для того, чтобы их запускать, а чтобы кусочки кода в голове прокручивать. И таким долбоебизмом только твой Шилдт занимается. Есть замечательный Хорстман с нормальным кодом, книжка по канкарренси с кодом, книга Лафоре по алгосам с кодом, книга по хиберу с кодом, книга спринг ин экшон с кодом. Одному Шилдту это нинужна. Зачем нужно такое говно, как шилдт, если это просто перепечатка доки?
>>2212737 Этот входильщик-в-ай-ти-из-мак-доналдса порвался, еще несите. Чуйку почини свою, дебс. Я не сказал что код писать не нужно, я сказал что непонимаю нахуя слово-в-слово переписывать или запускать скопипащенный код который в книге. Разницу чуешь?
>>2212752 А нахуя во всех нормальных книгах есть готовый код и все кроме шилдтодебила его выкладывают? Чтобы читатели запустили из книжки и посмотрели как работает, покрутили, поменяли пару переменных, дописали что-то, на сайдэффекты могли бы наткнуться, перешли в библиотечные классы через идеху и поняли, как работает код с данной языковой конструкцией/библиотекой? Ты лучше мне ответь нахуя нужна перепечатка доки.
>>2212805 Хорстман топ. Читал 11. 17 есть, это збс. А там с 11 есть что-то новое, кроме многострочек и свича нового? Свинг он зря не убрал из первого тома.
>>2212978 Нормально задачу сформулируй, а не "получить все комбинации 2^n". Или ты думаешь кто-то будет тут всматриваться в твой говнокод пытаясь понять что он делает, если заведомо известно что делает хуево?
>>2212978 >эта смесь регистра букв в аргументах X и x >эта транслитерация русского слова >отсутствие выравнивания >это получение результата через побочный эффект пиздец
>>2213355 Ну обосрешься и обосрешься, у тебя бесконечное колличество попыток, малой, только время теряешь на страхи свои. А по существу глянь на ютабе собеседования, те же вопросы и задают везде
>>2213364 Бесконечное количество попыток на что? Пока ни разу на собес не позвали даже. На ютабе глянул, там у людей даже с полугодовымопытом такую хуйню спрашивают, что я даже вопрос понять не могу.
>>2213446 А сколько тебе лет и какое образование? Меня вот не зовут, как я думаю, потому что я старый и с нерелевантным образованием. Какие кейворды написаны?
>>2213451 Лет за 30. Образование профильное. Мне кажется, что херки в первую очередь рассматривают студентов и выпускников профильных вузов. А стариков сразу в корзину.
>>2213464 А если образование профильное, то почему ты вкатываешься за 30 лет? Или ты на другом стеке работал? Для таких я думал тоже норм скидка, как и для выпускников/студентов старших курсов Я по глупости своей пошел не на айти, хотя хотел, а потом еще годы пытался работать по специальности, которую закончил. В сейчас вкатившиеся без образования убедили меня попробывать.
>>2213423 Оно приводит к утечке ресурсов ОС, а не памяти приложения. Система продолжает сопровождать и обслуживать то, на что ты уже утратил способ влиять (оно вышло из области видимости программы).
>>2213492 В формате увлечения лет в 30. Изучал джаву "просто так" для интереса, прогал микроконтроллеры на околоплюсах, ну и просто компьютер саенс в разных аспектах. Работать на джаве начал пару лет назад, но у меня специфическая область - попил своего рода "микросервисов" которые кое-что обрабатывают в базе данных и туда же скалдывают результаты. Понятное дело что это хуйня, так что понемногу изучаю Spring, потому что это и есть коммерческая джава по сути. Изучил джаву (кор включая стандартную либу), какой-никакой UI не ней, работу с БД, с некоторыми другими внешними вещами (это все легко разбирается). Побудило то что "обычные" профессии (я был инженер) - это как правило засилье тупости и беспомощности, люди там годами делают тупую хуйню по шаблонным рецептам, даже не задумываясь зачем это нужно и нужно ли вообще, как работает, и как может быть улучшено и автоматизировано. В целом на мой вкус энтерпрайз - это параша, как по мне гораздо более интересны какие-то более фундаментальные вещи, вроде ОС или движков каких-нибудь красивых технологий, вроде графических/физических/блокчейн/нейросети и вот это вот все. Надеюсь когда-нибудь туда съехать (если не сдохну раньше)
>>2213504 Да, но это не похоже на то как обычно на ней работают. Это скорее похоже на то как работают на каком-нибудь шарпе. Джава обычно используется на бэке в вебе. У меня совсем не так. Дело в том что я работаю в проекте где не было какой-то заранее готовой архитектуры и соответственно технологий, и мог пилить на чем угодно, что дало бы результат. Я стал юзать джаву потому что на ней больше всего умею и знаю.
>>2213507 Просто голую джаву с ее стандартной либой. Специфика того что надо делать - больше вычислительная а не КРУДовская. Для связи с БД просто JDBC без всяких гиберов. Это все конечно можно начать перетаскивать на Спринг (JavaEE вроде как более менее мертвая в сравнении со спрингом), но если я буду достаточно квалифицирован чтоб работать с такого уровня вещами на спринге полноценно - будет просто нецелосообразно работать там где я сейчас нахожусь, потому что стоят такие вещи гораздо больше, чем я здесь обхожусь своему работодателю. Это и есть ближайшая цель - подучить какие-то популярные мейнстримные технологии и вкатиться "по-настоящему"
>>2213513 Ну такое... всякое бывает. Иногда сравнительно сложное, вроде эволюционного алгоритма подбора коэффициентов функции оптимизации, или что-нибудь вроде "экспертной функции" вроде того какую машину наивогоднейше отправить по такому-то маршруту, с учетом ограничений и маршрута, и машины - ну типа там, у этой радиус поворота не позволит проехать там-то, а эта недостаточно проходима что пройти там-то (это как пример, просто задачи подобные)
>>2213517 тогда ты меня вообще не утешил. Звучит пострашнее всяких страшилок спрингистов про сложные валидации, огромные базы и интеграции с миллионом сервисов.
>>2213518 Ну почему же. Отличие от спринга в том, что там тебе нужно знать какой-то гигантский стек технологий разработанных ХЗ кем и ХЗ как работающих. В том случае, в который я попал, тебе ничего особо знать не нужно, кроме самой джавы с ее либой, ну и каких-то базовых вещей для межпрограммного взаимодействия (С БД, системой, какими-то типами ресурсов). А весь код, который тебе позволит абстрагировать предметную область и сделать нужные обработки, ты придумываешь и пишешь сам, соответственно хорошо его знаешь и всегда можешь адаптировать/допилить/перепилить под новые нужды. Хороший способ естественным путем дойти самому до всяких "паттернов проектирования", лол. Тут просто, как бэ, язык вторичен, главное идеи и понимание того что надо сделать. Язык просто твой супер-универсальный программируемый калькулятор с неограниченными возможностями.
>>2213538 Я не ебу, ес честно. Просто практически в кажом мануале по юзанью Autoclosable интерфейсов говорится именно это. Еще когда-то где-то читал, что у системы ограниченное количество дескрипторов разных предоставляемых клиентсому ПО ресурсов, так что если ты запустишь открытие потоков в каком-нибудь длинном цикле то они тупо могут закончиться. Это похоже на memory leak по смыслу, только в этом случае не освобождается не память до удаления на нее всех указателей, а ресурс системы, с которым процесс работает.
>>2213465 После вуза, сюрприз, ты тоже нахуй никому не нужен без опыта. Тогда не было засилья рекламы всяких курсов и я не знал, что нужно делать. Но зато тогда можно было на собес попасть даже с пустым резюме, где тебя как правило обсирали, хули ты ничего не умеешь. А теперь нужно дохуя всего знать, часов 500 пописать пет-проекты чтобы тебя соизволили пригласить на интервью.
>>2213580 >Просто практически в кажом мануале по юзанью Autoclosable интерфейсов говорится именно это Да, я тоже просмотрел десяток мануалов, и везде пишут одно и то же, не разъясняя почему.
>>2213703 Потому что это особенность операционной системы больше, чем самой джава-среды. Если ты хочешь прокачать джаву чтоб не думать об этом, можешь накатить ламбок, там есть аннотация которой ты можешь пометить любой вновь создаваемый ресурс, и лобок его утилизирует за тебя.
>>2213723 Я хочу прокачать джаву. Чтобы конструкцию try-with-resources переименовали в context manager, и чтобы с вместо try(...) использовалось ключевое слово using(...) или with(...).
>>2212296 >Увидел питоновский пример такого файла и охуел от краткости скажем так. Нельзя ли и jar так же ? Кстати, начиная с 12 JDK можно так же java MoiGovnokod.java в классе не должно быть никаких внешних зависимостей
>>2213423 >Каким именно образом незакрытый ресурс приводит к утечке памяти? Где висит та ссылка, которую не может убрать гц? Это касается нативной памяти не кучи и тех ресурсов которые ОС выделила твоему приложению например файловый дескриптор и кеши. Хорошая новость в том, что все стандартные классы реализуют финализацию. Плохая в том, что сторонние библиотеки могут этого не делать например тот же JACOB раньше забивал на это хуй.
У оракла в загрузках для виндоус есть jdk в виде архива, но инструкции по установке есть только для использования установщика. Этот установщик делает что-нибудь кроме распаковки архива и установки переменной path и java_home?
Че вы делаете, когда внутри метода сервиса че-то логируется, потом этот метод сервиса вызывается в другом методе сервиса в котором логируется почти то же самое?
Понимаю что платиноводебильный вопрос, но дайте пж туториал\вебинар\книгу для быстрого вката. Мне нужно простое веб приложение написать, я плюсы на достойном уровне знаю, так что нужно чтобы минимум говна было для новичков
>>2213215 Держи. Задачу то я решил , переменные нормально обозвал. Но когда 16 переменных выражении время исполнения за секунду все равно переваливает. Эх... Из за чего это может быть ? Парсер у меня самый дефолтный , на лексемы просто разбивает и потом обходит.
>>2214424 Охотно бы съебался в какую-нибудь системщину, или геймдев. Бизнес-автоматизация - это душное говно. Особенно если голая крудня без всяких алгоритмов обработки более-менее нетривиальных
>>2214437 Так это понятно. Там интереснее и сложнее. А про фронт интересно. Стать формошлепом после опыта крудомакакой с джавовским ооп головного мозга.
>>2214371 >Вкат в жабу Сейчас не 2015 год, у тебя есть превосходно отполированный дотнет и несущийся локомотив хайпскрипта, но нет надо жрать говно на допотопных технологиях
Форсер дотнета, вот ты тут срешь уже давно. Расскажи чем реально лучше дотнетовский стек для больших приложений, чем дефолтные java11/springBoot/springDataJpa/springSecurity?
Например я работаю с JDBC, создаю Connection и отключаю у него автокоммит. Все это, естественно, делается в try-catch. Есть ли разница между тем, когда соединение просто сломается и вылетит в catch, так и не выполнив коммита, и явным вызовом rollback у транзакции в блоке catch? Короче, какой смысл вызова rollback в catch-блоке? Это освобождает какие-то ресурсы БД или как? Но ведь соединение в любом случае сломалось и выбросило эксепшен. Просто если использовать try-with-resources то в блоке catch уже не виден пойнтер коннекшена.
>>2214485 Так при транзации ты не поломанное соединение обрабатывать должен тракетчами, а ошибки в бизнес логике во время транзации. И при ошибке в логике ты и ролбечишь.
>>2214490 Ну это понятно, но если например логика упадет с любым другим SQLException, и я попаду в catch, есть ли смысл делать откат транзакции? Или достаточно просто того, что до киммита уже и так никогда не дойдет? Просто эта механика как-то хреново согласуется с try-с-ресурсами - ведь из catch уже ничего нельзя сделать с коннекшеном. Либо надо внутри try-с-ресурсами где делается коннекшен делать вложенный try-catch вокруг логики и в нем в catch вызывать rollback, потому что там он все еще виден. Вот я и хочу понячть есть ли смысл городить такой пиздец, или можно просто забить на открытую транзакцию.
>>2214495 так при разрыве соединения там все ролбечится автоматически. По классике два вложенных трайкетча(обычно больше) - на внутреннем обрабатываешь ошибку логики и в его кетче ролбечишь, а на внешнем sql-ексепшоны.
>>2214513 Уже так и сделал, благодарю за содействие. Классический подход обдвачевавшегося долбоеба - сначала спроси, потом подумай и сам все пойми, потому что это вполне логично
Начал потихоньку подходить к секурити. Ну и хочу на google-oauth запилить проектик. Как всякие личные данные отделять с паролями/секретными токенами от гуглов, чтобы их на гит не складывать? В примерах они вместе совсем в application.yml лежат. Или лучше зарегать почту, которую не жалко и все данные для этой почты выкладывать на гит, чтобы оно работало?
>>2214437 >Бизнес-автоматизация - это душное говно по сравнению с системщиной тут рай. Логи, скриншоты, повторяемость, подробнейшая документация, исходные коды, бизнес-аналитики. В системщине у тебя даже логов не будет, а документация только редкие ндашные даташиты. Стековерфлоу тоже будет недоступно. А аппаратные ошибки, которые надо будет ловить на конкретном девайсе всякими осцилографами
Что такое блокировка с открытым доступом? "Если класс использует блокировку с открытым доступом, он позволяет клиентам выполнять последовательость вызовов методов атомарно — ценой потери гибкости".
>>2215945 Суть этого задания в отусе - поднять фронт отдельным серваком не на джаве на отдельном порту. Но если у тебя будет на разных портах работать фронт и бек - ты попадешь под cors ограничения. Я с эти столкнулся, когда вот этот хеловорд дописал: https://sysout.ru/spring-boot-postgresql-js-v-dosker/ Для преодоления этой проблемы используются реверс-прокси, вроде нгинкс(нормальный метод, но я спасовал, не захотел разбираться с натройками nginx) или отключение корса на сервере(как сделал я, плохой способ). Я бы не ебал мозги и никуда фронт пока не выносил.
А теперь серьёзный вопрос: Насколько важно знать докер для вкатуна? А брокеры сообщений? Или лучше потратить время на подготовку к вопросам про джава кор?
>>2216199 я так и не понял зачем нужен докер. В докере запускать базу? Зачем? Установил на рабочую машину и вот у тебя тестовая база. Остальное окружение всё-равно не поднять локально, надо деплоить на стенд. Конфиг докера одинаковый на все МИКРОСЕРВИСЫ на жабе, и как они там на стендах деплоятся я не знаю. Этим пердолики девопсы занимаются
>>2216474 >В случае, если переменная field будет не null, значение field будет считано из памяти дважды? В этих местах: "field == null" и "return field"? Если она не volatile то гарантий нет, но вероятнее всего 1.
>>2216315 > В докере запускать базу? Да > Зачем? Гугли testcontainers > Установил на рабочую машину и вот у тебя тестовая база. Неудобно create-drop для тестов > Остальное окружение всё-равно не поднять локально, надо деплоить на стенд. Редис, реббит, эластик хорошо поднимаются в докере > Конфиг докера одинаковый на все МИКРОСЕРВИСЫ на жабе, и как они там на стендах деплоятся я не знаю. Этим пердолики девопсы занимаются Докерфайлы обычно программисты пишут, т.к. только они знают, как их говно в конт собрать. Но в основном программисту докер нужен только для разработки
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html >The Super POM is Maven's default POM. All POMs extend the Super POM unless explicitly set, meaning the configuration specified in the Super POM is inherited by the POMs you created for your projects. >if the configuration details are not specified, Maven will use their defaults. В суперпоме указан modelVersion, однако в каждом своём поме всё равно приходится указывать это дерьмо, при том что оно не меняется с 2007 года. У них там свои представления о наследовании?
Почему в результате чистой установки он скачал maven-compiler-plugin восьмилетней давности, а теперь сам же ругается на старую джаву и ничего не может сканпилировать? И как теперь обновить эту хуйню. Так много вопросов и так мало ответов...
А бывают какие-то решения для генерации тестовой базы/скриптов? Ну вот 10 инсертов я там напишу сам. А если я хочу тестовую базу на 500 строчек в каждой таблице?
Подскажите нубину. Набросал код для передачи csv с фтп-комп-обработка-фтп, хочу переделать это в приложение, где мне лучше хранить объекты(данные от фтп(ip, login, pass))? В бд или какой конфиг делать? Сильно не стукайте
Препод в одной шараге посоветовал читать пик. Книжка 2008 года, серия дурацкая, да и про jsp в книге. Вообще стоит глубже знакомиться с сервлетами? Или мне хватит того, что есть такая черная коробка, которая реализует всю работу с хттп?
Сделать сервис агрегации агрегаторов такси. Необходимо реализовать общую архитектуру, коннекторы к конкретным агрегаторам можно реализовать на примере IWay или stub connector, но нужно сделать общий интерфейс Сервис должен реализовывать возможность поиска предложений по адресам(в т.ч. асинхронно), бронирования и отмены бронирования В качестве примера для имплементации можно взять API IWay
В тестовом задании необходимо использовать технологии и принципы указанные в вакансии: владение Java на уровне junior+; Spring/Spring Boot, Hibernate, SQL работа с XML, XSD, XSLT; желательно: gRPC, PostgreSQL, Kafka, Docker;
>>2216903 но меня по факту взяли на работу на Java8, Spring4, PostgreSQL, Oracle, Liquibase, SOAP, XML, REST, JMS + какой-то велосипедный вебфронт, который поддерживать тоже мне.
>>2216743 >Вообще стоит глубже знакомиться с сервлетами? Нет, если ты не собираешься писать свой WEB framework. Напиши хеловорлд, с базовыми функциями куки, сессия, авторизация, посмотри как выглядят HTTP запросы и этого достаточно для практической работы.
>>2216988 Так и думал, что челик советовавший книжку по веб-технологиям 15-летней давности и тем более с jsp неправ не только в этом. >хеловорлд, с базовыми функциями куки, сессия, авторизация, посмотри как выглядят HTTP запросы это я делал перед спрингом, правда авторизацию не трогал. Потратил вечер. Только пару гетов, пару постов и что-то одно с сессией. Но сейчас я так и не знаю, (хотя по спригну уже много читал/смотрел, писал несколько петов) где спринг соединяется с томкатом/ другими контейнерами сервлетов.
Как в cmd запустить java не из корневой папки проекта? javac .\src\main\java\govno\FirstProject\Dog.java java .\src\main\java\govno.FirstProject.Dog Первая команда выполняется, а вторая - нет. Полная\частичная замена точек на бекслеши не помогает, всё равно ClassNotFoundException. В собаке.java указан package govno.FirstPrjoect;
>>2217659 Расскажи поподробнее? Я полузуюсь пизженной ИДЕ-шкой, и мне это иногда не нравится >белсофтовсий ждк, типа даже для коммерции бесплатно Не совсем понимаю при чем тут ЖДК, мы же об ИДЕ, она вообще может быть любая подключена, и в дефолт-поставку жид-брейнса входит опен-ЖДК из коробки
Помогите пж. Задача такая. В таблице Employee есть сущность с полями firstname, lastname и midllname. Вернуть json класса emoloyee , где все три выше перечисленных поля сложены в объект класса FullName. Как мне это сделать используя JPA. Вот как связи расставил , что писать над FulName хз
>>2218405 И причем тут это? Если я через рест контроллер возвращаю объект он его сам в json превращает и возвращает в теле ответа. Мне нужен вот такой вывод employee. { "id": 7839, "fullName": { "firstName": "JOHN", "lastName": "KING", "middleName": "MARIA" }, "position": "PRESIDENT", "hired": "1981-11-17", "salary": 5000.00000, "manager": null, "department": null }
>>2218405 Знаю , я решил уже эту задачу через него. Теперь через спринг дату надо
>>2218658 Через jpa репозиторий , который через аннотации @Entity ищет сущности в таблице. На скрине , который скинул он никак не получается , потому что поля FullName нету в таблице. И надо как то заставить засунуть три поля в 1 объект засунуть.
>>2218660 На скрине сущность называется EmployeeEntity. Это то, что лежит в бд. Из контроллера надо возвращать объект другого класса. При его создании и надо склеивать три поля в одно. Нахуй ебаться с этой хуйней на уровне репозиториев?
>>2218718 >Зачем тогда вообще юзать хибернет До тебя начинает доходить... >Но имхо это лютейший костыль Разные классы для сущностей и для представления - индастри стандарт.
Пишу на работе хуйню на спринг буте, которая читает очередь из rabbitMq, в настройках можно задать количество тредов, которые аппликация одновременно будет обрабатывать, я просто рандомной выбрал 10, и так оно и работает. Вроде всё норм, но хочется понять, как вообще определить оптимальное их количество. Как-то посчитать это можно ?
Я не умею гуглить помогите. Я хочу получать погоду с гис метео через веб клиент,они дают токен для подключения. Как мне к нему подключиться? Сколько я не гуглил выходит какая-то хуйня,обзор веб клиента. Спасите,дайте нормальные гайды
Почему на интервью часто спрашивают о нововведениях java8, а по другим версиям не спрашивают? Java 8 самая популярная и более новые не использкют широко? Или потому что в других версиях не такие значимые изменения?
>>2219346 Потому что в ней добавили механизмы, качественно изменившие разработку на джава, а именно лямбда-выражения, на котором основан еще один важный фреймворк - Stream API. Большинство же нововведений дальнейших версий - это какая-то косметическая хрень или не получившие широкого распространения фичи. Есть конечно потенциально полезные вещи в последних изменениях, например рекорды, но они вроде пока что в тестовом режиме еще
>>2219134 Анончеки, что в спринге надо уметь делать? Мне дали тз ебнутую какую-то, типа написать структура университета. Я ахуел с колличества всего, надо пилить дохуя сущностей в виде уроков, расписаний уроков, преподавателей, студентов, админа, админки и прочего прочего. И это на джуна сраного. Это везде так? 2 года назад мне нужно было сервис обработки JSON сделать и все.. А тут блять целая структура.
Очень по разному. Мне в одном месте дали >>2216748 говно. В другом нужно было 2 таблички сделать и по одной из них искать/фильтровать, чуть сложнее, чем тестовое от райфа на стажера. Сегодня прислали еще: Реализовать на языке программирования Java Rest API для картотеки супергероев Marvel. Необходимо реализовать 1) Базовые API методы https://developer.marvel.com · GET /v1/public/characters · GET /v1/public/characters/{characterId} · GET /v1/public/characters/{characterId}/comics · GET /v1/public/comics · GET /v1/public/comics/{comicId} · GET /v1/public/comics/{comicId}/characters 2) POST/PUT методы для наполнения базы/файлов c комиксами и героями Обязательные требования: 1) Постраничная загрузка, сортировка, фильтрация для запросов, возвращающих списки 2) Работа с изображениями (загрузка, отображение) 3) Адекватные ошибки в ответе. Например: a. 404 если не найден персонаж b. 400 если запрос не прошёл валидацию 4) Документирование API (например, через Swagger) Допущения: 1) Формат запросов и ответов может быть упрощён по сравнению с Marvel (оставлены только базовые поля) 2) На первом этапе можно не реализовывать проверку токена безопасности Требования к инструментам: 1. Язык программирования – Java 2. Сборка – Gradle/Maven 3. Исходный код должен быть опубликован на Github/Gitlab/Bitbucket 4. (Крайне желательно) использование Spring/Spring Boot 5. (Желательно) использование базы данных. Например Mongo 6. (Совсем здорово) использование docker Срок выполнения: две недели.
Планируются в джава out-параметры как в божественном шарпе? Просто уже доебало, когда надо вернуть какой-то еще стейт из метода, помимо основного output-а.
>>2219496 Это выглядит уёбищно. Вообще идеально было бы иметь какой-то механизм языка, позволяющий множественный аутпут, с разбором по индексам например. При этом дефолтный вывод бы был с нулевым индексом либо просто без индекса, и он бы завершал исполнение. Если что-то еще не выведено на этот момент - не ебет, тогда выводится нулл или дефолтное значение для типа. Пишешь что-то вроде public {double, int, int} doSomething(){ return(1) 1; return 3.1415 } Есть языки умеющие в такое дерьмо?
>>2219497 >Это выглядит уёбищно. Уёбищно выглядят out переменные, вот это уёбищно. А named tuple выглядят отлично. Сразу ясно что на входе, что на выходе. Никаких side effects с тем, что у тебя локальная переменная поменяла значение после вызова.
>>2219505 И как блять ООП решает этот конкретный вопрос? Скорее ООП это стиль, который просто не приемлет такой семантики концептуально >>2219510 Named tuple это целый отдельный класс, который надо создать, сопроводить, насрать им в память и все такое. Лень хуярить всякие матрешки каждый раз когда тебе надо что-то такое сделать
>>2219634 Блять, это суррогат просто средствами ООП для решения проблемы, вот и все. Никто бы не стал заниматься такой хуйней если б для этого были более удобные и красивые средства
>>2219638 Ну я же не утверждаю что тот вариант, который я наверху высрал, красив и единственно возможен. Просто сказал что хотелось бы подобные вещи. >питон не имею чести его знать, к сожалению
>>2219585 >Named tuple это целый отдельный класс, который надо создать, сопроводить, насрать им в память и все такое. Лень хуярить всякие матрешки каждый раз когда тебе надо что-то такое сделать Надо разрешить тимлидам пиздить таких долбоёбов, которым лень создать record. А вот похерить читабельность кода всякими out переменными - это им не лень.
>>2219635 Tuple это и есть красивое и удобное средство, во всех приличных языках именно так и делают. Где-то можно и безымянный и именованый tuple создавать, где-то только именованные. Есть недоязыки, где не захотели вводить tuple, поэтому метод возвращает tuple, но его сразу наде деконструировать.
>>2219725 >Выучив все что в шапке можно претендовать на джуна? можно >И сколько это примерно займет? Астрономически дохуя Но джуном можно быть с гораздо меньшим багажом
>>2219725 Смотря какой у тебя бэкграунд. Если ты не знаешь чем integer отличается от boolean, как возможно такое что x = x + 1 (ведь на уроке математики за такое пиздят указкой по ебалу), и думаешь что "байт" это когда ты задираешь кого-то на двачах чтоб потроллить, то наверное и 4-5 лет будет маловато. Если уже и так знаешь процедурщину, особенно около-Сишную, есть понимание как вообще (и где) компьютер хранит и обрабатывает данные, что такое БД и как с ним разговаривать, и если вообще склонен к аналитическому мышлению, то может от года до двух.
Есть ли тут бывшие 1Сники. Интересует, как у вас ЗП поменялась и через какое время, если вы уже были опытными разработчиками в 1С с нормальным стажем (у меня 4 года стажа + бэкграунд в виде айтишной вышки, в течение которой я на разном кодил, но базовое знание синтаксиса и каких-то элементов стандартной библиотеки эт сегодня вообще нихуя не значит, насколько я понимаю, там весь стек надо знать со смежными технологиями и фремворки).
Если мне тут почти 200к платят, (но иногда и больше выходит, так как я сижу на окладе + ещё во франче подрабатываю в свободное время и закрываю какие-то часы), то я предполагаю, что на jav'e первый год придётся снова поесть на тыс 50 ?
И какие курсы ещё норм ? Я пока думаю между OTUS'ом и Хекслетом. Но вроде на Хекслете по Jav'e не так много инфы. На ОТУСе есть полная профа с нуля.
Хочу накопить денег, уволиться и пол года заниматься только самообразованием, а потом переехать со своей хуйни в Дс/Дс2, где есть вакансии джависта на джунские/стажёрские позиции.
я ещё думал про C#, в частности asp.net, но по этой ёбе вакансий мало и материалов для обучения тоже с гулькин нос относительно того, что есть на Джабе
>>2219758 П.С. Ещё хотел спросить. Убунту надо же накатывать хватит ли wsl виндовской?, если Джавой заниматься буду ? И я плохо представляю, как выгглядит erp-система на Джаве. Там что через веб-интерфейс всё ? То есть клиент на стандартном веб-стеке описывается, его тоже надо знать ? Тут декстоп приложения делаются или уже моветон ?
>>2219758 >со своей хуйни в Дс/Дс2 А где ты зарабатываешь 200к вне дс/дс2? Хз, стоит вообще щемиться с такой зарплаты? Мне в твоей ситуации западло былобы только то, что это 1С - довольно контуженный язык, еще и встроенный в какую-то среду специфическую. Но так ли это важно?
>>2219761 >Убунту надо же накатывать Куда накатывать? Можешь спокойно сидеть на винде. Джава позиционируется как вообще кроссплатформенная на уровне самих откомпиленных файлов. То есть скомпилив джарник на винде ты его сможешь запустить на маке и линухе и получить тот же (теоретически) результат >erp-система на Джаве О чем ты? У джавы нет никакой среды, куда она встроена (вроде вашего 1С или какой-нибудь СУБД с т.з. SQL). Она сама по себе, программирование ведется в IDE, все это компилится и деплоится на сервак или еще куда. Может конечно ты имеешь ввиду фреймворки. Если так, то это тоже безинтерфейсное все. Это просто заранее откомпиленный комплекс программного кода, служащий определенным задачам (как правило это Spring) >Там что через веб-интерфейс всё ? Джава отвечает за бекэнд только ка парвило, то есть тебя вообще не волнует особо как данные будут отображены. конечно на практике обычно морда вебовская >Тут декстоп приложения делаются или уже моветон ? Делаются, но уже моветон, лол. Это не ниша языка. Но если очень хочется то пожалуйста - напедалить какую-нибудь кнопкожалку на десктоп - не проблема.
>>2219766 >А где ты зарабатываешь 200к вне дс/дс2? Владивосток. Но я работаю оч много. При 8часовом рабочем дне дефолтном - это было бы 150к. Ну в ДСе под 200 было бы с нормальными условиями.
Но в 1Се верхний предел это эти самые 200к. Максимум 250. Дальше уже всё, потолок стеклянный почти не разрушается, завязанность на СНГ, локальный стек, отсутствие best practise, которые используются во всём мире (ну процедурный стиль в 21 году ещё, архитектурно платформа устарела на лет 20), жидовская фирма, которая документацию продаёт за далары и садит клиентов на инглу лицензий, грязь, блядство и гавно. Я даж баг репорт в фирму 1С не моггу отправить, так как там кучу бюрокартии. Я не хочу тут оставаться. Есть опасения, что сегмент 1Ски начнёт постепенно оттесняться. Вот, кстати, CRM сеггмент у неё уже отжали. И могут дальше пойти отжимать. Понятно, что буха и зарплата останется, но я не занимаюсь этим, да и там уже не совсем программирование.
>>2219770 >Читаешь бесплатное, воруешь у инфоцыган. Да у меня есть деньги. Почему нет. Пусть обучают ёпта. Вроде на ОТУСе по отзывам норм площадака, не наёбская.
>>2219681 >Где ты найдешь проекты на 16+ джаве? У нас уже идет тестовая миграция на 17. Я потестистил сборку и рантайм нашего проекта на 17-ой. Как только будет на уровне компании одобрено использование в проде, начнем миграцию.
>>2219726 Насколько мне известно, в jpa такой возможности нет. Но скорее всего, ты ее и так пойдешь в базу, чтобы проверить, существует ли автор с ид 88
>>2219736 >Если ты не знаешь чем integer отличается от boolean На самом деле вопрос гораздо глубже, чем кажется. В байткоде нет операция по работе с булевским типом и все операции с булевскими типами это операции с int. Есть только тип поля и параметров boolean.
>>2219787 Ну если она уже и вышла из тестов, один хуй это не значит, что на нее уже переехали много проектов. >А что тебе мешает обычный pojo сделать? Ничего, так и сделал. Просто иногда заебывает делать все эти обертки, когда уже все готово, и местами даже использовано в дургих методах, но вдруг выясняется что кое-какие порождаемые параллельно в том самом методе данные тоже нужны на выходе. Соответственно изволь потом подправить везде, где уже успел наделать вызовов.
>>2219803 Да там это было для образности сказано, что типа есть такое понятие как "тип данных" в программировании (по крайней мере, с развитой системой типов, как на жаве). Если уж говорить про "на самом деле", то вообще нет никаких типов - а все есть обычный байтодроч на уровне машинных кодов. А вся система типов это просто контроль над сохренением семантики операций.
>>2219806 Не совсем понял. Ведь таплы и out переменные такая же беда настигает. Если они расширяются, все норм. Если что-то выпиливается, то нужно все править
>>2220015 Не знаю. Сам задаюсь таким вопросом. У меня синдром неполноценности. У каждого адекватного 1Сника в какой-то период его карьеры возникает такой недуг. Ну ещё из рашки можно будет уехать, инглиш у меня норм
>>2219940 Таплы настигают (я так понимаю мы тут под ними подразумеваем что-то вроде параметризованного класса Tuple<T, V>), а вот out-переменные нет (ты можешь в любой момент запихнуть такую в аргументы, это никак не повлияет на output). Проблема с аутами в том, что это по сути программирование через побочные эффекты на члены класса, а это немного бесит - надо всегда учитывать, что у какой-то переменной в классе есть стейт, и он может оказаться в каком-то не том состоянии, которое ты ожидаешь.
Взяли работу на джава-легаси. Первое задание. Разобраться с одним подмодулем модуля по интеграции с соап-сервисом. Весь модуль - по сути соап-клиент + сервер для рест клиента. Подмодуль - именно соап-клиент. И написать подобный подмодуль для другого модуля по другой доменной модели. В модуле 200+ классов. Вызываются другие модули(во всем проекте - 30 мавен модулей в каждом около 5 подмодулей и 15к файлов). И этот модуль вызывается другими модулями. Код на смеси старого спринга и библиотек реализующих javaee. Код написан хуево, дао, репо и контроллеры часто названы сервисами(наверно есть что и похуже, я просто пока не дошел и плохо шарю). Документации нет. Я вообще не знаю соап. За первый день даже не смог найти точку входа. Кабан уже через 2 часа начал спрашивать разобрался ли я. С чего начать? Если меня уволят через 2-3 недели с записью в трудовой это плохо для резюме?
Когда-то где-то натыкался на инфу, что если нужно работать с картой, как просто с последовательностью, например при переборе в цикле, то лучше идти по ее EntrySet, типа это позволяет избежать доступа по ключу, который выполняется относительно долго. Сделал вот такой код чтоб это проверить, и вроде как результат показывает что все строго наоборот. Причем если перевернуть циклы (сначала отработать по Entry) то разница вообще становится огромной (показано на врезке внизу в консоли). Если раскомментировать вывод в консоль, чтоб исключить возможность что что-то там есть связанное с lazy-вычислениями, то разница практически отсутствует (при смене порядка вычислений, имею ввиду - во всех случаях второй проход раза в 1,5 быстрее, бОльшая часть времени уходит на вывод в консоль, там величины порядка миллиарда наносекунд) Вопрос: это я долбоеб, который что-то делает не так, или просто инфа про то что перебор по энтри-сер быстрее - фуфло?
>>2221022 >это я долбоеб, который что-то делает не так This!
Бенчмарки так не пишутся. У тебя нет ни прогрева, ни нескольких запусков, ни грамотной работы с возвращаемым значением. Берешь Мавен, создаешь из JMH архетайпа проект, в нем пишешь бенчмарк: - в инит методе заполняешь мапу рандомными данными - делаешь 2 метода один тестит первый тип цикла, другой второй тип - ебалу с вложенными мапами лучше выкинуть, ну или сделать 2 отдельных тестовых сценария - значение которое прочитал из мапы обязательно скидываешь в черную дыру - желательно написать параметризированный тест и проверить на разных размерах (10, 100, 1000б 1000000)
>>2221003 В этом нет смысла. Возврат int был принят в Си для последующего встраивания утилит в сценарии на shell-оболочке, чтобы можно было делать вывод об успешности выполнения каждого шага. В C++ это осталось для совместимости.
Java, во-первых, изначально не предполагала написания утилит для скриптов в каких-то оболочках (это нарушало бы кроссплатформенность), нацелившись на создание полностью своей экосистемы. И по этой причине ты передаёшь класс на исполнение не оболочке, а виртуальной машине. А там принцип коммуникации построен на объектах, любая ошибка — это, как правило, исключение со стектрейсом. Код возврата JVM нахуй не упал.
Ну а во-вторых, если тебе вдруг приспичит использовать Java для задач, традиционных для Си что само по себе не очень умный выбор, но мало ли, то у тебя есть System.exit(), куда ты можешь засунуть любой код возврата, какой хочешь.
>>2221175 Да это кусок реального рабочего проекта, поэтому там карта в карте, и небольшая выборка из примерно 50 энтри суммарно тоже по этой причине. Я понимаю что бенчмаркинг это довольно сложное дело, но все же по множеству запусков с перестановками выглядит так, будто энтри-сет медленнее. Данные там не рандомные, но точно разные (получины вычислениями кое-какой бизнес-логики). Энивей, я не собираюсь вливать говно в жопу с серьезным бенчмаркингом, раз уж оказалось что это тысячи наносекунд всего, но все же спросил вдруг кто знает что-нибудь на эту конкретную тему (доступ по ключу VS энтри-сет)
>>2221229 >по множеству запусков с перестановками выглядит так, будто энтри-сет медленнее У тебя сайдэффекты перевешивают, все эти множество запусков. Код написан в одном методе, а у JDK есть ограничения у JIT-а, он не всякий код из интерпретатора может заменить на скомпилированный. Метод довольно большой, почти наверняка есть ограничений на инлайнинг тупо один метод заинлайнился, а другой нет. Никак не используется возвращаемое значение - что там JIT выкинет - неизвестно.
>>2221313 >То есть ты считаешь что энтри сет быстрее работает? Я не знаю. Я написал бенч, сейчас закончит прогоняться узнаю. Подозреваю, что на маленьких мапах разница будет незаметна и выигрыш будет только на больших.
В середине прогона комп ушел в спячку, так что результаты для 1000 неточные. Но видно, что итерация по ключу чуть дольше, а keyvalue и value почти одно и то же.
Посоветуйте годный сайт с задачами на Stream API, чтобы много было и различной сложности, желательно на русском, если там еще и ответы есть или он проверяет твой код и говорит правильно или нет, то вообще супер. С меня как обычно
>>2221505 >>2221506 бдагодарю, анон. Я правда не особо понял где из этих трех вариантов энтри сет, и какой вообще есть третий вариант проитерироваться, но как я понял разница все равно не стоящая каких-то усилий.
Почему при запуске junit если classpath указать в параметрах запуска java, то он не видит тесты, а если указать тот же classpath в параметрах запуска самого junit, то тесты находятся?
>>2221764 Жабу специально под это и затачивают. Можно приводить сколько угодно разумных доводов против этого, но очень показательно, что в большинстве туториалов примеры пишут без импортов, и если не использовать иде с автоимпортом, приходится гуглить каждый класс. И хуй запомнишь эти импорты из-за всяких спрингов с десятью вложенными пакетами. Хочется писать в консольке и блокнотом - юзай сишку или питон, там нормально сделано.
Принимали на спринг, хоть и устаревший. Из спринга пока вижу spring orm поверх хибера и немного спрингкора с автовайрингом бинов. А веб на который меня посадили работает через javax.ws.rs.* аннотации. Это сильно хуево?
>>2221945 Консоли. Нахуя нужен сборщик, если у тебя одна-две зависимости? Ты напишешь две консольные команды один раз и они будут моментально выполняться каждый раз когда тебе это нужно, а мавен мало того что срёт в стдаут бесполезными простынями текста, так ещё и замедляет повторные компиляцию-запуск, которые приходится делать постоянно.
>>2222021 Это хибернейт и спринг такие, для них мейвен оправдан. Все остальные допы(jdbc, servlet, junit, javafx итп) подключаются буквально одним джарником.
>>2222563 Хорошо, что таких "продвинутых" большинство. Меня так подобрали грести без вышки за юный возраст, конкуренции даже не почувствовал зумер мидл
>>2222646 Ебал я столько говна учить, в джеесик куда проще и быстрее вкатиться. Буду попердывать за 150к пока ты доучивать очередную древнюю хуйню изжопы
>>2222563 Детекчу в тебе свиновыблядка из нуб-треда, который там усирается как он всех крутит на хую со своим CMS-фуллстеком за 70к. Поссал на всякий случай тебе на спину.
Аноны,все ли из вас начали свою карьеру на легаси ? Я вот думаю,с одной стороны это неплохая база,с другой стороны можно сразу начать хавать актуальные тенденции. Что думаете?
>>2222782 В легаси нет базы. Мало технических задач, тупо пилишь бизнес-логику на существующий платформе и стагнируешь. Вот в чём-то актуальном куда легче прокачать эту самую базу.
Почитал вакансии на hh и выглядит пиздецки сложно и для особенных, которые матан дрочат с детства. Или не все так хуево? Хотел вкатиться во фронт js, но подумал, что дроча будет примерно столько же, а зп в итоге в разы ниже
>>2222782 Устроился на первую работу. Там легаси, очень размашистое, плохо написанное и нет документации. И стек еще древний оказался. Сижу, копаюсь, реверс-инжинирингую. Не знаю, что может быть хуже.
>>2223071 Не, пишешь ты на обычной джаве. Просто в проекте будет уже столько абстракций, что практически вся техническая часть будет скрыта за готовыми обёртками, будто бизнес-фреймворк, для всего будут готовые сервисы, даже спринговве аннотации могут быть переопределены по той или иной причине. Ты знаешь, как этим пользоваться, но не знаешь, как оно работают и взаимодействуют со спрингом, всё уже придумано за тебя. Не чувствуешь экосистемы, да и не гуглишь ничего, тупо смотришь внутреннюю документацию. Можно было бы писать на любом другом языке и не заметить разницы, разве что синтаксис другой.
>>2223046 Ай ной дат фил, бро. Спустя пару недель уже вешаюсь и подумываю перекатиться в машоб или каки-нибудь алгоритмы. Уже даже скачал книжку по пайтону.
>>2223131 >перекатиться в машоб унылое дрочево параметров моделей
>>2223131 >каки-нибудь алгоритмы алгоритмы чего? алгоритмы очень мало где применяются
а вообще вся разработка сейчас ебаное говно ебаного говна, индустрии нужны крудошлепы в больших количествах, интересных технических задач хуй да нихуя.
На джаве есть проекты с микросервисами? Со всякими докерами-хуекерами, спрингбутом или до сих большинство пердолится с java ee и аппликейшон серверами вроде glassfish/jboss/wildfly?
>>2200385 >Мне интересно делать красявые графические приложения Так возьми Qt или Electron. Сейчас ГУИ на жабе уже давным давно мертв, свинг остался только в самом махровом легаси времени java 1.4, про которое уже мало кто вспомнит и JetBrains IDE, а javafx в принципе оказалась никому не нужна. Правда в джетбрейнсе решили сделать свой фреймвор jb-compose, посмотрим что из этого выйдет, но скорее всего ничего хорошего. Шарп может и хорош для ГУИ на винде, винформочки и впф сделаны неплохо, но вне винды они никак не используются, а MAUI не поддерживает линухи.
Десктопный гуи уже сдох как лет 10, если не больше, ковыряться в доисторическом говне мамонта сейчас нет смысла, нужно брать либо qt, либо электрон, все остальное сдохло по разным причинам.
>>2200229 Скала нахуй не нужна очевидно, хоть задумка и интересная была, но в последние 2-3 года желающих писать на скале все меньше становилось, в РФ наверное только в вертикалях яндекса и тинькоффе она еще попердывает, но в остальных местах ее либо на жабу заменили, либо на котлин.
>>2223146 А сколько их, новых проектов? Ну вот если я пойду в условное МЯСО/ритейл вроде Х5/утконоса (и что там еще из продуктовых компаний есть в РФ?), или всякие говногалеры по типу нетсракера, ебама, лохософта, ланита, крока, я с большей вероятностью попаду на Java EE 6/Glassfish и говнокопролиты, либо же на няшные микросервисы ну или на нормальный монолит, который потихоньку пилят на микросервисы и переводят на новые технологии?
>>2223137 Пока первая неделя прошла. Думаю месяца через три начну искать. Месяцев через 8 уйду, даже если не найду ничего. А может меня сам директор этой хуйни выгонит через 2 месяца, если я не начну шарашить новый функционал на этом же говне. Ведь там копать - не перекопать. Просто это первая работа и на другие места даже на собесы не звали. И меня предупредили, что легаси. Но я не думал, что все настолько плохо.
>>2223159 >На чём бы вы предпочли пердолить код, если бы ЗП всем платили бы одинаковую?
Да похуй на чем, нужно смотреть по задачам. Конечно в маняфантазиях я пишу ЙОБЫ от компиляторов до геометрических движков всяких CAD/CAM, от систем анализа трафика в realtime до распределенного отказоустойчивого хуйлоада, но в действительности мы все понимаем, кто есть кто.
Как быстро менять версию java в classpath? Мне админ сказал есть какая-то хрень, причем есть и на винде и на линуксе, но используется часто на линуксе. Но я забыл, как называется. Метки или как-то так.
>>2223154 1. Не всегда монолит хуже микросервисов. Нормальный не легаси монолит может быть даже проще в разработке, чем когда тебе надо последовательно сделать изменения в 10 микросервисах. А уж синхронизация состояний в 10 базах, это отдельное удовольствие. 2. Как правило в аутсорсерах проще сменить проект если не нравиться.
>>2223356 Про sdkman слышал от ютуберов, но это нужно все sdk через него ставить. А админ говорил про какую-то хрень для работы с уже установленными по обычному sdk.
>>2223372 >Несмотря на то что SDKMAN! удобен для установки JDK, но он не помогает при автоматическом переключении между разными JDK при переходе от одного проекта к другому. Здесь нам поможет jEnv. >После того как вы установите несколько JDK, с помощью SDKMAN! или любыми другими способами, вам нужно будет добавить их в jEnv:
Здравствуйте, пирожочки! По каким лучше книгам/ресурсам изучать Spring/Spring Boot? Я закончил с Java Core и теперь есть огромное желание перейти и углубиться в Spring. Подойдет ли книга Spring Boot 2. Лучшие практики для профессионалов? До этого смотрел на ютубе курс по Spring от Наиля Алишева и делал Rest Api CRUD сервис магазина домашних животных, который создавал объекты в бд, обновлял их, удалял и получал объекты из БД
Здравствуйте, пирожочки! По каким лучше книгам/ресурсам изучать Spring/Spring Boot? Я закончил с Java Core и теперь есть огромное желание перейти и углубиться в Spring. Подойдет ли книга Spring Boot 2. Лучшие практики для профессионалов? До этого смотрел на ютубе курс по Spring от Наиля Алишева и делал Rest Api CRUD сервис магазина домашних животных, который создавал объекты в бд, обновлял их, удалял и получал объекты из БД
Java подойдет в качестве первого яп? Даже если на работку в итоге не возьмут - я начну больше шарить в программировании в целом? Сейчас абсолютный ноль
>>2223997 не, просто прогаю на раб-оте по мелочи. но я недавно вкатился. в чем твой вопрос вообще? для вката подойдет любой ЯП, особенно массовый (то есть всякие брейнфаки и ассемблеры лучше не выбирать). Особенно если ты не будешь в нем замыкаться и почаще будешь интересоваться как то же самое делается в других ЯП, и вообще почему их так много и чем они разные.
>>2223380 У каждого микросервиса есть свои данные которые надо как-то хранить.
Например: один микросервис занимается учетом складких остатков, второй занимается заказами, третий отвечает за задания на комплектацию товаров на складе, пятый за трекинг заказов, шестой рассылает нотификации пользователю. И вот ты заказал дилдак и смазку: у тебя сервис заказов отправил запрос в сервис учетом складких остатков на бронирование дилдака и смазки. После подтверждения бронирования сервис заказов отправил запрос на комплектацию посылки в сервис комплектации. Когда сборщик начал комплектацию заказа, выяснилось что смазки нету у складских петровичей был веселый вечер и во первых тебе придется долбиться насухую, а во вторых надо обновлять состояние других сервисов: у складских остатков отмечать что дилдак продали, а смазку спиздили петровичи. У сервера заказов, надо отметить, что заказ будет выполнен частично и послать уведомление. В сервисе трекинга добавляем собранную посылку и включаем отслеживание. И шлем письмо с рекомендациями по изготовлению смазки из подручных средств.
И каждый пук в этой цепочке сопровождается изменениями в базе и надо это все делать надежным способом. Что делать если сделали 3 попытки послать запрос, но сервис по прежнему не доступен? Приходится либо в локальную базу записывать какой-то флаг и потом по расписанию пытаться послать этот запрос. Или слать нахер этот REST и переводить все на очереди, тогда у тебя возникает куча состояний, типа запрос на бронирование товара отправлен, запрос на бронирование товара подтвержден/отклонен и вопросов что делать на UI, что показывать покупателю.
А в монолите все просто: Ein Service - ein Datenbank - ein Transaktion.
>>2224322 Чел ты так увлекся кейсом со смазкой, что так и не объяснил зачем 10, кроме одной основной базы. Почему данные микросервисы не могут хранить в основной? Дорого и долго? А вот этот кейс про сохранение данных каждого микросервиса, несмотря на недоступность полного функционала всей приложухи он прямо такой популярный? Почему бы не хранить в инмемори базе, а потом все что не смогли отправить в основную базу через короткое время удалять?
>>2224421 >Почему данные микросервисы не могут хранить в основной? Дорого и долго? Потому что тогда теряется смысл микросервисов. Смысл микросервиса - это когда ты прячешь информацию о внутреннем состоянии за API, никто за пределами микросервиса не знает что там у тебя за база и как она устроена может там вообще нет ничего и микросервис ходит за данными в другие микросервисы. Это нужно для того, чтобы можно было спокойно менять внутренне устройство без изменения API. Раньше у тебя один сервис рассылал СМС и емайлы, а теперь ты их разделил и добавил голосовые звонки, но API остался прежний.
2 главных смысла использования единой базы это: контроль целостности на уровне базы foreign/unique key и прочее и возможность делать изменения в одной транзакции создаем заказ, бронируем складские остатки, создаем задание на сборку заказа.
Как правильно дебажить спринговый код? В смысле di-код. Я иду по вызовам методов а он вместо нужного класса идет в миллион спринговых оберток. Нужно для понимания работы говнокода без документации.
>>2224850 Только сегодня высралась очередная шарпоблядь, её уже потёрли. Но это хуйня по сравнению с ежедневной клоунадой до 500 постоа. Можно вообще не перекатывать, пока не будет самым последним тредом, а после переката всем писать с сажей.
Хорошо ли при написании тестов использовать генераторы случайных чисел, создаваемые в рантайме строки и тому подобный динамический контент? Или же тесты надо писать так, чтобы при взгляде на них было ясно видно, что передаётся в тестируемый метод, что должно вернуться и почему?
Soap я вообще не знаю, если чё А тут короче soap клиент нужно сделать. Через jax-ws, реализация cxf. Я нихуя вообще не понимаю. Как делать не сказали. Сказали вот код без документации, там есть другая интеграция по soap. Есть спецификация от разработчика сервиса на 180 страниц, 3/4 из которой разные xml внутри вордрвского файла. Читаю спецификацию для интеграции к сервису и нихуя не понимаю. Там пиздец, электронные подписи, асинхронность. Смотрю другой клиент-интеграцию для примера, а там тысяча классов. Все разнесено на 10 подмодулей и не очень ясно, как взаимодействует. Какие то классы генерированные, какие то. Как генерировать тоже не совсем понятно, cxf модулем, но как хз. Из доки cxf ничего не понятно. Ещё там откуда-то из какого то сервиса идёт шифровка и дешифровка сообщений. Я неделю потратил чтобы это узнать. Чё делать?
Насколько я понимаю Prepared Statement в JDBC, это такая фича которая позволяет вставлять вместо симпола-джокера (?) любое значение именно переменной. Насколько я понимаю, таким способом нельзя вставить что-то в "синтаксическую часть" запроса, например имя таблицы, атрибута или подобное? "SELECT FROM ? WHERE ? = ? " Есть ли какой-то безопасный способ такое делать?
>>2224925 >Хорошо ли при написании тестов использовать генераторы случайных чисел, создаваемые в рантайме строки и тому подобный динамический контент? Можнл, если не забывать граничные случаи. Т.е. у тебя есть тест с нулем, отрицательным и положительным значением, а потом тест десяти рандомных чисел. Ну и конечно не забыть записать что за случайные значение были, чтобы можно было воспроизвести. Но обычно такие тесты нужны, чтобы протестировать какой-то хитрый алгоритм, на предмет хитрых багов типа: не работает с числами которые одновременно делятся на 3, 5, 13. Если у тебя просто бизнеслогика взять число и записать его в базу - то нафиг не надо.
>>2225117 >Есть ли какой-то безопасный способ такое делать? Нет. Смысл Prepared Statement именно в том, чтобы никак нельзя было изменить изменить само выражение.
Если тебе надо делай 2 PS одно с одним условием, другой с другим.
>>2225427 Нативное приложение, вдруг реально на котлиняше запилили? Я не хочу работать в индустрии где все восхищенно хавают трешняк типа го, а про котлин за пределами андроида даже молодые разрабы не говорят
А что не так с шарпом? Я джавоблядь по работе, но тоже считаю что шарп нагибает джаву практически по всем параметрам как язык. Это что, типа нельзя тут говорить и за это меня забанят?
А кстати, что за история с этими кофемашинами? Какие есть реальные примеры бытовой техники, которые работают на джава, или пример тул-кита который можно купить и что-то на нем разработать на джава? Прост мне кажется это какой-то ебанизм же, в эту железяку должен быть встроен какой-то рантайм, что само по себе лютый проеб памяти и хардваре-ресурсов. Сколько чего видел или делал сам - это все прогается на плюсах в нативный код, и работает без всяких там осей и виртуальных машин.
>>2225724 Я смотрю, ты тоже любишь крайности, как тот анон с вопросами про докер. Обсуждение, как подключаться к постгресу из спринга и как в жабе юзвть вебсокеты имеют прямое отношение к сабжу. Вскукареки, что на шарпе овердохуялион вакансий, а жаба это кобол кобол кобол - тупой шитпост, и здесь ему не место, даже если бы это было правдой.
>>2225725 Насколько я понимаю, это реликт с времён, когда каждое устройство было на своей ОС и со своим набором команд. Типа намного легче было ораклу написать виртуальную машину под устройство, чем осваивать ньюансы C++ под каждый телефон, если речь про разработку игры на мобильный. Сейчас всё унифицированно и такой нужды нет. мимо ньюфаг
>>2225728 Что-то я очень сомневаюсь что когда-то вообще существовали тостеры, стиралки и кофемашины с собственными осями. Опять же, ОС не обязательно нужна чтоб поддерживать JVM на борту. ОС это по сути просто диспетчер пользовательских приложений. Например у меня старинная нокия умела в игрушки на джава, хотя это не был смарт, и ничего кроме прошивки в нем не было. >написать виртуальную машину под устройство, чем осваивать ньюансы C++ под каждый телефон А то что жвм все равно надо каким-то способом прикручивать к аппаратной части в каждом телефоне, ты видимо не подумал, да? По-моему весь этот концепт - просто типа такой трюк, который типа возможен, но нахуй никому не нужен. То есть действительно, имея кофе-машину на JVM со средствами ввода программ и их запуска, программист джава сможет написать для нее игру на дисплее, которая будет брать инпут от кнопок управления,.. но зачем? Ведь в 99,9% случаев все будут пользоваться заводской прошивкой, которую гораздо естественнее наговнокодить на плюсах, вкомпилировать в контроллер и порядочек.
Какие есть варианты тестировать рест апи от рандомного сервиса в интернете? Дёргать публичные гет это без проблем, а вот пост/пут это уже внесение изменений на сервере. Как можно это делать безопасно? Регать другой акаунт для этого не вариант.
>>2225795 Кнопочные телефоны, которые были распространены в нулевые, вполне похожи на кофеварки и стиралки тем, что тогда каждый производитель пилил свое железо и свою мини-ОС для своих телефонов. Это сейчас либо андроид, либо iOS и все работает на ARM, а тогда был такой зоопарк, в котором хуй разберешься. Теперь, понятное дело, все унифицировалось, что в телефонах, что во встраиваемой технике по большей части, так просто гораздо быстрее и дешевле вести разработку и проще нанимать новых людей к себе в компанию.
>>2225719 Ну шарп как язык явно неплох, наверное один из самых наполненных разными фичами и годных по дизайну. Жаба в этом плане отсталая. Другое дело - экосистема. ИМХО, для жабы больше всяких либ и фреймворков для бекенда написано от разных вендоров, а не только от MS, как в случае с шарпом.
>>2225959 В большинстве мест спринг основной фреймворк, и будет им оставаться еще очень долго, но работу в РФ на quarkus/micronaut/helidon/guice/vert.x можно уже сейчас найти, хоть ее и очень мало, к сожалению.
Как вы считаете, вот если мне сказали, что на этом проекте спринг. А из спринга там только dependency injection, да и на него иногда забивают и пользуются статическими методами. Меня обманули?
>>2226053 Потому что приходишь ты не на стек, а на предметную область. Конечно же, это у всех так, что читаешь талмуды типа pro spring, а потом из всего спринга юзаешь пять аннотаций.
>>2226059 Да нихуя, там например все по обычному, но просто без спринга во многих местах. Спринг даты нет, но есть хибер. Для реста вместо spring mvc - jax rs. И куча таких моментов, где спринг бы заебись смотрелся, даже в те времена, когда проект начинали. Мне сказали могу пользовать спринг, если уж очень хочу. Но для единообразия лучше не стоит.
Сениоры, нужна помощь. Есть один parent, внутри которого лежит чекстайл.хмл файлик. Как мне в дочернем мавен-проекте указать в плагине путь к этому файлу? И возможно ли это? Нагуглил что можно обращаться к пропертям парента через ${project.parent.property-name}, но либо у меня руки из жопы, либо эта хуйня не рабочая
>>2225734 Мокать ответы фейковыми данными, которые в точности как реальные ответы от сервиса. Но может выйти что мок работает, а валидация на сервисе провалена по воле Аллаха. По сути нужно в полуслепую переписать рест реализацию этого сервиса и надеяться что он работает именно так.
Читаю про тестирование, пишут что оно нужно, чтобы убедиться, что программа делает то, что должна делать, и не делает того, что не должна делать. Если мой калькулятор без видимых на то причин создаёт папку с:\говно\моча, то тестом найти её практически невозможно, и невозможно убедиться, что калькулятор\класс\метод не делает того, что он не должен делать. Это вызвало вопрос - почему нет способа запуска\объявления программы, которая по определению неспособна к произвольному изменению данных на жестком диске, обращениям по сети итп? Если я в джаве создаю объект и вызываю у него метод, то он при всём желании не сможет прочитать/изменить переменные, которыми я пользовался, но ему не передавал. А запуск приложения на пк - это всегда раздвинуть булки и надеяться, что ничего плохого не произойдёт. Хотя на мобильных устройствах с инкапсуляцией гораздо лучше. Это потому, что платформа - молодая, а пеки сотканы из легаси-говна? Вообще, можно ли запустить екзешник так, чтобы отображались все его попытки записи на жесткий диск?
>>2201166 >ошибка в дизайне языка нихуясебе у нас дизайнер языка в треде жаба пережила 17 версий и исключения ни разу толком не трунули - это как раз говорит о том что это одна из самых важных фич
>>2226508 >и не делает того, что не должна делать. А вот это не совсем правда, иногда бывают явно оговоренные вещи которые программа делать не должна, но обычно тестируют именно то, что программа должна делать. Проверить все случаи "не должна" невозможно.
>Это вызвало вопрос - почему нет способа запуска\объявления программы, которая по определению неспособна к произвольному изменению данных на жестком диске, обращениям по сети итп? Есть SecurityManager https://docs.oracle.com/javase/8/docs/api/java/lang/SecurityManager.html который умеет это контролировать, но его скоро выпилят к хуям https://openjdk.java.net/jeps/411 Более современное решение это Docker, он не запрещает ничего, но за его пределы можно выбраться только если явно разрешить это.
Почему мне вобычном консольном проекте пишет, что я не могу использовать аннотации? У меня ручное копирование массива, которое мне надо оставить, я хочу подавить этот ворнинг, но не могу.
>>2226705 >Почему мне вобычном консольном проекте пишет, что я не могу использовать аннотации? А текст ошибки скопировать не судьба? Но вангую что ты не в том месте лепишь аннотацию, @SuppressWarnings можно ставить на класс, поле, метод и объявление локальной переменной объявление и присваивание должно быть в одной строке.
>>2226818 >Текст ошибки буквально Annotations are not allowed here, как и написано в первом сообщении. Нет, дебилушка, текст ошибки аннотация не разрешена тут, а у тебя написано >пишет, что я не могу использовать аннотации Если ты не понимаешь в чем разница между этим двумя предложениями - то программирование это не твое это я серьезно.
Ну и в твоем случае аннотацию надо ставить на метод.
>>2226503 >Написан на современном стеке - будущем стандарте индустрии Ага, Котлин уже стал стандартом индустрии, осталось Skia стать стандартом и вытеснить Electron и заживем! но это не точно
Возможно ли без использования JS создать веб приложение со встроенными гугл картами в темплейты. Не так что бы там 1 точка была или просто можно было карту двигать. А что бы у меня был массив точек в бд , которые можно было бы добавлять и удалять, и они все отображались на страничке. Направьте куда гуглить .
>>2226983 >даже самую последнюю, с шарпом/жсом/питоном/котлином Да хули сравнивать - програмил на джаве 8 лет и на котлине 2 года, один хуй задачки делать надо а не писюнами мерятся
Базара нет котлин лаконичный язык при условии что какой-нибудь порридж не начнет ебошить бесконечное количество экстеншенов или писать на нем код в стиле брейнфака.
Ты когда-нибудь пробовал понять чужой код написанный в функциональном стиле с помощью экстеншенов чтобы было МАКСИМАЛЬНО коротко. За такой PR при просмотре хочется яйца оторвать а тебе как тимлиду нужно его в продакшн пустить.
Потом вдруг в продакшене случается пиздос и нужно очень быстро понять где же бажина а ты час пытаешься прочитать 3 строчки на модном языке.
Если бы язык заставлял программера писать читаемый код это был бы лучший язык.
>>2227006 Вот и не пускаешь а порридж тебе говорит что ты не оценил его прогрессивный соde style и вообще не любишь модный язык
А я люблю язык а вот хуйни не люблю
Ну и самое интересное это как автор пытается прочесть собственный код спустя пол года при тех же обстоятельствах - внезапный косяк на проде. Ох сколько раз уже это пережил
>>2227009 >>2227004 А кстати, можно ли в проект на джава в интеллидже начать невозбранно встраивать котлин-код? Я просто пилю собственные микросервисы на почти голой джаве, никому по сути ничего не должен по содержимому проекта, хоть на брейнфаке пиши. Думаю ради расширения знаний вкатиться. Это реально? мимо-макака
>>2227072 > if err != nil { > return err > } Некоторые местные шизики кайфуют от checked exceptions (которых, кстати, нет в шарпе), так что им и это должно понравиться.
Платиновый вопрос. Если я джун и пойду работать туда, где нету спринга, я смогу через годик претендовать на позицию мидла? Или это пустая трата времени и нужно сразу искать позицию, где работают с современным стеком, пускай и денег платят меньше?
>>2226836 Блять, понятно, что она тут (в месте копирования) не разрешена, а не на заборе, например, нахуй ты меня дизморалишь? Негде больше самоутвердиться? Клоун. Чем так отвечать, лучше бы просто ебало завалил.
Что над методом, мне уже ясно, неясно почему не над присвоением, что ты и не осилил объяснить.
>>2227137 Ну я понимаю, что там не столько хардскиллы имеют значение, сколько пройденные грабли. Но вот сейчас читал статью на хабре про то, что синьор должен иметь опыт разработки ТЫРПРАЙЗ приложений. А если я буду несколько другие задачи выполнять?
> В день большая часть программистов пишет приблизительно 10-12 строк кода, которые попадают в итоговый проект. Настоящие программисты 90% своего времени тратят на размышления и пробные запуски, чтобы найти лучший вариант программы.
Это рофл или как? Большинству программистов настолько нехуй делать или там огромное легаси, что чтобы что-то добавить/исправить надо весь день разбираться? При чем тут говорится про всех программистов, а не конкретно джавистов.
>>2227149 > там огромное легаси, что чтобы что-то добавить/исправить надо весь день разбираться? Не только. Большинство тасок, как правило, до конца не понятны, потому что упираются в предметную область, и ты большую часть времени продумываешь все варианты и граничные случаи. Уходит время на погружение в эту самую область, и если один разраб что-то не успел доделать, хотя оставалось немного, другому разрабу придётся разбираться с нуля, и потратит он намного больше времени. Ну и переписки с созвонами отнимают дохуя времени.
Помогите пожалуйста. Есть 2 времени в виде строки "HH:MM". Как их сложить/вычесть и получить опять строку "HH:MM"? Я уже совсем запутался стандартных классах даты и времени...
>>2227140 >Что над методом, мне уже ясно, неясно почему не над присвоением, что ты и не осилил объяснить. Жопоглазый, давай начнем с того, что не можешь прочесть ни то что тебе пишут >>2226760 >@SuppressWarnings можно ставить на класс, поле, метод и объявление локальной переменной объявление и присваивание должно быть в одной строке. ни документацию https://docs.oracle.com/javase/8/docs/api/java/lang/SuppressWarnings.html >@Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE}) Это места где эту аннотацию можно использовать, потому что так решили авторы джавы.
>нахуй ты меня дизморалишь? Негде больше самоутвердиться? Клоун. Чем так отвечать, лучше бы просто ебало завалил. Мы на дваче, тут не вытирают сопли. Я тебе все сказал еще первым постом. Не нравится? Пиздуй на курсы, там за твои бабки тебе будут и сопли вытирать и жопу целовать.
Можно ли стать норм джавистом, никогда не дроча литкоды и вообще не шарить в алгосах, дальше быстрой сортировки? Да и ту уже не помнишь. Вот знакомые мидл+ фронты и меньше меня знают и им норм. Но с джависта спрос другой. Развернуть дерево и с графами всякое делать точно придется? Просто я садился за алгосы несколько раз, меня быстро заебывло и я забивал. А по ощущениям с моими силами мне надо на литкод + учебник потратить месяца три минимум
>>2225113 Браток, только вернулся к этому вопросу. Посмотрел. А у меня идея так по дефолту настроена. Сегодня опять надо будет дебажить. Как скинуть миллион библиотечного кода и походить только по коду проекта?
>>2227355 Зарегал ещё хабру и суперджоб. Позвали на два собеса на удаленку и пропали. До 12 декабря думаю посижу. Я с этой работой слез с пособия. И если я уволюсь сейчас и получу только часть от оклада(а оклад треть того что кабан обещал), то не смогу заплатить за квартиру. Не думаю что кабан при расчете будет платить то что обещал, а не то что в договоре. Сегодня даже не копался в коде. Чтобы через дебагер ковыряться в реализации говна нужно нужно посылать запросы с фронта старого модуля, а там подписи и нужно поставить крипто про и крипто про плагин фаерофокс на машину с убунтой. Я не смог, админ меня сегодня послал на потом. Сижу читаю про асинхронный соап. Ибо в новом модуле будет и асинхронный. Причем хз как это реализовывать. То ли через jms, то ли нет. Jms я тоже соответствовенно не знаю.
>>2227658 И мне хотели в первый день поставить нетбинс и бивер. Но в итоге поставили ультимейт идею с ключом с моим степика. Мне кажется это самая трешовая работа на жабе эвар.
>>2227658 Жесть конешно. Я сам только вкатываюсь, до этого на пыхе пробовал кодить, но джава больше понравилась. После твоей истории даже ссыкотно как-то, неужто вот так прям бросят в огонь и делай что хочешь? Неужели им вообще пахую что будет с проектом? Что если ты накосячишь? Разве обычно не делают так, что вводят в курс дела, в курс стека и всё такое в первый месяц/неделю? Ну и джуну же еще приставляют синьора какого-нибудь, опять же, чтоб не накосячил. Неужели я настолько маняфантазёр? >>2227664 Лол. Сам сижу с ключом от степика, но никогда бы не подумал, что работодатель скажет мне юзать это. И правда зашквар, похоже реально попал к кабану какому-то. Сожалею.
>>2227710 Они сами нихуя не в курсе. Кабан урвал проект по связям пару месяцев назад. Кодить умеет три человека. Его зам, который руководит разработкой. Но разработка это 30% обязанностей зама. И два кодера. Один пилит фронт, другой другую интеграцию. Ещё два кодера уволились за месяц до моего прихода. Сроки скоро, конь не валялся.
>>2227742 Хз, наверное мобильная версия легче и лучше оптимизирована. У меня ноут так-то сильный: i5 7300HQ, 16gb ОЗУ, SSD 1gb, gtx 1060 max-Q. Всё летает, кроме этого треда.
>>2227748 У меня десктоп и5 4460, памяти столько же, видяха хужее. Ноль проблем с тредом. Ты чем-то засрал свой ноут. Может режим энергосбережения стоит.
Бляяя как меня заебал этот томкат. Почему я открываю один и тот же проект и каждый раз я вижу разную картину. То он мне по кд выдает 404 и ошибку The origin server did not find a current representation for the target resource or is not willing to disclose that one exists. То блять контроллеры не видит. ХОТЯ ПРОЕКТ ОДИН И ТОТ ЖЕ. Подскажите пожалуйста как это пофиксить.
Подскажите плез как шрифты подгрузить. Вижу вот такую шляпу , в css импорт шрифтов прописан. Если просто страничку открыть без приложухи то все отображается. Запускаю приложуху - крокозябры.
>>2227905 Дак я блять не про скрипты спрашиваю. Я юзаю темплейт резолвер. Я указал в конфиге где лежат ресурсы. Он мне все подтянул , все стили , все скрипты а шрифты заигнорил. Если запустить страницу вне джава проекта , просто открыть index.html все нормально.
Аноны , выручите . Джавы в вузе почти не было , и он сказал сделать задание. Может кто знает -------------------------------------------------------------- 1. Прочитать файл. Удалить дублирующиеся строки, указав в файле назначения количество удаленных дублирующихся строк.
2. Реализовать восстановление сжатой версии в полную. --------------------------------------------------------------
>>2228042 Знаки препинания в русском и большинстве других языков не отбиваются пробелами, пряник 1. Используй BufferReader, он позволяет построчно читать содержимое файлов. Считанную строку сразу же можно write в аутпут через BufferWriter, cоседние строки не сложно сравнивать через equals, если получается труе, то запись пропускается, и инкрементится какой-нибудь счетчик. Когда некст строка будет нулл, записываешь значение счетчика и закрываешь все это. 2. Сжатой версии чего во что? Пружину сжатую? Гондон наказанный воздухом? Если речь о сериализации-десериализации, то используются файловые потоки, схоже впрочем с тем что написано выше.
Хуйлоады на джаве есть? Как туда попасть? Хочу по хардкору упороться всякими распределенными отказоустойчивыми системами, хадупом, зоокипером и всяким таким.
>>2159705 (OP) Привет. Подскажите, что нужно знать среднестатистическому джуну, чтобы попасть на стажировку с возможным трудоустройством по джаве? Ну +-, в общих чертах кроме Java Core.
>>2227658 >То ли через jms, то ли нет По хорошему без провайдера типа JMS обойтись не получится так как ты будешь плодить потоки на каждый запрос. Как вариант организовать через локальную базу сервиса - пишешь в базу пришел такой-то запрос и после обработки маркеруешь его что ответил.
Есть аноны кто разобрался в модулях, и поюзал их в работе? Нахуй они вообще нужны? Какие задачи решают? Стоят того чтоб в них вкатываться или не тратить зря время?
раз уж зашла речь про Tomcat контейнер сервлетов, кто-то в курсе как он работает? Он неиронично создает пул из 50-100 потоков, после чего на каждый запрос выделяет поток из пула, а как только пул закончился, то кидает клиенту 500? В 2021 году это больше на постиронию похоже, скорее на какую-то лабу в универе, чем на что-то реально рабочее. Как же тогда пишут сервера на несколько десятков и сотен тысяч запросов в секунду? Если у нас на нашем томкате 1 запрос обрабатывается 1 секунду, то 50-100 запросов в секунду, это максимум, который можно выжать. Какие есть нормальные способы обрабатывать вплоть до 1М или 10М запросов в секунду? Как в >>2228441 >Гугл, Амазон, Букинг строят хуйлоады? Они несколько миллионов серверов закупили и на каждом крутят tomcat servlet container, каждый из которых обрабатывает по 50 запросов в секунду максимум? Как это работает?
>>2228504 > как только пул закончился, то кидает клиенту 500? Нет, запросы с открытыми соединениями тупо лежат в очереди, пока не появится свободный тред, тогда и обрабатываются. > ак же тогда пишут сервера на несколько десятков и сотен тысяч запросов в секунду? Поднимают дохуя нод, обмазывают кешами, автоматически масштабирующимися микросервисами, тяжёлые вычисления пишут на более быстрых языках.
>>2228504 На сервлетах с моделью поток на запрос жаба-мир не заканчивается. Например, если возьмешь spring webflux, будет там под капотом по дефолту неблокирующий netty, заточенный на тот самый хуллиард одновременных соединений. Хотя и на условном томкате не обязательно обрабатывать каждый запрос отдельным потоком.
Почему вообще при этом к 2021 все уже не выкинули давно томкаты? Потому что не все подряд амазоны, а потоков может быть не 50-100, а скорее 500. И тогда при твоих расчетах с запросом за секунду десяток томкатов дадут 5к в секунду. Гугл на планете один, а для твоего бизнеса хватит с запасом.
Я так понял, что большинство джава проектов до сих пор пишется в блокирующем стиле. А у меня острое желание писать исключительно неблокирующие сверхбыстрые легкие сервера. Мне нужно изучать Govno для этого? Я никогда не думал, что джава это старый отсталый язык, но вот именно то, что почти все пишется с блокировками, меня очень сильно огорчает.
Я так понял, что большинство джава проектов до сих пор пишется в блокирующем стиле. WebFlux не популярен и даже не занимает 30% от всех спринг проектов. А у меня острое желание писать исключительно неблокирующие сверхбыстрые сверхлегкие сервера. Мне нужно изучать Govno или node.js для этого? Я никогда не думал, что джава это старый отсталый язык, но вот именно то, что почти все пишется с блокировками, меня очень сильно огорчает.
>>2228546 >Потому что не все подряд амазоны, а потоков может быть не 50-100, а скорее 500. И тогда при твоих расчетах с запросом за секунду десяток томкатов дадут 5к в секунду. Гугл на планете один, а для твоего бизнеса хватит с запасом.
Я всегда думал, что жабу используют в сверхогромных энтерпрайзах, продуктами которых пользуются миллионы и миллиарды людей. Ну и думал, что почти вся джава это хуйлоады. А тут оказывается, что для большинства задач достаточно блокирующей модели? Как такое возможно? Разве даже у самого помойного интернет магазина не бывает нагрузки в 100-500к соединений в секунду? Я думал, что подобные сайты просто вымерли где-то в середине нулевых еще. Да и взять тот же сбер, который написан на дефолтном спринге чуть более, чем полностью. Там же миллионы людей ежесекундно переводят друг другу деньги и оплачивают покупки в интернетах. Неужели для этого тратятся охуллиарды на закупку серверов?
>>2228558 "Блокировки" серьёзных проблем не вызывают, системный планировщик задач не даст процессору простаивать и переключит ядро на другой поток, пока первый ждёт разблокировки. Проблема только одна - сам системный планировщик работает не так эффективно, как работал бы встроенный. Есть проект по впиливанию его в жабу, называется Project Loom. Ну и куча реактивных либ, там пиши без блокировок, сколько влезет. А энтерпрайз не обязательно огромный, очень часто это несколько тысяч внутренних пользователей. На реально нагруженных проектах, да, закупают больше серверов, но так делают независимо от стека технологий, там хоть на сишке с асинхронными либами пиши, многократного прироста производительности не увидишь.
>>2228558 > миллиарды людей >Да и взять тот же сбер Алё, миллиарды это вся планета. Сядь прикинь, даже если считать, что все взрослое население страны каждый день совершает штук по 5-10 переводов через сбер, сколько это в среднем операций в секунду. Получатся совсем не миллионы.
>>2228578 Скорее можно представить, что до 50 миллионов пользователей сбера в самый пиковый час переводят по 3 операции. 150 лямов операций в час это 42к операций в секунду. Думаю может быть даже суперпиковая минута в день зпхи, где и есть и овер 50к в секунду. Плюс там всяких юрлиц куча с их переводами.
То есть, можно в качестве аргумента можно передать FileDescriptor.in, и можно будет читать неблокирующе из STDIN. Вопрос только в том, что желательно бы сами данные из канала как-то прочитать. А как? Опять же, в недрах JDK нашел, что Channels.readWriteSelectableChannel возрващает не что иное, как ReadWriteChannelImpl. Этот класс унаследован от AbstractSelectableChannel и реализует интерфейс SelChImpl.
В AbstractSelectableChannel нет методов для чтения из channel в ByteBuffer, такой метод есть только у SocketChannel, что не мой случай.
Чо делать с этим всем? Есть варианты прочитать данные, которые вроде как в stdin находятся, но при этом запрятаны в класс, находящийся в глубинах стандартной либы джавы? Или лучше не ебать себе мозги этими NIO и просто педалить спрингбут?
>>2228547 > у меня острое желание писать исключительно неблокирующие сверхбыстрые легкие сервера. Reactor, quarkus, nio, netty, kotlin ktor и ещё пол сотни фреймворков. >>2228558 > Я никогда не думал, что джава это старый отсталый язык, но вот именно то, что почти все пишется с блокировками, меня очень сильно огорчает. У тебя есть возможность писать как угодно. > Я всегда думал, что жабу используют в сверхогромных энтерпрайзах, продуктами которых пользуются миллионы и миллиарды людей. Ну и думал, что почти вся джава это хуйлоады. А тут оказывается, что для большинства задач достаточно блокирующей модели? Как такое возможно? Когда маркетологи нассали в уши и не такое возможно. > Разве даже у самого помойного интернет магазина не бывает нагрузки в 100-500к соединений в секунду? Не бывает.
>>2228547 От того что у тебя в коде нет видимых блокировок не означает что их нет. Как ты собрался работать с любой базой данных без блокировок, их от тебя могут спрятать но это не значит что их не будет. "Без блокировок" смахивает на религиозные верования но скорей всего постичь блокировки просто слишком сложно для юного вкатывальщика
Стоит перед собесами на джуна на спринге учить секурити? Я его не знаю считай. Был один собес, там не спрашивали. Впереди ещё парочка. Не думаю что Джуна допустят до секурити, но все же, могут ли на собесе спросить?
>>2228897 > "Без блокировок" смахивает на религиозные верования Просто тренд последних лет, как микросервисное говно которое хорошо продавалось вайтишными курсами. Челу еще предстоит узнать блокирующие задачи могут быть и cpu bound и что все его миллиард запросов будут стоять в очереди и сосать хуй пока потоки из пула заняты long calculation задачами.
>>2228504 >Они несколько миллионов серверов закупили и на каждом крутят tomcat servlet container, каждый из которых обрабатывает по 50 запросов в секунду максимум? Как это работает? По разному. Там и языков много разных используется и не весь хайлоад про рест запросы.
Как часто джавистам нужно взаимодействовать с женщинами на работе? На джаве вообще много тянок пишут? Я просто боюсь их. Ну женщин. Не хотелось бы сильно часто с ними взаимодействовать.
>>2229020 > На джаве вообще много тянок пишут? Это нн настолько важно, в основном ты будешь взаимодействовать с тестировщиками и аналитиками. И вот среди них тянок и кунов поровну.
Сап сосоны, помогите реализовать одну ёбу плз. Вернее, не совсем вкуриваю логику, хоть направьте в какую сторону копать. Суть в том, что пытаюсь наковырять свой фреймворк по PageObject, в общем основная задача: написать метод, который СОХРАНЯЕТ текст в себе, не обращаясь к ЛОКАТОРУ. Есть метод, в котором я достаю из локатора текст .getText() и он возвращает текст, но подводный камень в том, что данный текст, мне нужен, когда УЖЕ этого локатора на странице нет. Я конечно могу решить проблему костылем создать стрингу и впендюрить её в ламповый пейджобджект напрямую, но не хотелось бы от слова совсем.
>>2229020 Большинство куа и иногда аналитики - жнщины. Представь, написал ты новый функционал, отдаешь на тестирование, а тебе куа говорят, что там есть баг. Чем чаще делаешь баги, тем чаще приходится общаться с жнщинами.
>>2229028 >>2229045 >>2229047 А есть отрасли в айти, где не придется взаимодействовать с куа, аналитиками и фронтендерами? Ну чтобы женщин вообще не было? Я думаю про какой-нибудь эмбеддед на С/С++, где мужики работают за тридцатку на военных заводах и регулярно получают пизды от каких-нибудь офицеров-заказчиков. Там тянок по идее вообще не должно быть, ну нахуя им в такой параше работать? По этой причине думаю пойти в эмбеддед парашу.
>>2229053 > ну нахуя им в такой параше работать? А нахуя кунам там работать? Это надо быть совсем анальником-адептом культа превозмогания. Нет таких отраслей, тянки везде. Сейчас не 19 век.
Анон помоги JPA настроить. Он вроде бы подключается к БД и создает там таблицы, потому что я в проперти хибернета прописал create-drop. Запросы на поиск тоже работают. Вот сущность и сервис и контроллер.
Джуны, сколько у вас первая зарплата была,я почитал тред и охуел что где-то первая зп 70к сразу,мб это только в столицах,но у нас в Воронеже 40к считается норм зп для старта
>>2229020 Из разработчиц у меня 2 было из 8 челов в нашей кладовке. Но это хуйня, потому что придется общаться ещё с десятком команд и отделов где процент может доходить до 100%
>>2229089 А что значит общаться по работе? Я вот необщительный аутист, но если уточнить, что нужно туда-то в такое-то место добавить такую формочку, то это наверное я смогу. Или нужно прямо быть альфачом и клоуном одновременно, чтобы быдло боялось, а тянки текли?
>>2229102 >уточнить, что нужно туда-то в такое-то место добавить такую формочку, то это наверное я смогу как правило нужно или это, или уточнить у другого разраба какие-то детали того, то он делал
>>2228984 >Классический паттерн, это когда только цепочка линейна, и один обработчик идет за другим. А тут практически 2D вместо цепочки. Тебе прям в статье написали: >Combination of patterns if possible. Там просто процессор внутри себя снова использует этот паттерн.
>>2229067 >Анон помоги JPA настроить. >Он вроде бы подключается к БД и создает там таблицы >Запросы на поиск тоже работают. И чем тебе помочь? Сломать это все?
>>2229287 Да я понял. Ну в принципе это норм, если есть много вариантов, как обработать данные, или они должны применятся последовательно. Но я изначально искал вариант, как избавиться от кучи вложенных if-else и вышел на эту статью. Может еще какие-то варианты есть? У меня получается всего 2 варианта обработчиков на каждом шаге - тут такая комбинация паттернов выглядит излишней.
>>2229299 Нет какой-то серебрянной пули как это сделать универсально и красиво.
Если есть некий универсальный критерий который в if проверяется, например поле тип, можно создать Map где ключ тип, а значение обработчик. похож на CoR но решение принимает не процессор, а основной обработчик
Если у тебя сложные и длинные проверки в if, то вынеси их в отдельный метод код if(isOfflineTransaction(txn)) читается гораздо лучше чем 3 условия через &&.
Ну и в целом разбивать на методы и выносить функционал в классы это универсальный метод который всегда работает. Вот например их первый пример с разбивкой на методы https://pastebin.com/QK2N4hhh
Бля пацаны уже 6 часов ебусь. Сделал свою форму логинки для секурити и когда нажимаю войти ловлю HTTP Status 405 ? Method Not Allowed . При том что авторизация срабатывает. Тоесть страницы доступные только авторизированным пользователям становятся доступными. Че за хуйня ? Уже весь инет перерыл. Шаблонизатор thymeleaf.
>>2229948 Я нагуглил что на метод POST /login у спринга есть встроенный контроллер из коробки. Я лишь прописал отображение страницы. Видел на ютубе гайды что у челов все работало само и им не приходилось создавать свой POST обработчик логинки.
>>2230043 Тогда, очевидно, должны быть клиент и сервер. Клиент не важно на чём, хоть веб, хоть десктоп, но на веб потом будет легче найти человека. Протокол тоже не имеет значения, но если веб, придётся делать рест.
>>2230048 И правда, логично, спасибо. Просто на дипломе потом обосновать придется почему именно такая архитектура, а объяснение вида "ну потому что я бек и в паре с фронтендером" - не прокатит.
>>2230042 А где в jpa нужно знание jdbc? Там нужно знать сами реляционные базы данных, а jdbc-api это совсем другое апи, нежели jpa, хоть и более низкоуровневое.
>>2230054 Потому что данные общие, и если их независимо вести в разных базах, поддерживать все базы в актуальном состоянии будет невозможно. А так у тебя есть единый сервер, который централизовано занимается ведением базы, а клиенты нужны только для работы с сервером, который сам всё будет синхронизировать. Ну и масштабируемость.
Где-то читал про рекомендации по неймингу в java. И не помню уже где и не могу нагуглить. Там было про максимальное рекомендованное количество знаков в названии методов. Вот сколько не помню - 50 что-ли или 40.
- Во первых есть 2 аннотации @Transactional (нужно юзать спринговую а не javax) - Если пометишь публичный метод бина аннотацией то транзакция создаться еще при входе в метод и будет использоваться именно она а не то что мог бы создать спринг дата. - Если ты нихуя не пометил то транзации будут создаваться при вызове методов репозитория и ты их по сути контролировать не сможешь. До определенного уровня сложности в твоем коде этого даже достаточно. Но однажды ты можешь охуеть от того что не понимаешь как твоя залупа работает и будешь сидеть в дебагере до сопряжения сфер
- Если у тебя появятся сложные операции то могут понадобится вложенные транзакции и тогда тебе вообще пизда без понимания всего этого механизма
https://habr.com/ru/post/580424/ В статье челик 5 раз говорит, что к ресту нужен и необходим сваггер. Реально так? Нужно поучить и в свои петы/тестовые засунуть? Или не стоить тратить время?
Я вот тут подумал, а чем feign клиенты принципиально отличаются от репозиториев спринг даты? Почему нет реализации спринг даты под веб клиенты к другим сервиса?
>>2231154 > Я вот тут подумал, а чем feign клиенты принципиально отличаются от репозиториев спринг даты? Примерно тем же, чем сервис отличается от DAO. Спринг дата работает с данными, это просто круд к базе, а REST-клиенты нужны для вызова бизнес-логики, которая не вписывается в концепцию круда.
Сап, Джвач. Пытаюсь понемногу вкатиться в спринг, дошел до DI аннотациями и вот не понимаю... Как мне создать два бина из одного @Component с разными значениями полей, внедряемыми через @Value? Да и через @Autowired тоже. Если в XML можно вручную этих бинов наплодить сколько угодно, пихая в каждый свои значения, то как я могу сделать это с аннотациями? Я же не буду делать несколько классов с разными значениями @Value и @Autowired Еще не очень пока понимаю, в чем вообще прикол всей это хуйни. Чем связывать это все аннотациями проще, чем просто вручную средствами самой Java. Это мне только кажется что это какое-то говно без задач, или просто конкретно эта часть спринга такая, а всякие там MVC и прочее уже сверхполезны?
>>2231173 > Если в XML можно вручную этих бинов наплодить сколько угодно Не надо через XML, делай через Java-конфиг. @Configuration public class AppConfig { @Value("${foo}") String foo; @Value("${bar}") String bar; @Bean myComponentFoo() { return new MyComponent(foo); } @Bean myComponentBar() { return new MyComponent(bar); } }
>>2231178 >>2231182 Спасибо, завтра поразбираюсь с этим. Но все же я не очень понимаю, зачем это все надо, если все равно на каждый объект по сути надо сделать какое-то действие в коде. Аналогично тому, как это делается самим джава-кодом.
>>2231191 Сколько ни рассуждают про DI, SRP и прочее, в конечном итоге всё сводится к менеджменту ресурсов. Спринг знает, как поддерживать пул соединений к БД, очереди и прочее, и надо как-то их эффективно прокидывать в логику, но не создавать же для этого глобальную переменную со свалкой ресурсов, потому что этим сложно управлять и сложно это расширять.
Господа сениоры, посоветуйте гайд/книгу/видос по транзакциям в Spring с Hibernate. Пока шо нихуя непонятно, но очень интересно, чего-то годного обычным гуглингом/поисками в ютубе не обнаружил, к сожалению
>>2231234 шо там не понятна? не понятна. прочитай сперва просто что такое прокси потом аоп потом читай или смотри уже по спринг транзакции. как ты гуглищь не понятна пишешь спринг транзакции первая ссылка на хабр общедоступно там.
Какие перспективы у джавы в беке, при условии, что сейчас много чего переезжает в cloud native и у спринга с этим переездом возникли очень большие проблемы?
Начинаю нюхать тему микросервисов. Как мне декомпозировать монолит на МКС? У меня был монолит в одном проекте в IDEA, а теперь я разбиваю на несколько проектов? или как? Чет не пойму пока