24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Приглашаем вас на увлекательное событие - Java-шоу! 🚀 Мы - эксперты в мире абстракций и оптимизации, где каждая строка кода - ключ к галактике Java, полной приключений! 💫
🔮 LOOM: Революционные потоки. 🧩 Pattern Matching: Усовершенствованные проверки данных. 📚 Sequenced Collections: .getLast() теперь у всех!
Превью: 🌟 Structured Concurrency - контроль асинхронности. 🔑 Scoped Value - гибкий ThreadLocal. ✨ String Interpolation - вставка переменных как ABC. 🚀 Unnamed Classes и Instance Main Methods - хелло-ворлд в одну строчку!
Java 21 - праздник для программистов, вкусно без торта, но с мороженым! 🍰🍦💻🎉
>>2924414 О, вот это, конечно, шедевр! Да что ты там со своими идеями придумал? Ну давай, расскажи свой шедевр, интересно же посмотреть, что тут такого "отличного" пришло в голову.
Как работают эмуляторы java me? Похоже, там не эмулируется какое-либо железо или arm архитектура, просто делают свою реализацию phoneME?
А вообще есть смысл в низкоуровневом эмуляторе микро джавы? Ведь в JAR-приложении не содержатся инструкции для процессора, только байт-код для вм java.
Нахуя нужны новые версии жабы, если все жаба проекты - это поддержка легаси кала, и никакие лумы хуюмы вам не светят. Новые проекты на жабе начинать не будут, так в чем прикол?
>>2925028 Блять, ну вы хотя б раз расскажите, что вы такое делаете, что вам типы нужны в рантайм? Тем более, что существуют способы передать тип, вроде котлин и скала это скрыто делают.
>>2924614 Обычно AOT компиляция, как на современном Андроиде. То есть JAR архив с байт-кодом при установке преобразуется в машинный код. Конкретно надо смотреть, как например, в Symbian устроено.
>>2924809 JavaME еще иногда используется в embedded, в основном в DIY проектах. Есть например реализации для Raspberry Pi. Там можно легко делать 2D игры, есть простой движок со спрайтами и тайлами, как в старых консолях вроде Донди/Sega/SNES. Unity, например, гораздо сложнее в освоении.
>>2925421 >Есть например реализации для Raspberry Pi. На малинке можно и обычную JDK завести.
>Там можно легко делать 2D игры, есть простой движок со спрайтами и тайлами, как в старых консолях вроде Донди/Sega/SNES. Unity, например, гораздо сложнее в освоении. А ещё на нем можно заставки блюрей дисков программировать.
Ну нету сейчас у JME практического применения. Нету.
>>2924845 Ого, ну хоть кто-то в джава мире заботиться о UX для разработчиков. После ноды/дотнета/го/раста сборщики проектов для JVM кажутся злой шуткой из 90ых.
Аноны, а вкатуну не стыдно самописный модульный веб-сервер показывать в качестве портфолио? Я просто для себя некоторые вещи написал, которые по сей день использую и чтобы добру не пропадать решил их в портфолио вложить. Из написанного, собственно, сам веб-сервер, генератор статических html страниц на основе .md заметок, поисковый движок по этим страницам и модуль виртуальных хостов.
Какие же разработчики дегенерадла дауны... Почему разработчики мавена смогли в команду clean, и после введения неё у меня за 0,5 секунд весь проект очищается до состояния написанных ручками сурсов, а при введении этого же в дегенерадле я как смотрел на 25 тысяч файлов и 800 мегабайт всяких кэшей, которые блядь должны храниться в папке-аналоге .m2, так и смотрю? И ведь после такой тотальной очистки всего на мавене ничего серьёзного не теряется, следующий билд как делался за 20 секунд, так и будет делаться, а если папку проекта на дегенерадле самостоятельно очистить до состояния ручных сурсов, то ты при следующей сборке 2 часа будешь качать и билдить всякую хуйню.
>>2927074 Это зависит... В мобилках делали AOT потому что ресурсов мало и важна скорость запуска. У тебя же на компе мощностей дофига, а вот сил на реализацию полноценного эмулятора наоборот мало. Так что тебе проще будет взять JDK и писать свой эмулятор на базе JDK. Для начала можешь посмотреть https://habr.com/ru/articles/504682/
>>2927770 > Какие же разработчики дегенерадла дауны... Даун здесь только ты
> а при введении этого же в дегенерадле я как смотрел на 25 тысяч файлов и 800 мегабайт всяких кэшей, которые блядь должны храниться в папке-аналоге .m2, так и смотрю? Кэши зависимостей в градле по дефолту отдельно хранятся в папке-аналоге .m2 - в .gradle/caches в юзер директории.
Причем тут разработчики градла, если ты хуйню какую то наделал с конфигурацией?
>>2929168 О, копротивленкец за соевое говно вылез. Вот хуйня https://github.com/granny/Pl3xMap , собери её и попробуй потом очисти корневую директорию до состояния того, что было получено после git clone.
>>2929342 Чистота функции определяется по фактическому содержанию, а не по потенциальным возможностям содержания. Если this не используется, то функция чистая. Только смысла мало конечно делать в таком случае метод нестатическим нет.
>>2928962 >почему сил мало? А ты прям такой убер программист, который выдает сотни LOC в день? Или ты думаешь, что AOT это прям такая простая задача? И кстати под какую платформу ты собрался AOT писать, уже решил?
>Я просто для себя некоторые вещи написал, которые по сей день использую
Если не пиздишь, и реально сам им пользуешься, и сможешь адекватно обьяснить, почему ты пользуешься им а не мейнстримным решением, я бы посмотрел, встреться мне твое резюме. Но тут уже - как в суде. Твой пет может играть в равной степени как в твою пользу, так и в твой вред.
>>2924175 (OP) Есть 500к пикч. Хочу искать среди них пикчи имеющие ~100% совпадение с пикчей B, где: >пикчи A и B имеют одинаковый размер и пикчи A и B имеют одинаковое содержание >пикчи A и B имеют разный размер, но имеют содержание выше определенного коэффициента идентичности. Кейс такой, что A и B это по сути одна и та же пикча (по содержанию), но картинка B проходит через кучу микросервисов, и поэтому может быть слегка отшакалена или переформатирована из одного формата в другой и оттуда обратно в оригинальный. Однако визуально это одна и та же пикча - без вотермарок и т.д., но мб с едва заметным глазу перекодированием, и в немного другом размере. Разрешение по идее меняться не должно. Пишу на Джаве, потому что остальную часть сервиса писал на ней. Но также рассмотрю линуксовую консольку и утилитки, бгг)
>>2930447 Я не ебу, как это делается на джаве, но суть такова: Приведи изображения к одному разрешению. Лучше то, которое побольше, сжимать. Алгоритмов полно, выбери любой. Затем просто попиксельно вычитаешь в каждом из трёх каналов (r,g,b) из одной картинки другую модуль не забудь взять. Разность картинок тоже будет картинкой. Из-за сжатий у тебя не везде будут нули, могут контуры объектов быть видимы, и внутренности тоже не абсолютно чёрные. Поэтому теперь надо придумать как отличить разницу разных картинок от одинаковых. Мне кажется, можно взять квадраты всех пикселей поканально, сложить и поделить на количество пикселей. Посчитай результат для разных и одинаковых картинок, там должны будут получаться ооочень разные числа. Выбери границу и решай по ней.
Алгоритм линейный получается. Каждую с каждой сравнивать конечно будет долго, надо хэш-функцию какую-нибудь, чтобы точно разные картинки сразу отсекать. Например, средний арифметический цвет попиксельно.
>>2930475 Алсо возможно может помочь преобразование Фурье, оно в каждом втором алгоритме для обработки изображений используется, но это уже чуть выше моих знаний. Я универ 10 лет назад закончил, ничего не помню уже.
>>2930529 У тебя душа лежит к дилдакам? Ну я вот визуализацию конкурентности хочу написать, там ни спринга, ни вообще хттп и прочей чуши не будет.. Пока вот базу подтягиваю.модем вместе, воот
>>2929995 >Здесь своя используется jvm? У чувака энтерпрайз мозга в терминальной стадии. Например он создал интерес aot.Backend который должен компилировать классы. Реализовал код main класса, который парсит параметры командной строки, ищет доступный aot.Backend через сервисы и пытается всё скомпилировать. Но ссука, единственная реализация aot.Backend не реализована и выкидывает эксепшн. Т.е. этот дятел написал вагон вспомогательного кода, но даже не начал реализовать непосредственно AOT. Всё что этот код делал это выдаёт ошибку, что не реализовано. А ещё эти __ебучие __подчеркивпния __перед __каждой __переменной.
Весь код в комментариях капитана // Find the backend to use Backend backed = Main.findBackend(); Как же понять, что тут происходит?!
Я не хочу разбираться в этом говне, но судя по тем исходникам что там есть эмулятор работает в JVM, но этот мудак был бы не он если бы не заебенил нативных функций. Причём большинство можно спокойно сделать на чистой джаве.
>>2931433 >Значит говно проект? Смотря какие у тебя цели.
Если писать энтерпрайз код - проект топ. Куча нахуй не нужных абстракций, код аккуратно отформатирован в кодстайле из 90-х, везде комментарии которые просто пересказывают название метода, но нихера не говорят о сути, куча документации в которой хер разберёшься и в которой минимум содержания.
А если тебе нужен проект который просто будет выполнять мидлеты на современном пк, то проект говно.
>>2932469 Я в ахуе с таких дегенератов. Спрашивают про оверлоадинг по возвращаемому значению - отвечают на вопросы по точкам и запятым блядь. >>2932468 А на уровне jvm ограничения есть?
>>2932478 Ну конечно тролль. Как можно считать по-другому?
>>2932487 Ну удачи после этого вызвать статический метод из класса. Тут можно было бы для простоты ставить вместо класса Function<String, T> parseFunction, но тогда вообще зачем городить этот огород?
>>2930447 Какой-то эмбеддинг изображения надо получать и сравнивать расстояние между векторами. Но это нейросетки надо юзать и весьма накладно по ресурсам. Это по-современному. Возможно подойдет более простой и менее прожорливый дедовский метод. Можешь тут глянуть предложения, м.б. какой-то сработает. https://stackoverflow.com/questions/11541154/checking-images-for-similarity-with-opencv
Есть рест контроллер в спринге. Я хочу один из квери параметров превращать из строки в объект. У метода контроллера я указываю параметр с типом этого объекта. В WebMvcConfigurer я добавляю нужный конвертер. Чтобы провалидировать какие-то поля объекта я могу добавить аннотацию над параметром метода. Но эта валидация произойдет уже после конвертации. А как мне провалидировать ту строку, которая приходит в квери параметре в оригинальном реквесте, до вызова конвертера?
>>2932864 Не понял, ты хочешь какой то сложный объект засунуть в @RequestParams что ли? Засунь все в тело запроса и валидируй как вздумается. А если там просто одна строка - енум твой выбор. или дай больше контекста нахуя и главное зачем
>>2932461 Так блять надо сравнивать один и тот же проект, с чего ты взял, что это вина градла? Там плагины кастомные, деобфускация, декомпиляция и прочее дерьмо нужно сделать. Сделай такое на мавене и посмотрим.
>>2932353 >Неужели невозможно, чтобы опенсорсные проекты больших корпораций не имели перечисленные недостатки? Джава опенсорсный проект нескольких больших корпораций, а SquirrelJME проект энтузиаста одиночки.
Меня эта тема не интересует, но например https://github.com/eiroca/microemu по коду выглядит сильно адекватней. Чистая джава, просто эмулирует классы из JME делегируя вызовы к десктопной версии джавы. Все просто и прямолинейно.
>>2933125 >надо сравнивать один и тот же проект Тыскозал? Чем тебя не устраивает сравнение всех проектов сразу со всеми проектами сразу? Не так удобно получается?
Обьясните тупому почему жабе не прикрутят генератор машинного кода? Ведь, по сути сама жаба компилируется в байт-код, который потом скармливается jvm и средствами виртуальной машины на лету представляется в машинные коды. Насколько я понимаю, llvm работает так же, но только создает бинарник, а не выполняет код в реальном времени. Так почему к жабе до сих пор не прикрутили генератор бинарников?
>>2933279 Вроде гралвм нативно компелируется. Но там траблы с класслоадерами есть энивей. Только зачем это все, если жабовский жит тупа лучше большинства аот?
>>2933283 Почему нет? JVM же на плюсах написана, разве нет? Это всего лишь программа, которая получает на вход байткод и интерпретирует его описанным в спецификации образом.
> JVM не на языке джав Это как? Мы вам встроили виртуальную машину в виртуальную машину, чтобы вы выполняли код в виртуальной машине, пока ваша виртуальная машина выполняется в другой виртуальной машинне?
>>2933282 > Только зачем это все, если жабовский жит тупа лучше большинства аот? В сферу байтоебинга залететь. На те же мобилки, микроволновки, симки как-то же писали софт. Чому бы не развивать это направление?
>>2933288 >Это как? Мы вам встроили виртуальную машину в виртуальную машину, чтобы вы выполняли код в виртуальной машине, пока ваша виртуальная машина выполняется в другой виртуальной машинне? Примерно так. В граальвм (за хотспот не шарю) только самые базовые части написаны на плюсах, всё остальное, кроме того, что необходимо для интерпретации синтаксиса, написано уже на джаве. Компилятор вообще полностью на джаве, а сам он компилируется предыдущей версией себя, с надеждой на то, что какой-то критичный баг, мешающий компиляции багфикса, внезапно не вылезет.
>>2933293 Чего злой такой? Ты тоже читаешь последние 50 постов в треде, когда заходишь, чтобы запостить? Ну и прошу линкануть пост с обсуждением этой темы.
>>2933259 Потому что проекты РАЗНЫЕ, отсюда твое сравнение двух систем сборок таким образом является необъективным.
Это блять как обвинять архитекторов джавы за то, что язык плохой, ссылаясь на говнопроекты рандомных кодеров. А вот петушарп лучше, потому что я не видел там плохих проектов!
>>2933328 > отсюда твое сравнение двух систем сборок таким образом является необъективным. Тыскозал? Мань, ты на вопрос про сравнение всего со всем не ответил.
>Это блять как обвинять архитекторов джавы за то, что язык плохой, ссылаясь на говнопроекты рандомных кодеров. А вот петушарп лучше, потому что я не видел там плохих проектов! Если на джаве каждый второй проект будет говном, а на петушарпе ни одного говнопроекта, это заставит задуматься.
>>2933328 >>петушарп лучше, потому что я не видел там плохих проектов! Из того что видел - там с серьезным ебалом обмазываются IInterface и Impl, дробят на трехстрочные методы и дрочат на клин код ункл боба, которого выпиздили из джавы. Когда в джаве уже избавятся от геттеров, те все еще будут писать свои интерфейсы на каждый пук.
>>2933338 > там с серьезным ебалом обмазываются IInterface и Impl, дробят на трехстрочные методы и дрочат на клин код ункл боба
Трусторе шо пиздец. Эти блядские IJopaEntityToJopaDTOMapper и JopaEntityToJopaDtoMapperImpl, которыми забиты 50%+ проектов на шарпе, мне теперь в кошмарах снятся.
> Когда в джаве уже избавятся от геттеров Когда на меня упало блядское легаси на сервлетах, которое почти полностью писалось ещё во времена ~6 джавы, там и то в большинстве файлов был кем-то заботливо проставлен волшебный @Getter. Вы только про котлин шарпистам не рассказывайте, они лопнут.
Конечно есть и такое, вопрос же в соотношении. Я это в основном на гитхабе у джунов видел, которые нихуя объяснить не могли, зачем они этой херней страдают. Ещё был один проект у нас на пару тысяч строк, написанный джуном, который насмотрелся лекций про clean architecture и заоверинжинирил перекладывание джсонов. Пришлось его переписать по-человечески потом почти с нуля. В массовых масштабах на жабе последние годы я эту болезнь не наблюдаю, но и на статистическую достоверность не претендую.
> 1-2 смузи проекта не в счет. Их не 1-2, а десятки процентов из тех, что начали писаться в наши годы (спасибо микросервисам, это случается весьма часто). В легаси всё бывает, конечно.
>>2933392 >>уебищный синтаксис в Go У меня больше всего недоумение вызывает пикрил. В джаве чекед эксепшены признали ошибкой, а тут решили что проверять ошибки в каждой строке - охуенная идея. Щас и в джаву некоторые тащат идею что надо также делать ответ+еррор (в котлине емнип это есть). Ведь глобал эксепшен хендлер это так медленно в приложухе на 1000 чел пикового онлайна.
>>2933702 Я слышал в этом треде, что эксепшены, используемые для бизнес логики, можно оптимизировать, отключив сбор стектрейса. Не знаю, правда это или нет и как это делать. Реквестирую у анонасов пояснение.
Подскажите пожалуйста, какие документы нужно отправить в google play console что бы их приняли ? Я живу в Польше, документы соответственно отправляю польские. Уже 4-ая попытка.
>>2933721 > Охуенно наверное потом чинить баги, когда у тебя в логах вместо стектрейса "пук среньк, что то пошло не так". Так можно на время дебага включить сбор стека.
Анончики, там VMware (которые в том числе делают спринг) купил Broadcom, не начинайте новые проекты на спринге пока они не прояснят свою позицию по опенсорсу - Broadcom знаменит своей дойкой клиентов, могут лицензию сменить спокойно.
>>2933758 >Так можно на время дебага включить сбор стека. Во время дебага, тебе стектрейс не нужен. Можно поставь бекпоинт на конкретный тип эксепшена. Стектрейс тебе нужен, чтобы понять почему Ерохин смог снять в банкомате 100к, хотя у него на счету 21₽.
>>2933829 > Стектрейс тебе нужен, чтобы понять почему Ерохин смог снять в банкомате 100к, хотя у него на счету 21₽ Если он сможет снять, стектрейса не будет.
>>2933110 Ну да, я и писал, что надо хэш-функцию. Всё равно будет квадратик, но квадратик сравнения чисел всё же явно быстрее будет, чем квадратик попиксельного сравнения. Ну и его можно в среднем ускорить, если изначально упорядочить по хешу, много вариантов сразу отсечётся.
>>2933792 На уже вышедшие версии спринга задним числом версию сменят? Или без гарантий дальнейших обновлений до Spring Boot 5.0 проект теперь не начинают?
>>2933817 Если водка мешает работе - ну её нахуй эту работу
>>2933838 >Я бы хотел разработать типа qemu, эмулирование ARM. Тебе надо написать - JmVM - стандартную библиотеку + телефонные расширения VM можно просто интепретатор написать, можно JIT.
>>2934598 Фп штучки всякие. Начиная с карринга, который я вообще никак не мог осознать ну года пол назад, заканчивая топовой системой типов, до которой жабке расти и расти... А еще книжечку читаю по многопоточке, но там ниче нового пока что... >>2934606 >>2934612 Вот чево началось-то... Мы знакомы...?
>>2934625 Нууу, не смотря на мои причитания по поводу стажерства, оказывается стоит лишь захотеть... Но бляя, тут такие интересные концепции, да и стажировку в шарп предложили, лол.
>>2934637 Слов нет и чево ж ты не написал, няш? Поближе б пообщались. Обсудили бы там jmm нинаю, как гонки безопасные писать, по кишочкам жабы полазали бы... Эх, романтишно.
Кстати, я слышал, что JIT может быть быстрее AOT за счёт того, что он может на основе собранных в рантайме данных применять эмпирически выведенные оптимизации. А ещё можно прикинуть оверхед на компиляцию в рантайме просто представив, сколько времени будет длиться компиляция всего приложения полностью, общий оверхед будет гарантированно меньше или равен этому.
>>2934781 ну согласись, всем в этом мире было б лучше еслиб не было котлина. А в случае с итогом суда лучше б гугл и дальше пользовался джавой и не выебывался. Котлин как гниющая, умирающая, убогая хуета, от которой пара бы уже давно избавиться, лол
>>2934783 Какая там идея? Меня просто вымораживает его поддержка комунити. Это как религия уже. Как можно про плохо про сраст говорить. Ну и идеи из реддита берутся, это вообще маразм. Сравнить с jcp... >>2934785 Энивей даже в нем система типов лучше жабовской. До тех пор, пока не будет ее переработки, а это связывают с пришествием местого божества, ака вальхаллы, нихуя не изменится.
>>2934790 > Какая там идея? Ставка на производительность по возможности без потери выразительности кода. Zero-cost abstraction, полуручное управление памятью, оптимизации при компиляции. Невиданная свобода в эпоху полупроводниково-софтварного сговора.
>>2934793 Плюсы не смогли в оптимизацию и их по производительности уделала даже джава, которая при выборе между перформансом и выразительностью кода выбирает последнее, оставляя перформанс на "по возможности".
>>2934795 >которая при выборе между перформансом и выразительностью кода выбирает последнее, оставляя перформанс на "по возможности". Бля, вот как не слушал експертов, по моему у них выразительность вообще где-то на последнем месте. Главное, обратное совместимость. И перфоманс выше, поскольку если в каких-то частях будет деградация, хуяк и у миллионов пользователей -100500% по перфомансу с нихуя. Ебало воображать не стоит. Да и жит жабовский лучший оптимизатор из существующих. Вот может сраст в Lock Elision? Или вообще в escape анализ? Хуйню несешь в общем. На счет плюсов, они где-то пишут, мол мы не должны быть медленнее си. Поэтому там такие убогие массивы.
Пишу сервер для получения и обработки данных от модулей wifi d1 mini, кто-нибудь может посоветовать хороший материал по написанию низкоуровневого брокера сообщений? Сам хеллоуворлдщик, в многопоток не умею.
>>2934797 Есть експерты, а есть Джеймс Гослинг, который ещё на заре джавы сделал выбор в пользу выразительности, добавив сборщик мусора и продекларировав принцип write once со всеми вытекающими из него. Это уже делает выбор в пользу простоты написания кода и его выразительности за счёт перформанса, но более того, кроме Джеймса Гослинга есть ещё и Брайан Гётц, который только и делает, что дрочит свой проект амбер. Любая оптимизация в джаве отталкивается от решений этих двух людей. Обратная совместимость да, имеет тоже очень высокий приоритет, но я и не сравнивал с ней.
>>2934770 Мать ебал того пидора который тянет это говно на проект, я блять только только джаву со спрингом осилил а уже в требованиях знания котлина. ВЫ ЕБНУЛИСЬ НАХУЙ?!
Когда эта мерзкая раковая опухоль обанкротится нахуй, чтобы и котлин сдох обоссавшись и обосравшись, так еще и не приходилось каждый месяц с почтой ебаться. Хочется, чтобы потом кто нить запилил аналог Intelij idea, который будет красив, легок и прекрасен во всем... Боже как же хочется...
>>2935154 Так это от хэша зависит. Близкие картинки должны преобразовываться в близкие хэши. Я приводил самый банальный пример - средний арифметический цвет пикселя. Ресайзинг, например, не окажет особого влияния, сохранение в жипег из пнг тоже. Но есть подозрение, что будет дохуя коллизий, потому что получится нормальное распределение.
>>2935308 >Близкие картинки должны преобразовываться в близкие хэши. Проиграл. Почитай на досуге как оценивается качество/совершенство алгоритмов хеширования
>>2924175 (OP) Так бля, уважаемые господа джависты. У меня есть к вам важный вопрос, а именно. Как разрабатываются реальные рест сервисы? Вот вопросы которые у меня за день созрели
Уровень контроллера 1. Должна быть валидация полей К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий А что ещё должно быть в контроллере?
Уровень сервиса Что здесь должно быть помимо логики проекта? И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться? И что такое миддлтваре, где они должны быть и вообще нужны ли они?
Как работать с БД через репозиторий? Считаю это абсолютным рудиментом и хуйней наличие spring data jpa, сука я блять не поверю что на реальном проекте люди пишут sql запросы к базе в аннотации, ну я просто не поверю. Как вы общаетесь с базой? Хибернейт? JDBC?
Остальное Что такое graceful shutdown? И нужен ли он в спринге? Как и где хранить пароли и токены? Вот у меня есть пароль от юзера в БД который прописан в yml файле, как мне его захешировать?
Если вы считаете себя благородным сеньором, то вы должны ответить на вопрос и не проходить мимо, это ВАШ ДОЛГ!!!
>>2936314 сеньоры тут не сидят... ходят легенды, что удачные вкатуны либо сходят с ума от разгребания индусского легаси и умирают навсегда, либо же потом восстают из мертвых и растут по карьерной лестнице, где впоследствии заводят трактор со своей еотовой в солнечную Калифорнию, проходят собес на Team Lead в AWS и живут ни в чем себе не отказывая и, соответственно, у них пропадает потребность в двощах...
>>2936314 >>К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий Это делается через глобал эксепшен хендлер. В контролере нет кода валидации, там просто аннотация @Valid / @Validated
>>А что ещё должно быть в контроллере? у меня это тонкие клиенты всегда, никакой логики, просто передает то что пришло в сервисы, иногда собирая в более удобном виде.
>>И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться? Обычно как техлид/тимлид решит. У меня на проекте в репу напрямую вызов идет мимо сервиса. Но у меня жук - если что я могу просто без задней мысли скопипастить код из репо2 и в репо1.
>>пишут sql запросы к базе в аннотации jooq набирает популярность, но многие все еще ебутся с хибером
>>Что такое graceful shutdown? И нужен ли он в спринге? В спринге эта хуйня вроде пытается завершить всякие очереди и текущие запросы перед выключением. Если у тебя stateless приложение то можно не париться.
>>Как и где хранить пароли и токены? В секретах кубера. В само приложение добавляются через параметры при запуске самим кубером. В ямле у меня хранятся только пароли и конфиги для локальной среды, а все тестовые/продовые идут через helm chart.
>>вы считаете себя благородным сеньором бля, я только мидол, но похуй, уже ответил, стирать не буду.
>>2936314 >А что ещё должно быть в контроллере? Ничего. В контроллере вообще всего должно быть по минимуму. Миссия контроллера - это описать контракт API твоего сервиса: какие в нем эндпойнты, какие реквесты-респонзы в нем разрешены; и связать эндпойнты с тем, что надо делать при их вызове
>И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться?
В теории, ничто не мешает тебе заинжектить два репозитория в один сервис. На практике, все зависит от душноты конкретного тимлида. Проверяй на месте.
>Считаю это абсолютным рудиментом и хуйней наличие spring data jpa, сука я блять не поверю что на реальном проекте люди пишут sql запросы к базе в аннотации
А чем тебе так претит эта мысль? SQL тащемто - база, лучше него для работы с реляционными данными не существует ничего. И обмажься ты хоть хибером, хоть джуком, в том или ином виде он у тебя неизбежно будет: в случае хибера - в лице нативных запросов и jpql, в случае джука - в виде куска сильнотипизированного кода. И просто напомню, что spring data jpa - тащемто обертка над хибером как самой популярной референс имплементацией JPA - пользуясь оным ты уже априори пользуешься хибером.
>Как и где хранить пароли и токены? Есть такая штука как spring config - обьявляя пропертю в спринговом конфиге, ты можешь ее потом при запуске оверрайдить через аргументы командной строки, окружение, spring config server, и.т.д. А дальше - ты заводишь переменную в конфиге для пароля, сеттишь туда какую нить дефолтный пароль, с которым тебе будет удобно локально сервис гонять, а когда сервис попадет на прод, реальный пароль будет где то в недрах продового окружения, например в секретах кубера.
>>2936484 >>2936388 Раз уж вы отозвались на мой пост, давайте я вам ещё вопросы задам 1. Вот к вам пришел разраб и сказал что он мидол, какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах. Потому что я до сих блять не понимаю где кончается этот ваш спринг, миллион модулей, миллиард классов с интерфейсами. Все что я пока знаю по спрингу, это то что на нем можно писать такой код, при помощи которого можно общаться только через интерфейсы, и так же то, что жизненным циклом объектов управляет спринг. В чем я не прав и как мне глубоко ещё окпать?
2. А что ещё включает в себя промышленная разработка? Ну бля, до того как вы устроились на работу, вы наверняка писали пет проекты и наверняка у вас был ахуй от реального проекта. Что вас удивило? Только не пишите что количеством кодовой базы различается, это и ежу понятно
3. Как писать юнит тесты в спринге? Как это выглядит в реале? Типа я в директории test создаю такую же иерархию директорий как в main? И вот есть service1, то и в test будет serviceTest1? Так штоле?
А так, исходя из ваших ответов я чот ещё не могу понять, а чем это отличается от той хуйни что я пишу? Если spring data jpa поменять на jooq и добавить валидаторы в контроллере, то вприницпе норм
>>2936314 >К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий Это можно сделать как через @Valid и @Size так и ручной логикой практически где угодно. Но все таки не в контроллере. Фронту будет наверное удобнее получать через первый метод, потому что там и поле приходит и что там не так им так удобнее подсветить на фронте по идее.
>А что ещё должно быть в контроллере? Если у тебя какая-то дтоха, то обычно конвертация в контроллере происходит чтобы не засорять дтохами сервисы.
>Что здесь должно быть помимо логики проекта? Ее можно еще сделать на уровне сущности. Хотя выглядит конечно ужасно.
>мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться? Напрямую лучше. Меньше будет сайд-эффектов.
>Как вы общаетесь с базой? Хибернейт? JDBC? Шпринг дата с HQL и иногда нативщиной. А хуйли?
>Вот у меня есть пароль от юзера в БД который прописан в yml файле, как мне его захешировать? Сейчас вроде везде bcrypt использует. Там и хэш и соль и все говно.
>>2936779 >Все что я пока знаю по спрингу, это то что на нем можно писать такой код, при помощи которого можно общаться только через интерфейсы Это неправильное понимание спринга. И контроллеры и сервисы и сущности это чисто свои классы никак не привязанные к спрингу. Исключение - репозитории.
>Как писать юнит тесты в спринге? Как это выглядит в реале? Там сначала конфиги должны быть чтобы запустить спринг в контексте тестов. Дальше @MockBean и уже через мокито тестишь.
>>2936779 >>какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах Хз что тебе ответить - читай доки, пиши пет проект на спринге. Весь его ты не выучишь никак без практики. Да и с практикой есть вероятность что некоторые части никогда не затронешь.
>>код, при помощи которого можно общаться только через интерфейсы Бин можно спокойно инжектить и без интерфейса. Интерфейсы понадобятся только если у тебя 2+ реализации. Не надо городить всю эту хуету с Impl на ровном месте как учит шарпомух Р.Мартин
>>А что ещё включает в себя промышленная разработка? Ну хз, я писал петы - потом вкатился, попал на проект- не скажу что я увидел что то кардинально новое. В скриптах деплоя ковыряться - да, пиздец. Но джуну это и не дадут. Пили фичу, двигай таску. А там постепенно начнутся трудности и их преодоление. До уровня мидла спокойно на гугле можно выехать.
>>Как это выглядит в реале? Как говно. >>Как писать юнит тесты в спринге? Как и обычный юнит, только через мокито мокаешь зависимости. Для крудов их писать смысла нет, но тебе придется, если только не попадется адекватный лид. Мнение джуна тут спрашивать не будут само собой.
>>я в директории test создаю такую же иерархию в идее alt-enter по классу - создать тест - она сама все нагенерирует
>>в test будет serviceTest1? для класса UserService создаст UserServiceTest. Но название не важно, главное аннотации @Test от junit
>>Если spring data jpa поменять на jooq не обосрись с кодогенерацией
>>чем это отличается от той хуйни что я пишу? просто читай baeldung - там примерно так и пишут, а потом уже на проекте прикинешь обстановку и внесешь коррективы
>>2937492 >Дальше @MockBean и уже через мокито тестишь Удачи замокать репозитории и написать кучу хрупких тестов, которые своими моками по-сути дублируют твой продакшен код, лул
>юнит тест >ну короче контекст поднимем, замокаем 1 бин и проверим что залупа.помыть().equals(чистаяЗалупа()) >ну и что что тест 15 секунд расперживается >я в базу не лезу значит юнит скозал!!!
>>2938537 Откуда мне знать, я ж не хожу по джуновым собесам и не собеседую. Могу сказать что вот недавно в команду взяли джуна без опыта курсового. Щас сидит пердолится с партициями в постгресе. Я такого не умею, хз насколько это сложная задача.
>>2936779 Юнит тесты чаще всего не нужны. Нужны тесты на весь бизнес процесс. Чаще всего называются интеграционными. От входа в твоем сервисе до выхода. Чаще всего от апи до бд в тестконетейнере. А вызовы внешних сервисов и всяких кафок - мокаются.
>>2938702 >>2938738 >>От входа в твоем сервисе до выхода. Как такое нормально тестить?
Вот у меня распределенная архитектура и сервис помимо базы лезет еще в 2 других сервиса. Как это все мокать? Сидеть и рисовать скрипты миграции с согласованными данными?
Вот надо вывести список людей подписанных на канал. У меня есть uuid канава, по нему я достаю данные из бд и запрашиваю подписки в другом сервисе, потом по uuid пользователей из подписок запрашиваю их имена в третьем сервисе А значит везде надо забить правильный uuid пользователей чтоб они находились и нормально связывались. А таких запросов там много. Как эти данные согласовать, чтоб не накатывать миграции на каждый тест отдельно?
Дамп тестовой базы тож не вариант - там полчаса на моей машине, а в ci это часа 3 минимум. Да и не все кейсы там могут быть, это только для смоука.
>>2938738 От входа до выхода всей системы - это e2e. От входа до выхода отдельного сервиса, если он не единственный сервис в системе - интеграшка. В чем я неправ?
>>2939322 Что значит на запущенном? Тест с бд в тестконтейнере или на специальной тестовой полщадке он юнит тест что-ли? А если мы тестируем еще при этом тестируем апи и бизнеслогику? Интеграционный тест это любой тест, который работает с несколькими компонентами(юнитами). В контексте спринга это обычно сервисы с бизнес логикой. А в строгом понимании тест с поднятием спрингового контекста уже не юнит. И когда я сказал, что интеграционный тест от входа до выхода из сервиса я имел ввиду, что может быть еще более мелкий интеграционный тест.
>>2938744 >Как это все мокать? Сидеть и рисовать скрипты миграции с согласованными данными? Да, тестовые скрипты с данными бд должны быть согласованы с теми данными, что ты возвращаешь из замоканных вызовов других сервисов. >Как эти данные согласовать, чтоб не накатывать миграции на каждый тест отдельно? Для тестовых скриптов не нужны миграции через системы миграции. Есть @Sql в спринг тестах.
>Дамп тестовой базы тож не вариант - там полчаса на моей машине, а в ci это часа 3 минимум. Для некоторых тестом можно данные из тестовой базы подергать отдельными запросами. А для остальных самому выдумывать данные.
>>2939371 >>Для тестовых скриптов не нужны миграции через системы миграции. Есть @Sql в спринг тестах. Я к тому что заполнить надо данными, каким инструментом не так важно. Просто эти данные сидеть подгонять пиздец муторно будет. Еще и их бы протестировать как-нибудь, а то впишу хуйню..
>>А для остальных самому выдумывать данные. Это печально, ладно пойду выдумывать. А то без тестов уже совсем пиздец какой то.
>>2936779 >Вот к вам пришел разраб и сказал что он мидол, какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах.
Так мы тебе и ответили. Охуенно устроился. Неее, чел, в век волчар, сидящих одной жопой на двух работах, и вкатунов, вкатывающихся на миддловые вакухи с фейковым резюме, крутись уж как нить сам. А то заебало новые тактики собесов изобретать.
>Ну бля, до того как вы устроились на работу, вы наверняка писали пет проекты и наверняка у вас был ахуй от реального проекта. Что вас удивило? Только не пишите что количеством кодовой базы различается, это и ежу понятно
Хз. Я вкатывался в 2009м. Тогда всем было похуй на петы, и вкатиться можно было просто с базовыми универскими знаниями и горящими глазами. Эпоха ушла.
>Как писать юнит тесты в спринге? Как это выглядит в реале?
Как кромешный пиздец. Персонально я считаю, что писать юнит тесты на спринге таким образом, чтобы они приносили реальную пользу, и не были лишь тупорылой бюрократией, на спринге невозможно. Но с другой стороны, на спринг-тесте пишутся вполне сносные integration тесты, а если testcontainers прикрутить, то и api/e2e-тесты.
>Типа я в директории test создаю такую же иерархию директорий как в main?
Да
>И вот есть service1, то и в test будет serviceTest1? Так штоле?
Да, но это по вершкам. Тестинг - глубокая тема, одним тредом всех деталей не объяснить. Там есть свои тулы, свои практики, свои косяки, паттерны и антипаттерны, это отдельный мир.
>А так, исходя из ваших ответов я чот ещё не могу понять, а чем это отличается от той хуйни что я пишу?
Не комплексуй. За свои года я насмотрелся всякой хуеты в проде, так что если я тебе отвечу что "ничем", не буду далек от истины. Просто наращивай экспертизу, пробуй разное, а мимикрировать под коллектив будешь на первой работе.
Если ты практикуешься на петах, стремись довести дело до конца. Чтоб пет был прям рабочий продукт, а не просто хуета скопипащенная с мурзилок и stackoverflow. Попробуй найти и получить обратную связь от какого нить практикующего чела, который проревьювит твой пет. Помимо пета - читай книги, статьи, развивайся.
>Если spring data jpa поменять на jooq
Однохуйственно. Что Spring Data JPA, что Jooq - вполне котируемые тулы. Освой хотя бы один из них как следует, не распыляй усилия.
>>2940354 >что благородные доны могут сказать про Java Card? Технология более живая чем JME. Используется во всяких чипах типа платежнвх карт, сим карт и прочего ИоТ https://javacardforum.com/ Но если ты не разработчик чипов, то тебе с ней делать особо нечего. Максимум скачать эмулятор, закодить апплет и попробовать в него байтики попихать. Можешь почитать немного тут https://forum.vingrad.ru/forum/forum-485.html но сайт старый и не обновляется
>>2942167 Это глыбы с 25летним опытом только на джаве. Ну и это скорее какие то архитекторы/лиды, которые не разгребают код, а рисуют квадратики со стрелочками.
>>2941968 Спрингокультошиз ты то сам хоть что-то сделал, чтобы выбирать что-то кроме спринга было не так больно? Может ты написал какие-то библиотеки, коннекторы или обертки для микронавта или кварткуса, которых у самих альтернатив спринга нет, но есть для спринга?
>>2943042 Чтобы когда я буду писать свои тырпрайз круды мне надо было писать только пару велосипедов, очень специфичных для проекта, а не десятки и сотни внутренних библиотек, потому что из коробки нихуя нету.
Начал пол года назад учить жабу и понял, что хочу жаба-друга, чтобы говорить о жабе, иначе совсем не с кем. Где искать? Желательно феминного и нежного, но вообще любого
>>2943304 А, не, хуйня ебаная. >.gather(selectOne(Math::max)) Кто так будет писать? >return Gatherer.Integrator.ofGreedy Неймингом походу занимался тот же уебан, что для HexFormat. А так в целом неплохо, хотя и хуйня. Но пойдет.
>>2943268 >Тоже итерировал векторы в вайле, бгг? В 1.3 уже ArrayList завезли, а итерировать было проще через for так хоть итератор был виден только в цикле.
Больно блять ему. Вы, суки, не приспособлены ни к чему, кроме как зеркалить. Вам все что не ваш синдром утенка - то говно. А глянешь в кишки вашей параши - там рефлексия на рефлексии, которая тянет всю джаву на дно ебаное. Заюзать JPMS чтобы сократить размер дистрибутива через jlink? Сколько лет уже фиче? А хуй там, из-за спрингопараши изволь открыть пол системы через uses, иначе класспаф-сканнинг нихуя не найдет, но никто конечно этогро делать не будет, ибо "больно". Про AOT я вообще молчу - в то время как кваркус, который слеплен литералли на хтонических EEшных референс имплементациях, которым сто лет в обед, поддерживает AOT со старта, какой там статус поддержки AOT в спринге? Сколько времени его туда везли, и довезли ли, нука?
Но ладно спринг, хуй с ним, не к спрингу на самом деле претензия. Типичная реация спрингопидораса на вышеперечисленое обычно - "AOT не нужен, JPMS не для нас писан". Поэтому закрой ка нахуй свой ебальник, пидор переможный. Вы - ебаный рак сообщества.
>>2945015 Мы и есть сообщество,дегенерат,с нами одного мнения создатели языка,создатели экосистемы и создатели фреймворка,а ты просто нитакуся-деревенщина,поцелуй мою залупу,гной
>>2945015 Говноед, не забывай, что практика это критерий истины. А твои вскукареки это только твое необоснованное мнение. >рефлексия на рефлексии, которая тянет всю джаву на дно ебаное. Полная хуйня шизика. Для 80% задач фреймворов, забитых под завязку рефлексией достаточно. Да, на каких-то задачах перфоманс ниже в разы, да, куча всего на компиляции не отловишь. Зато количество бойлерплейта скрытого под "магией" максимально. И это ускоряет скорость разработки. Если бы рефлексия была бы проблемой из-за нее бы отказывались от спринга, хибера и других фреймворков. >AOT не нужен, JPMS не для нас писан Ну так они действительно не нужны большинству. Сиди на кваркусе, микронафте, на еще чем то более экзотичном, на самописных фреймворках и не бухти. Тебе же никто не запрещает. Ни разу не видел, чтобы кто-то рвался от неиспользования спринга. Спрингопараша инструмент для большинства, но так вышло, что у тебя есть редкие требования. Почему ты так рвешься?
>>2945038 Так ты и есть евангелист, которое пытается нам скормить говно, типа аот и JPMS, чтобы кто-то ушел от дефолтного спринга. Те кого ты называешь евангелистами спринга это просто надроченные копатели в его кишках. На данном этапе спринг не нуждается в евангелистах, это дефолт. "Эксперты" не популяризируют спринг. Все кто их слушают и так уже пишут на спринге.
Я по твоему на практику чтоли гнал? Нет, пидор. Гнал я на тебя и таких как ты пидарасов. Я выше с самого начала отметил что не к спрингу на самом деле претензия, и не к его рефлексии. Рак ебаный - это не спринг, спринг - следствие, а причина - именно ты, и твои спринговые перемоги. Ты как хохол-либераха сразу кидаешься перемогать своим парашным: "ыыыыы, как писать на квакусе чтоб не было больно". Ты даже не пытаешься смотреть на вещи объективно - сразу бросаешься перемогать какими то общими евангелистскими штампами типа "коннекторов спринга, не имеющих альтернатив". Ты - спрингокульт, потому что повадки у тебя - как у типичного культиса, и ты рак не потому что спринг - говно. А потому что перемогая за говно, ты блокируешь развитие платформы, из-за чего вас хуесосят в хвост и гриву даже шарпеи.
Зато когда я поссал тебе на ебало, ты начал крутиться, строить из себя целочку, "сиди", мол, "на кваркусе, микронафте, на еще чем то более экзотичном, нмкто", мол, "не запрещает". Так и я вам-червепидорам не запрещал сидеть на спринге, это вы везде лезете со своими дурацкими перемогами.
>>2945119 В каком месте я их продать пытался? Все что я сделал - это отметил что несмотря на то, что есть такие фичи, поиметь с них профит на спринговой экосистеме нихуя не просто, и это - факт, который говорит не в пользу спринга и его кишок.
>>2946021 >На нем даже петики на кор-джаве пилить невозможно.
Да что ты говоришь. А может проблема - между клавиатурой и сиденьем?
>JPMS же кал ебаный
Ты можешь думать о фиче все что угодно. Объективный факт в том, что на основе модулей работает jlink, а jlink - весьма неплохой способ порезать размеры приложух и сделать их дистрибуцию самодостаточной.
Но культисты же терпилы - вместо того чтобы сесть, разобраться с новой фичей, настрогать под нее тулов, будут сидеть, ждать пока им новую джаву в спринг завезут и жрать тонны постыронии от шарпеев о том, что джава - жирная а новые релизы никому не всрались.
>>2946021 >А у говноеда то, что это говно не используют это аргумент что кто-то хуевый.
А может хуев поешь?
Ты мог бы апеллировать к ненужности AOT или jlink если бы спринг оные технологии поддерживал, но всем было насрать. Но несмотря на то, что спринг по обьективным причинам, заключающимся в его корявой легасятной рефлективной архитектуре, поддержать эти технологии не может; несмотря на то, что у спринга есть альтернативы в лице кваркуса и микронавта, которые в AOT умеют из коробки; пизданутые спринговые фанатики будут до посинения перемогать за своего утенка вопреки здравому смыслу, хуесося все остальное высерами в стиле бабки из того мема - где "не нужон нам ваш инторнет". Ты - хуесос не потому, что тебе модульность неинтересна. Ты - хуесос, потому, что переможник и в залупу залез.
Ну давай дальше о jigsaw дальше поговорим. Кто кроме jlink поддерживает jpms? Культошиз, расскажи что и зачем ты через jlink и jpms обрезал? Это круды с хттп и кафками в облаках или что-то более специфическое? Какой набор библиотек был? Что jpms дал? Время деплоя и старта? С аот на условном микронавте понятно - если сложных интеграций нет и действительно есть нефункциональные требования(если ты их не из головы выдумал, а это требования бизнеса) по большим рпсам, по количеству памяти, по времени старта это норм решение. А вот с модулями не ясно нахуя это нужно в реальном приложении. Пока в треде было мнение, что jpms нужен был только разработчикам стандартной библиотеки.
>>2946827 Я б этой пидорской конторе ничего не довепил. Они ж каргокультиты, накрутят ценник как в амазоне, а качество оставят свое. Особенно порадуют, когда сольют все персональные данные и заплатят 60к рублей штрафа.
Дано: сущность с полями типа State state = INITIAL_STATE; boolean isProcessed = false; Нужно сделать апи которое возвращает сущности с заданным набором полей, пусть например оно будет задаваться через параметр запроса fields=id,name. Грузить из базы поля не заданные в запросе смысла нет. При этом при маппинге в доменную сущность эти поля автоматически заполнятся значениями по умолчанию. Что делать?
>>2947226 >На чистом jdbc написать динамический запрос. Это как помогает? >На уровне сервиса сделать определение что и как заполнять дефолтами и заполнение дефолтами. То есть рефакторить весь код, который полагался на то что дефолты заполняются при явном или неявном создании объекта?
>>2947255 Написал же. В классе есть такие поля: >State state = INITIAL_STATE; >boolean isProcessed = false; При создании нового объекта они заполняются. Причем второе поле даже обнулить нельзя так как оно примитив. В запросе к базе указано что эти поля грузить не надо, поэтому когда оттуда приходит row и из него создается объект, они заполняются дефолтами. И наружу дальше возвращаются с ними, хотя пользователь их не запрашивал.
>>2947264 Ну да. И не рефакторить код, а переписывать. Ведь логика изменилась. А зачем тебе динамически дергать разные поля? Для такого говна graphql используют.
>>2947264 >И наружу дальше возвращаются с ними, хотя пользователь их не запрашивал. Эта проблема решается на: уровне реп -- проекциями спринг даты из энтити в дтоху без 2 полей или на уровне домена -- новый контекст, новая сущность без 2 полей или уровне контроллера -- разными профилями джексона, @JsonIgnore или на уровне кха-кха коллеги вы там игнорируйте поле1 поле2 прыг скок мхем коллеги спасибо! жду обратной связи
>>2946919 Ебаный ты кусок дегенерате, не наелся дерьма?
С хуя ли ты вообще решил что на твою жалкие набросы на мой персональный опыт мне не должно быть поссать, как и на прочие отзеркаливания и виляния жопой культистов? Когда мне приспичить выбрать фреймворк для поделки, ты - последняя аватарка, с которой я это буду обсуждать, и кому я буду чето доказывать. По существу, тред был о двух вещах: 1. Ваш фетиш не умеет в то,что кваркус и микронафт дает из коробки, и это - факт. 2. Ты и твоя братия - переможники ебаные, лезущие в залупу чуть стоит тронуть ваш фетиш
И вот в разрезе этих двух топиков я и буду с тобой говорить. А твои потуги сместить акценты на персональный опыт я буду обоссывать. Не нравится - иди нахуй.
>А вот с модулями не ясно нахуя это нужно в реальном приложении.
Если тебе не ясно, нахуя нужны модули и AOT, я не тот человек, кому всралось тебя - хама ебаного - менторить забесплатно. Я тебе уже выше сказал - мне похуй что ты думаешь об этих фичах.
>>2947553 Я хотел услышать аргументы, и какие-то новые кейсы где спринг не нужон а из тебя только поток говна льется с минимумом полезной нагрузки. То что он ряде сфер спринг не нужон или его оверхед в каких-то случаях слишком дорог это и так всем понятно. И с чего ты взял, что я только с тобой разговариваю? Может другие аноны пояснят.
>>2947561 Если б ты хотел услышать аргументы, ты бы не начинал диалог (>>2942977) с персональной атаки на меня, и сраной демагогии в стиле "сперва добейся". Ты сам задал тон диалогу - чем недоволен?
>>2947647 Пошел нахуй. Хуй пожри а не кейс. Не бывает второй оказии создать первое впечатление: ты - культист, а культистов я хуями кормлю а не аргументами. С вами, пидарасами, иначе диалог невозможно вести, вы любую аргументацию к перемоге сведете.
>>2947855 Че ты мелешь? Source и target семерки никогда не были однознаковыми, однознаки пошли начиная с девятки. Для седьмой джавы source и target всегда были 1.7.
>>2948163 Если тебя угораздило поддерживать легаси на джаве - пойдет. Новые проекты на джаве не стартуют, кста. Именно из-за того, что написано в этой книге
>>2949317 А че ядро канкаренси в жабе сильно изменилось с того времени? Или ты из лагеря шарпушек, которые вообще не ебут как оно там работает, а просто используют async/await?
>>2947650 Как обосновать использование например микронавта в банке? Например у меня в будущем будет задача переписывания с нуля легасевой хуиты на спринге и прочего некрокала деплоемого в томкат. Сервис достаточно высоконагруженый. Море интеграций. Кафка jms и rest с соапом.
Заливать про то что это дерьмо хорошо в попеншифт будет деплоить и что кластироваться будет хорошо? Что метрики норм отдавать будет.
>>2949336 >ты из лагеря шарпушек, которые вообще не ебут как оно там работает, а просто используют async/await?
Скорее всего this.
Но вообще, шарпей пиздит и придумывает сказки на ходу. Потому что если бы на другие языки переходили бы исключительно из-за тягот поддержки конкарренси, то переходили бы не на шарп, и не на прочий императивный хлам, сама суть которого и порождает тяготы конкарренси. А переучивались бы на фукнкциональную парадигму и какой нить хаскель или F#.
>>2949629 >А переучивались бы на фукнкциональную парадигму Ха-ха-ха-ха-ха-ха. Я как раз работал в проекте где купились на эту хуету и написали всё на Скала и Акка. Самоё правильное решение в этом проекте было: выкинуть всё нахуй и переписать на джаву и экзекуторы.
>>2949347 Бранч предикшен говорит какой код будет исполняться, а не какая ветка условия выполниться. В общем случае он может предсказывать ситуации когда происходит исключение доступа к памяти, с.м. Spectre.
>>2949651 что за бред. иди посмотри байткод который собирает javac это раз. как он форы ифы и прочие свитчи разбирает. а во вторых какой нахуй спектр в жвм?
>>2949882 >байткод который собирает javac это раз Ты же в курсе, что жвм этот байткод как мясорубка перерубит и изменит просто пиздец как? Хороший способ узнать, что действительно там будет - это через jmh https://psy-lob-saw.blogspot.com/2014/08/disassembling-jmh-nano-benchmark.html >а во вторых какой нахуй спектр в жвм? А это уже оптимизации процессора. Не останавливается же все на жвм.
>>2949934 >а вот байткод очень близок к асемблерному коду Ты долбоеб? Компилятор никаких оптимизаций не делает практически. Хуйню несешь какую-то. >по ссылке какая то хуита Хрен знает, там написано как получить асм, то что реально передается процу, а не твои маняфантазии.
>>2949882 >а ты точно прогромист? Пиздец ты даунич, лучше бы молчал.
>иди посмотри байткод который собирает javac это раз. >как он форы ифы и прочие свитчи разбирает. >а во вторых какой нахуй спектр в жвм? 1. Речь шла об if-ах, пиздоглазый ты наш. 2. Spectre это уязвимость в Intel процессорах которая основана на особенностях бранч предиктора. Я специально написал по английски, но ты все равно умудрился обосраться https://meltdownattack.com 3. Байткод напрямую может исполнять только какой нибудь picoJava или JOP но это экхотика которой почти никто не пользуется. А в реальности у тебя или интерпретатор - где свич-через-свич независимо от кода. Или JIT который уже генерирует условные переходы процессора, даже для свитча, собственно про которые и шла речь. И где Spectre как раз актуально в полный рост хотя конкретно про >он может предсказывать ситуации когда происходит исключение доступа к памяти это скорее Meltdown .
>>2949690 Как будто не Овер сильно поменялся, в любом случае у жабы один закон который прост, все меняется но так что работает и с прошлыми версиями, так что ничего грубого не случилось. Имхо
>>2950063 Meh. Такая жа аргументация, как в статье, в сообществе джавистов циркулировала десятилетие, и это не мешало JPA здравствовать и процветать всю дорогу. Смешной будет пранк, если гоферы таки поступятся своими принципами и затащат ORM-кал себе по самые гланды. Меняются языки, меняются тренды - промытки не меняются никогда.
>>2951071 Я недавно зашел в дев и нашел там расшифровку термина "пупуни". Это типа ласковый аналог слову "мышь". Типа "серая мышь". Причем тут жабка-тред?
>>2950935 > в сообществе джавистов циркулировала десятилетие, и это не мешало JPA здравствовать и процветать всю дорогу у меня теория что это из-за галер. Галерам чисто написать по тз, сдать демонстрацию и забыть. Оптимизациями и поддержкой галеры редко занимаются. В таком случае да, хибернейт сможет немножко съэкономить времени, которое потом надо будет тратить на копание в кишочках хибернейта или его выпиливание. Но делать это будут уже другие чуваки
>>2951491 Не знаю. Эта хрень весьма хтонична, ОРМы существуют наверное столько же времени, сколько ООП как таковой. Интернет грит, первый ORM вообще в smalltalk появился (toplink). Потом в 90х его переписали на джаву, а еще позже придумали стандарт JPA (вошел в Java EE 5 в 2006м). Хз какие тогда существовали галеры и чем они руководствовались, все очевидцы давно вымерли от старости.
Как с mapstruct'ом unit тестить? В тестируемом методе используется FirstMapper, тот в свою очередь через uses использует SecondMapper, но при запуске теста в FirstmapperImpl внедрённый SecondMapper оказывается null. Пробовал указать так, но нихуя: @SpringBootTest(classes = {SecondMapper.class}) и так @SpringBootTest(classes = {SecondMapperImpl.class})
🔮 LOOM: Революционные потоки.
🧩 Pattern Matching: Усовершенствованные проверки данных.
📚 Sequenced Collections: .getLast() теперь у всех!
Превью:
🌟 Structured Concurrency - контроль асинхронности.
🔑 Scoped Value - гибкий ThreadLocal.
✨ String Interpolation - вставка переменных как ABC.
🚀 Unnamed Classes и Instance Main Methods - хелло-ворлд в одну строчку!
Java 21 - праздник для программистов, вкусно без торта, но с мороженым! 🍰🍦💻🎉
Вики по вкатыванию в джаву🎓: https://github.com/java2ch/java-thread/wiki
Предыдущий: