Это копия, сохраненная 2 марта в 03:35.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
🔮 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
Предыдущий: >>2905153 (OP)
Ну че, там сделали перфоманс тесты лума и корутин? Кто-то уже заюзал новые свитчи и кейсы к ним придумал?
Слишком хардкорно.
Нововведения 21 джавы до самой 22 будешь постить?
Если что-то не устраивает, лучше просто пойти на прогулку и подумать об этом в спокойной обстановке. 😉
Ну да, ведь на прогулке идеи лучше приходят, чем сидя дома! 😉 Так что, может, и вправду лучше всем на улицу? 🌳
О, вот это, конечно, шедевр! Да что ты там со своими идеями придумал? Ну давай, расскажи свой шедевр, интересно же посмотреть, что тут такого "отличного" пришло в голову.
Конечно, буду держать в курсе всех нововведений Java 21 до самой 22! Это как раз мой стиль – быть на гребне волны инноваций! 🚀😎
А вообще есть смысл в низкоуровневом эмуляторе микро джавы?
Ведь в JAR-приложении не содержатся инструкции для процессора, только байт-код для вм java.
Тя ебет? Ты еще про апплеты спроси.
ебланы уже не знают че выдумать вместо мейвена
хз я дальше заголовка не читал, вот еще голову ХУЙНЕЙ БЛЯДЬ забивать
для срачей в шарпотредах что лучше лум или асинк/авейт
https://spring.io/blog/2023/11/16/spring-framework-6-1-goes-ga
да. Обновляйся и будет полная поддержка виртуальных тредов. А вебфлюкс не нужен теперь в принципе.
Блять, ну вы хотя б раз расскажите, что вы такое делаете, что вам типы нужны в рантайм?
Тем более, что существуют способы передать тип, вроде котлин и скала это скрыто делают.
Это шарполахта работает, после того как их в очередной раз попустили.
Fleet
Обычно AOT компиляция, как на современном Андроиде. То есть JAR архив с байт-кодом при установке преобразуется в машинный код. Конкретно надо смотреть, как например, в Symbian устроено.
>>24809
JavaME еще иногда используется в embedded, в основном в DIY проектах. Есть например реализации для Raspberry Pi.
Там можно легко делать 2D игры, есть простой движок со спрайтами и тайлами, как в старых консолях вроде Донди/Sega/SNES. Unity, например, гораздо сложнее в освоении.
А причем тут симбиан? Нативные симбиановские проложухи на плюсах писались.
>Есть например реализации для Raspberry Pi.
На малинке можно и обычную JDK завести.
>Там можно легко делать 2D игры, есть простой движок со спрайтами и тайлами, как в старых консолях вроде Донди/Sega/SNES. Unity, например, гораздо сложнее в освоении.
А ещё на нем можно заставки блюрей дисков программировать.
Ну нету сейчас у JME практического применения. Нету.
Блэт, жыдбрейнс скатилось. Может и к лучшему что они съебали.
Ого, ну хоть кто-то в джава мире заботиться о UX для разработчиков. После ноды/дотнета/го/раста сборщики проектов для JVM кажутся злой шуткой из 90ых.
А на чём будут начинать новые проекты?
https://github.com/apache/maven-integration-testing/blob/master/core-it-suite/src/test/resources/mng-7836-alternative-pom-syntax/simple/pom.hocon
пример ес че, а то не найдете же, безрукие
Notepad++
Дегенерадлщик, плиз.
Да после мавена чем угодно больно пользоваться. Эти вечные фейлы на скриптах и скачки говна у дегенерадла просто вымораживают.
https://openjdk.org/jeps/463
>В чем отличие от динамической рекомпиляции?
В том, что она случается один раз до первого запуска, а не каждый раз при исполнении.
Евгений Ваганович?
А говорили в спринге поддержка виртуальных потоков появится дай бог лет через 5!
Я просто для себя некоторые вещи написал, которые по сей день использую и чтобы добру не пропадать решил их в портфолио вложить.
Из написанного, собственно, сам веб-сервер, генератор статических html страниц на основе .md заметок, поисковый движок по этим страницам и модуль виртуальных хостов.
Хотя я думаю тут больше проблема в моём узком интернет канале. Но с мавеном даже самые большие проекты не выкачивают половину интернета.
Это называется "сборка jvm". С нуля тоже в принципе можно, т.к. есть спецификация и тесты спецификации, но сложно.
Может быть за тем, что шарподебилов слушать надо меньше и джава не проприетарная?
Это зависит...
В мобилках делали AOT потому что ресурсов мало и важна скорость запуска. У тебя же на компе мощностей дофига, а вот сил на реализацию полноценного эмулятора наоборот мало. Так что тебе проще будет взять JDK и писать свой эмулятор на базе JDK. Для начала можешь посмотреть https://habr.com/ru/articles/504682/
Но не дефолт же
> Какие же разработчики дегенерадла дауны...
Даун здесь только ты
> а при введении этого же в дегенерадле я как смотрел на 25 тысяч файлов и 800 мегабайт всяких кэшей, которые блядь должны храниться в папке-аналоге .m2, так и смотрю?
Кэши зависимостей в градле по дефолту отдельно хранятся в папке-аналоге .m2 - в .gradle/caches в юзер директории.
Причем тут разработчики градла, если ты хуйню какую то наделал с конфигурацией?
У тебя проблема XY похоже, что изначально ты пытаешься решить?
Будут не pure. Типа чистая функция, все дела. Хотя можно и статику написать так, чтобы она сайд эффекты делала.
Если что вот https://blog.knoldus.com/functional-java-understanding-pure-functions-with-java/
Не статические функции в качестве аргумента всегда содержат this. Вряд ли их можно считать чистыми...
О, копротивленкец за соевое говно вылез. Вот хуйня https://github.com/granny/Pl3xMap , собери её и попробуй потом очисти корневую директорию до состояния того, что было получено после git clone.
Чистота функции определяется по фактическому содержанию, а не по потенциальным возможностям содержания. Если this не используется, то функция чистая. Только смысла мало конечно делать в таком случае метод нестатическим нет.
>почему сил мало?
А ты прям такой убер программист, который выдает сотни LOC в день? Или ты думаешь, что AOT это прям такая простая задача? И кстати под какую платформу ты собрался AOT писать, уже решил?
>Я просто для себя некоторые вещи написал, которые по сей день использую
Если не пиздишь, и реально сам им пользуешься, и сможешь адекватно обьяснить, почему ты пользуешься им а не мейнстримным решением, я бы посмотрел, встреться мне твое резюме. Но тут уже - как в суде. Твой пет может играть в равной степени как в твою пользу, так и в твой вред.
>Не статические функции в качестве аргумента всегда содержат this
И что? Делай иммутабельные классы, тогда this не будет привносить сайд эффектов в твою нестатичкескую функцию.
Скилиди доп доп.
Во, используй.
Это ты еще servletContext.getAttribute не ебал...
Есть 500к пикч.
Хочу искать среди них пикчи имеющие ~100% совпадение с пикчей B, где:
>пикчи A и B имеют одинаковый размер и пикчи A и B имеют одинаковое содержание
>пикчи A и B имеют разный размер, но имеют содержание выше определенного коэффициента идентичности.
Кейс такой, что A и B это по сути одна и та же пикча (по содержанию), но картинка B проходит через кучу микросервисов, и поэтому может быть слегка отшакалена или переформатирована из одного формата в другой и оттуда обратно в оригинальный. Однако визуально это одна и та же пикча - без вотермарок и т.д., но мб с едва заметным глазу перекодированием, и в немного другом размере. Разрешение по идее меняться не должно.
Пишу на Джаве, потому что остальную часть сервиса писал на ней. Но также рассмотрю линуксовую консольку и утилитки, бгг)
Это нп полная задача. Я хуй знает как ты это решать будешь, конечно.
поищи уже готовые решения и зареверси, сами программы поспрашивай в /s
Это говно делается нейросеточками.
Я не ебу, как это делается на джаве, но суть такова:
Приведи изображения к одному разрешению. Лучше то, которое побольше, сжимать. Алгоритмов полно, выбери любой.
Затем просто попиксельно вычитаешь в каждом из трёх каналов (r,g,b) из одной картинки другую модуль не забудь взять.
Разность картинок тоже будет картинкой. Из-за сжатий у тебя не везде будут нули, могут контуры объектов быть видимы, и внутренности тоже не абсолютно чёрные.
Поэтому теперь надо придумать как отличить разницу разных картинок от одинаковых. Мне кажется, можно взять квадраты всех пикселей поканально, сложить и поделить на количество пикселей.
Посчитай результат для разных и одинаковых картинок, там должны будут получаться ооочень разные числа. Выбери границу и решай по ней.
Алгоритм линейный получается. Каждую с каждой сравнивать конечно будет долго, надо хэш-функцию какую-нибудь, чтобы точно разные картинки сразу отсекать.
Например, средний арифметический цвет попиксельно.
Алсо возможно может помочь преобразование Фурье, оно в каждом втором алгоритме для обработки изображений используется, но это уже чуть выше моих знаний. Я универ 10 лет назад закончил, ничего не помню уже.
У тебя душа лежит к дилдакам? Ну я вот визуализацию конкурентности хочу написать, там ни спринга, ни вообще хттп и прочей чуши не будет.. Пока вот базу подтягиваю.модем вместе, воот
>Здесь своя используется jvm?
У чувака энтерпрайз мозга в терминальной стадии. Например он создал интерес aot.Backend который должен компилировать классы. Реализовал код main класса, который парсит параметры командной строки, ищет доступный aot.Backend через сервисы и пытается всё скомпилировать. Но ссука, единственная реализация aot.Backend не реализована и выкидывает эксепшн. Т.е. этот дятел написал вагон вспомогательного кода, но даже не начал реализовать непосредственно AOT. Всё что этот код делал это выдаёт ошибку, что не реализовано.
А ещё эти __ебучие __подчеркивпния __перед __каждой __переменной.
Весь код в комментариях капитана
// Find the backend to use
Backend backed = Main.findBackend();
Как же понять, что тут происходит?!
Я не хочу разбираться в этом говне, но судя по тем исходникам что там есть эмулятор работает в JVM, но этот мудак был бы не он если бы не заебенил нативных функций. Причём большинство можно спокойно сделать на чистой джаве.
when(zalupaMock.setMeshokSDannbIMi(anyMeshok()).doAnswer(pohuy4toTam -> {lastModifiedDate = Instant.now()) }
https://habr.com/ru/articles/774402/
Вот бы кобол на jvm.
Вот бы магию спринга на коболе.
Вот бы все гнойные псины сдохли разом.
Эээ. Почему не меня?
Че нихуя-то? Он работает через этот бин. Тебе надо или спринговый конфеги сделать тестовый или мокать. И гугли сам, пидор.
>Значит говно проект?
Смотря какие у тебя цели.
Если писать энтерпрайз код - проект топ. Куча нахуй не нужных абстракций, код аккуратно отформатирован в кодстайле из 90-х, везде комментарии которые просто пересказывают название метода, но нихера не говорят о сути, куча документации в которой хер разберёшься и в которой минимум содержания.
А если тебе нужен проект который просто будет выполнять мидлеты на современном пк, то проект говно.
>энтерпрайз код - проект топ
Неужели невозможно, чтобы опенсорсные проекты больших корпораций не имели перечисленные недостатки?
Нет, не работает он через бин. Только если в аннотации параметр указывать с именем бина. Но это кринж, ради тестов такое менять.
Long parse(String s) {...}
Long l = parse("1");
Почему так нельзя?
Integer и Long просто для примера.
Потому что усложняется понимание кода и разрушается хрупкий принцип возврата значения.
Он имел в виду чтобы выбирался метод parse в зависимости от того, какой переменной присваивается возвращаемое значение.
>а на уровне jvm ограничения есть
Так такое если и делать, то только через компилятор. JVM тут ни причём.
Выглядеть он будет так. Реализация +- похожа на это >>2915718 →
Нахуя это нужно - а вот хуй знает.
>А на уровне jvm ограничения есть?
На уровне JVM такое есть и используется сплошь и рядом. https://godbolt.org/z/f71Tjz8Wd
long_ — имя локальной переменной
Да
Какой-то эмбеддинг изображения надо получать и сравнивать расстояние между векторами. Но это нейросетки надо юзать и весьма накладно по ресурсам. Это по-современному. Возможно подойдет более простой и менее прожорливый дедовский метод.
Можешь тут глянуть предложения, м.б. какой-то сработает.
https://stackoverflow.com/questions/11541154/checking-images-for-similarity-with-opencv
Чем в сишорп треде.
Квадратичный от количества всех изображений. Ты же сравниваешь каждую картинку с каждой.
Не понял, ты хочешь какой то сложный объект засунуть в @RequestParams что ли?
Засунь все в тело запроса и валидируй как вздумается.
А если там просто одна строка - енум твой выбор.
или дай больше контекста нахуя и главное зачем
Так блять надо сравнивать один и тот же проект, с чего ты взял, что это вина градла? Там плагины кастомные, деобфускация, декомпиляция и прочее дерьмо нужно сделать. Сделай такое на мавене и посмотрим.
Уже нашел, HandlerMethodArgumentResolver.
>Неужели невозможно, чтобы опенсорсные проекты больших корпораций не имели перечисленные недостатки?
Джава опенсорсный проект нескольких больших корпораций, а SquirrelJME проект энтузиаста одиночки.
Меня эта тема не интересует, но например https://github.com/eiroca/microemu по коду выглядит сильно адекватней. Чистая джава, просто эмулирует классы из JME делегируя вызовы к десктопной версии джавы. Все просто и прямолинейно.
>надо сравнивать один и тот же проект
Тыскозал? Чем тебя не устраивает сравнение всех проектов сразу со всеми проектами сразу? Не так удобно получается?
Вроде гралвм нативно компелируется. Но там траблы с класслоадерами есть энивей. Только зачем это все, если жабовский жит тупа лучше большинства аот?
Почему нет? JVM же на плюсах написана, разве нет? Это всего лишь программа, которая получает на вход байткод и интерпретирует его описанным в спецификации образом.
> JVM не на языке джав
Это как? Мы вам встроили виртуальную машину в виртуальную машину, чтобы вы выполняли код в виртуальной машине, пока ваша виртуальная машина выполняется в другой виртуальной машинне?
> Только зачем это все, если жабовский жит тупа лучше большинства аот?
В сферу байтоебинга залететь. На те же мобилки, микроволновки, симки как-то же писали софт. Чому бы не развивать это направление?
просто товарищ выше аппелировал к чисто джаве
>Это как? Мы вам встроили виртуальную машину в виртуальную машину, чтобы вы выполняли код в виртуальной машине, пока ваша виртуальная машина выполняется в другой виртуальной машинне?
Примерно так. В граальвм (за хотспот не шарю) только самые базовые части написаны на плюсах, всё остальное, кроме того, что необходимо для интерпретации синтаксиса, написано уже на джаве. Компилятор вообще полностью на джаве, а сам он компилируется предыдущей версией себя, с надеждой на то, что какой-то критичный баг, мешающий компиляции багфикса, внезапно не вылезет.
Потому что проекты РАЗНЫЕ, отсюда твое сравнение двух систем сборок таким образом является необъективным.
Это блять как обвинять архитекторов джавы за то, что язык плохой, ссылаясь на говнопроекты рандомных кодеров. А вот петушарп лучше, потому что я не видел там плохих проектов!
Ну так будут те же проблемы, что и в GraalVM.
> отсюда твое сравнение двух систем сборок таким образом является необъективным.
Тыскозал? Мань, ты на вопрос про сравнение всего со всем не ответил.
>Это блять как обвинять архитекторов джавы за то, что язык плохой, ссылаясь на говнопроекты рандомных кодеров. А вот петушарп лучше, потому что я не видел там плохих проектов!
Если на джаве каждый второй проект будет говном, а на петушарпе ни одного говнопроекта, это заставит задуматься.
>>петушарп лучше, потому что я не видел там плохих проектов!
Из того что видел - там с серьезным ебалом обмазываются IInterface и Impl, дробят на трехстрочные методы и дрочат на клин код ункл боба, которого выпиздили из джавы. Когда в джаве уже избавятся от геттеров, те все еще будут писать свои интерфейсы на каждый пук.
>с серьезным ебалом обмазываются IInterface и Impl, дробят на трехстрочные методы и дрочат на клин код ункл боба
Как будто в джаве по-другому. 1-2 смузи проекта не в счет. Такие есть и на шарпе.
>Когда в джаве уже избавятся от геттеров
Никогда.
Давайте сделаем по ключевому слову на каждый вид и подвид операций.
make - это вообще пушка
// это объявление стракта
type gopher struct {
size int64
exist boolean
visible boolean
}
//конструктор
func newGopher(s size, v visible) {
return gopher {
size: s
exist: true
visible: v,
}
}
// это объявление функции
func (g gopher) canYouSee() reply boolean {
if exist != visible // тут можно нарисовать залупу exist :=&visible
reply := false
return
}
reply := true
return
}
// main
func main() {
ocheBolshoSuslik := newGopher(4, true)
vidishSuslika boolean := ocheBolshoSuslik.canYouSee()
func nietPidoraOtvet() {
if vidishSuslika != true {
fmt.PrintLn("Не ")
return
}
fmt.PrintLn("Вижу")
}
defer nietPidoraOtvet()
nuChtoVasya := "Ну, что, Вася \n"
fmt.PrintLn("[%v], видишь суслика? \n", nuChtoVasya)
}
Давайте сделаем по ключевому слову на каждый вид и подвид операций.
make - это вообще пушка
// это объявление стракта
type gopher struct {
size int64
exist boolean
visible boolean
}
//конструктор
func newGopher(s size, v visible) {
return gopher {
size: s
exist: true
visible: v,
}
}
// это объявление функции
func (g gopher) canYouSee() reply boolean {
if exist != visible // тут можно нарисовать залупу exist :=&visible
reply := false
return
}
reply := true
return
}
// main
func main() {
ocheBolshoSuslik := newGopher(4, true)
vidishSuslika boolean := ocheBolshoSuslik.canYouSee()
func nietPidoraOtvet() {
if vidishSuslika != true {
fmt.PrintLn("Не ")
return
}
fmt.PrintLn("Вижу")
}
defer nietPidoraOtvet()
nuChtoVasya := "Ну, что, Вася \n"
fmt.PrintLn("[%v], видишь суслика? \n", nuChtoVasya)
}
> там с серьезным ебалом обмазываются IInterface и Impl, дробят на трехстрочные методы и дрочат на клин код ункл боба
Трусторе шо пиздец. Эти блядские IJopaEntityToJopaDTOMapper и JopaEntityToJopaDtoMapperImpl, которыми забиты 50%+ проектов на шарпе, мне теперь в кошмарах снятся.
> Когда в джаве уже избавятся от геттеров
Когда на меня упало блядское легаси на сервлетах, которое почти полностью писалось ещё во времена ~6 джавы, там и то в большинстве файлов был кем-то заботливо проставлен волшебный @Getter.
Вы только про котлин шарпистам не рассказывайте, они лопнут.
>>33340
>Как будто в джаве по-другому
Конечно есть и такое, вопрос же в соотношении. Я это в основном на гитхабе у джунов видел, которые нихуя объяснить не могли, зачем они этой херней страдают. Ещё был один проект у нас на пару тысяч строк, написанный джуном, который насмотрелся лекций про clean architecture и заоверинжинирил перекладывание джсонов. Пришлось его переписать по-человечески потом почти с нуля.
В массовых масштабах на жабе последние годы я эту болезнь не наблюдаю, но и на статистическую достоверность не претендую.
> 1-2 смузи проекта не в счет.
Их не 1-2, а десятки процентов из тех, что начали писаться в наши годы (спасибо микросервисам, это случается весьма часто). В легаси всё бывает, конечно.
> Потому что проекты РАЗНЫЕ
> на вопрос про сравнение всего со всем не ответил
В глаза долбишься или тролль?
>делегируя вызовы к десктопной версии джавы
А чем это лучше?
Можно ли сделать эмулятор, не требующий джаву?
Ты, наверное, да.
>>уебищный синтаксис в Go
У меня больше всего недоумение вызывает пикрил. В джаве чекед эксепшены признали ошибкой, а тут решили что проверять ошибки в каждой строке - охуенная идея.
Щас и в джаву некоторые тащат идею что надо также делать ответ+еррор (в котлине емнип это есть).
Ведь глобал эксепшен хендлер это так медленно в приложухе на 1000 чел пикового онлайна.
Я слышал в этом треде, что эксепшены, используемые для бизнес логики, можно оптимизировать, отключив сбор стектрейса. Не знаю, правда это или нет и как это делать. Реквестирую у анонасов пояснение.
100
>А чем это лучше?
Тем что это проще. Такой проект реально реализовать силами 1-2х человек.
>Можно ли сделать эмулятор, не требующий джаву?
Конечно. Нужно всего-то реализовать VM+стандартную библиотеку или AOT+runtime+стандартную библиотеку.
Можно я погуглю за тебя?
Да
> Охуенно наверное потом чинить баги, когда у тебя в логах вместо стектрейса "пук среньк, что то пошло не так".
Так можно на время дебага включить сбор стека.
Бекенд. У него хотя бы всякую порашу не нужно пересоздавать, если перевернуть сервер.
>Так можно на время дебага включить сбор стека.
Во время дебага, тебе стектрейс не нужен. Можно поставь бекпоинт на конкретный тип эксепшена.
Стектрейс тебе нужен, чтобы понять почему Ерохин смог снять в банкомате 100к, хотя у него на счету 21₽.
> Стектрейс тебе нужен, чтобы понять почему Ерохин смог снять в банкомате 100к, хотя у него на счету 21₽
Если он сможет снять, стектрейса не будет.
Ну да, я и писал, что надо хэш-функцию. Всё равно будет квадратик, но квадратик сравнения чисел всё же явно быстрее будет, чем квадратик попиксельного сравнения.
Ну и его можно в среднем ускорить, если изначально упорядочить по хешу, много вариантов сразу отсечётся.
>Я бы хотел разработать типа qemu, эмулирование ARM.
Тебе надо написать
- JmVM
- стандартную библиотеку + телефонные расширения
VM можно просто интепретатор написать, можно JIT.
Я так счастлив
А я вот стараюсь, новенькие концепции для себя осваиваю, я же молодец и не дурацкая, а вообще любимая, да?
Нууу, не смотря на мои причитания по поводу стажерства, оказывается стоит лишь захотеть... Но бляя, тут такие интересные концепции, да и стажировку в шарп предложили, лол.
Ну пограмистом не пробовал, да. Чево ты фкать начал-то сразу, а? Похвалить вот сложно что ли... Вредина
Слов нет и чево ж ты не написал, няш? Поближе б пообщались. Обсудили бы там jmm нинаю, как гонки безопасные писать, по кишочкам жабы полазали бы... Эх, романтишно.
Блиин, как же это мило звучит. Ну тогда это, продолжай наблюдение.
Да я в прошлых кидал гит с сервисом, у меня тг с ним совпадает. Найдешь думаю. Пока что я один тут такой уникальный
Есть вероятность, что позже или в одно время с джавой. Улучшения мира ждать не стоит, а петухлин поддерживается жидами.
меня корежит от этой подделки
Раст среддитом поддерживается, соевее хуйни сложно придумать. Вот хаскель совсем другое дело
А чем он соевый, помимо банального объявления типа переменных после имени? Так-то идея языка отличная.
ну согласись, всем в этом мире было б лучше еслиб не было котлина. А в случае с итогом суда лучше б гугл и дальше пользовался джавой и не выебывался. Котлин как гниющая, умирающая, убогая хуета, от которой пара бы уже давно избавиться, лол
Какая там идея? Меня просто вымораживает его поддержка комунити. Это как религия уже. Как можно про плохо про сраст говорить. Ну и идеи из реддита берутся, это вообще маразм. Сравнить с jcp...
>>34785
Энивей даже в нем система типов лучше жабовской. До тех пор, пока не будет ее переработки, а это связывают с пришествием местого божества, ака вальхаллы, нихуя не изменится.
> Какая там идея?
Ставка на производительность по возможности без потери выразительности кода. Zero-cost abstraction, полуручное управление памятью, оптимизации при компиляции. Невиданная свобода в эпоху полупроводниково-софтварного сговора.
Ну это и c++ постулирует. Он еще больше свободы дает, настолько много, что это мусорка идей, а не язык.
Плюсы не смогли в оптимизацию и их по производительности уделала даже джава, которая при выборе между перформансом и выразительностью кода выбирает последнее, оставляя перформанс на "по возможности".
>которая при выборе между перформансом и выразительностью кода выбирает последнее, оставляя перформанс на "по возможности".
Бля, вот как не слушал експертов, по моему у них выразительность вообще где-то на последнем месте. Главное, обратное совместимость. И перфоманс выше, поскольку если в каких-то частях будет деградация, хуяк и у миллионов пользователей -100500% по перфомансу с нихуя. Ебало воображать не стоит. Да и жит жабовский лучший оптимизатор из существующих. Вот может сраст в Lock Elision? Или вообще в escape анализ?
Хуйню несешь в общем.
На счет плюсов, они где-то пишут, мол мы не должны быть медленнее си. Поэтому там такие убогие массивы.
Ну точнее сишный код не должен претерпевать деградацию по перфомансу.
>в многопоток не умею.
Ну и не лезь блять, если не умеешь. Не твоего ума дела, умные люди напишут.
Есть експерты, а есть Джеймс Гослинг, который ещё на заре джавы сделал выбор в пользу выразительности, добавив сборщик мусора и продекларировав принцип write once со всеми вытекающими из него. Это уже делает выбор в пользу простоты написания кода и его выразительности за счёт перформанса, но более того, кроме Джеймса Гослинга есть ещё и Брайан Гётц, который только и делает, что дрочит свой проект амбер. Любая оптимизация в джаве отталкивается от решений этих двух людей. Обратная совместимость да, имеет тоже очень высокий приоритет, но я и не сравнивал с ней.
Мать ебал того пидора который тянет это говно на проект, я блять только только джаву со спрингом осилил а уже в требованиях знания котлина. ВЫ ЕБНУЛИСЬ НАХУЙ?!
нет! Скала сдохла! Попробуй доказать обратное
Хуй отдашь анону с вложенными дто
Котлинопетух закукарекал заместо "Авроры".
По хэшу разницу не получишь. Только бинарный ответ "эквивалентно/не эквивалентно".
Да пошел ты нахуй
Так это от хэша зависит. Близкие картинки должны преобразовываться в близкие хэши. Я приводил самый банальный пример - средний арифметический цвет пикселя. Ресайзинг, например, не окажет особого влияния, сохранение в жипег из пнг тоже. Но есть подозрение, что будет дохуя коллизий, потому что получится нормальное распределение.
???
Нет ты
>Близкие картинки должны преобразовываться в близкие хэши.
Проиграл. Почитай на досуге как оценивается качество/совершенство алгоритмов хеширования
Посмотрел ветку, там не про криптографический хэш речь. Ладно, похуй
я не умею!
База.
https://www.google.com/amp/s/www.theregister.com/AMP/2022/12/02/android_google_rust/
>2022
И как успехи? У меня чувство, что раст это язык мем. На него все хотят переписать, но в итоге нихуя не делают.
И у говноланга
@
@
@
IF __NAME__ == "__MAIN__"
IF __NAME__ == "__MAIN__"
IF __NAME__ == "__MAIN__"
IF __NAME__ == "__MAIN__"
но ведь переписывают потихоньку... а новые вещи очень даже активно. язык реально хороший...
Так бля, уважаемые господа джависты. У меня есть к вам важный вопрос, а именно. Как разрабатываются реальные рест сервисы?
Вот вопросы которые у меня за день созрели
Уровень контроллера
1. Должна быть валидация полей
К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий
А что ещё должно быть в контроллере?
Уровень сервиса
Что здесь должно быть помимо логики проекта?
И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться?
И что такое миддлтваре, где они должны быть и вообще нужны ли они?
Как работать с БД через репозиторий?
Считаю это абсолютным рудиментом и хуйней наличие spring data jpa, сука я блять не поверю что на реальном проекте люди пишут sql запросы к базе в аннотации, ну я просто не поверю. Как вы общаетесь с базой? Хибернейт? JDBC?
Остальное
Что такое graceful shutdown? И нужен ли он в спринге?
Как и где хранить пароли и токены? Вот у меня есть пароль от юзера в БД который прописан в yml файле, как мне его захешировать?
Если вы считаете себя благородным сеньором, то вы должны ответить на вопрос и не проходить мимо, это ВАШ ДОЛГ!!!
сеньоры тут не сидят... ходят легенды, что удачные вкатуны либо сходят с ума от разгребания индусского легаси и умирают навсегда, либо же потом восстают из мертвых и растут по карьерной лестнице, где впоследствии заводят трактор со своей еотовой в солнечную Калифорнию, проходят собес на Team Lead в AWS и живут ни в чем себе не отказывая и, соответственно, у них пропадает потребность в двощах...
>>К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий
Это делается через глобал эксепшен хендлер. В контролере нет кода валидации, там просто аннотация @Valid / @Validated
>>А что ещё должно быть в контроллере?
у меня это тонкие клиенты всегда, никакой логики, просто передает то что пришло в сервисы, иногда собирая в более удобном виде.
>>И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться?
Обычно как техлид/тимлид решит. У меня на проекте в репу напрямую вызов идет мимо сервиса. Но у меня жук - если что я могу просто без задней мысли скопипастить код из репо2 и в репо1.
>>пишут sql запросы к базе в аннотации
jooq набирает популярность, но многие все еще ебутся с хибером
>>Что такое graceful shutdown? И нужен ли он в спринге?
В спринге эта хуйня вроде пытается завершить всякие очереди и текущие запросы перед выключением. Если у тебя stateless приложение то можно не париться.
>>Как и где хранить пароли и токены?
В секретах кубера. В само приложение добавляются через параметры при запуске самим кубером.
В ямле у меня хранятся только пароли и конфиги для локальной среды, а все тестовые/продовые идут через helm chart.
>>вы считаете себя благородным сеньором
бля, я только мидол, но похуй, уже ответил, стирать не буду.
>А что ещё должно быть в контроллере?
Ничего. В контроллере вообще всего должно быть по минимуму. Миссия контроллера - это описать контракт API твоего сервиса: какие в нем эндпойнты, какие реквесты-респонзы в нем разрешены; и связать эндпойнты с тем, что надо делать при их вызове
>И как поступать если, мой сервис1 работает с репозиторием1, но вдруг нужно из сервиса1 вызвать репозиторий2, мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться?
В теории, ничто не мешает тебе заинжектить два репозитория в один сервис. На практике, все зависит от душноты конкретного тимлида. Проверяй на месте.
>Считаю это абсолютным рудиментом и хуйней наличие spring data jpa, сука я блять не поверю что на реальном проекте люди пишут sql запросы к базе в аннотации
А чем тебе так претит эта мысль? SQL тащемто - база, лучше него для работы с реляционными данными не существует ничего. И обмажься ты хоть хибером, хоть джуком, в том или ином виде он у тебя неизбежно будет: в случае хибера - в лице нативных запросов и jpql, в случае джука - в виде куска сильнотипизированного кода. И просто напомню, что spring data jpa - тащемто обертка над хибером как самой популярной референс имплементацией JPA - пользуясь оным ты уже априори пользуешься хибером.
>Как и где хранить пароли и токены?
Есть такая штука как spring config - обьявляя пропертю в спринговом конфиге, ты можешь ее потом при запуске оверрайдить через аргументы командной строки, окружение, spring config server, и.т.д. А дальше - ты заводишь переменную в конфиге для пароля, сеттишь туда какую нить дефолтный пароль, с которым тебе будет удобно локально сервис гонять, а когда сервис попадет на прод, реальный пароль будет где то в недрах продового окружения, например в секретах кубера.
БАМП
По поводу контроллеров уже ответили,что касается репозитория2,то тебе нужно не репо2 вызывать а гет метод сервиса, который работает с репо2
>>36388
Раз уж вы отозвались на мой пост, давайте я вам ещё вопросы задам
1. Вот к вам пришел разраб и сказал что он мидол, какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах. Потому что я до сих блять не понимаю где кончается этот ваш спринг, миллион модулей, миллиард классов с интерфейсами. Все что я пока знаю по спрингу, это то что на нем можно писать такой код, при помощи которого можно общаться только через интерфейсы, и так же то, что жизненным циклом объектов управляет спринг. В чем я не прав и как мне глубоко ещё окпать?
2. А что ещё включает в себя промышленная разработка? Ну бля, до того как вы устроились на работу, вы наверняка писали пет проекты и наверняка у вас был ахуй от реального проекта. Что вас удивило? Только не пишите что количеством кодовой базы различается, это и ежу понятно
3. Как писать юнит тесты в спринге? Как это выглядит в реале? Типа я в директории test создаю такую же иерархию директорий как в main? И вот есть service1, то и в test будет serviceTest1? Так штоле?
А так, исходя из ваших ответов я чот ещё не могу понять, а чем это отличается от той хуйни что я пишу? Если spring data jpa поменять на jooq и добавить валидаторы в контроллере, то вприницпе норм
Короче какого-то хуя этот функционал теперь в отдельном плагине, у которого версии насинаются с 23.2: https://plugins.jetbrains.com/plugin/22044-jsonpath/versions
А упоминание этого плагина есть в блоге в посте за 21 год: https://www.jetbrains.com/guide/java/tips/evaluate-json-path-expressions/
А сам плагин появился полгода назад: https://github.com/JetBrains/intellij-community/commit/09003c4c66e13d344f06d4384681d489e70ba7f7
И ни в одном ченджлоге я этого изменения не видел. Какая-то подозрительная хуйня.
Ну, я бы сказал, что каждому своё, но вот тебе, кажется, действительно так похуй, что не похуй. 😄
Найди себе парня и пиши ему свои впечатления....
>К примеру если длина пароля меньше 12 символов вернуть 404 и сказать что пароль короткий
Это можно сделать как через @Valid и @Size так и ручной логикой практически где угодно. Но все таки не в контроллере. Фронту будет наверное удобнее получать через первый метод, потому что там и поле приходит и что там не так им так удобнее подсветить на фронте по идее.
>А что ещё должно быть в контроллере?
Если у тебя какая-то дтоха, то обычно конвертация в контроллере происходит чтобы не засорять дтохами сервисы.
>Что здесь должно быть помимо логики проекта?
Ее можно еще сделать на уровне сущности. Хотя выглядит конечно ужасно.
>мне вызывать этот репозиторий из сервиса2 или напрямую к нему обращаться?
Напрямую лучше. Меньше будет сайд-эффектов.
>Как вы общаетесь с базой? Хибернейт? JDBC?
Шпринг дата с HQL и иногда нативщиной. А хуйли?
>Вот у меня есть пароль от юзера в БД который прописан в yml файле, как мне его захешировать?
Сейчас вроде везде bcrypt использует. Там и хэш и соль и все говно.
>Все что я пока знаю по спрингу, это то что на нем можно писать такой код, при помощи которого можно общаться только через интерфейсы
Это неправильное понимание спринга. И контроллеры и сервисы и сущности это чисто свои классы никак не привязанные к спрингу. Исключение - репозитории.
>Как писать юнит тесты в спринге? Как это выглядит в реале?
Там сначала конфиги должны быть чтобы запустить спринг в контексте тестов. Дальше @MockBean и уже через мокито тестишь.
>>какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах
Хз что тебе ответить - читай доки, пиши пет проект на спринге. Весь его ты не выучишь никак без практики. Да и с практикой есть вероятность что некоторые части никогда не затронешь.
>>код, при помощи которого можно общаться только через интерфейсы
Бин можно спокойно инжектить и без интерфейса. Интерфейсы понадобятся только если у тебя 2+ реализации. Не надо городить всю эту хуету с Impl на ровном месте как учит шарпомух Р.Мартин
>>А что ещё включает в себя промышленная разработка?
Ну хз, я писал петы - потом вкатился, попал на проект- не скажу что я увидел что то кардинально новое. В скриптах деплоя ковыряться - да, пиздец. Но джуну это и не дадут. Пили фичу, двигай таску. А там постепенно начнутся трудности и их преодоление. До уровня мидла спокойно на гугле можно выехать.
>>Как это выглядит в реале?
Как говно.
>>Как писать юнит тесты в спринге?
Как и обычный юнит, только через мокито мокаешь зависимости. Для крудов их писать смысла нет, но тебе придется, если только не попадется адекватный лид. Мнение джуна тут спрашивать не будут само собой.
>>я в директории test создаю такую же иерархию
в идее alt-enter по классу - создать тест - она сама все нагенерирует
>>в test будет serviceTest1?
для класса UserService создаст UserServiceTest. Но название не важно, главное аннотации @Test от junit
>>Если spring data jpa поменять на jooq
не обосрись с кодогенерацией
>>чем это отличается от той хуйни что я пишу?
просто читай baeldung - там примерно так и пишут, а потом уже на проекте прикинешь обстановку и внесешь коррективы
>Дальше @MockBean и уже через мокито тестишь
Удачи замокать репозитории и написать кучу хрупких тестов, которые своими моками по-сути дублируют твой продакшен код, лул
>юнит тест
>ну короче контекст поднимем, замокаем 1 бин и проверим что залупа.помыть().equals(чистаяЗалупа())
>ну и что что тест 15 секунд расперживается
>я в базу не лезу значит юнит скозал!!!
А я вот докладик смотрел, если правильно все сделать, то можно поднять один раз контекст и кучу кучу тестов пробежать.
А я вот сегодня сок ананасовый в кб купил,раньше 200 рублей стоил,а сейчас 150. Так то
Нет
:(
Репозитории элементарно мокаются. Нужно ковырять сложный кейс - интеграционные.
Гомофорсер,спок
А как выглядят пупуни?
Откуда мне знать, я ж не хожу по джуновым собесам и не собеседую. Могу сказать что вот недавно в команду взяли джуна без опыта курсового. Щас сидит пердолится с партициями в постгресе. Я такого не умею, хз насколько это сложная задача.
А вы про кого? Посты хоть выдели
Юнит тесты чаще всего не нужны.
Нужны тесты на весь бизнес процесс. Чаще всего называются интеграционными.
От входа в твоем сервисе до выхода. Чаще всего от апи до бд в тестконетейнере. А вызовы внешних сервисов и всяких кафок - мокаются.
>>38738
>>От входа в твоем сервисе до выхода.
Как такое нормально тестить?
Вот у меня распределенная архитектура и сервис помимо базы лезет еще в 2 других сервиса. Как это все мокать?
Сидеть и рисовать скрипты миграции с согласованными данными?
Вот надо вывести список людей подписанных на канал. У меня есть uuid канава, по нему я достаю данные из бд и запрашиваю подписки в другом сервисе, потом по uuid пользователей из подписок запрашиваю их имена в третьем сервисе
А значит везде надо забить правильный uuid пользователей чтоб они находились и нормально связывались. А таких запросов там много. Как эти данные согласовать, чтоб не накатывать миграции на каждый тест отдельно?
Дамп тестовой базы тож не вариант - там полчаса на моей машине, а в ci это часа 3 минимум. Да и не все кейсы там могут быть, это только для смоука.
От входа до выхода всей системы - это e2e.
От входа до выхода отдельного сервиса, если он не единственный сервис в системе - интеграшка.
В чем я неправ?
Что значит на запущенном? Тест с бд в тестконтейнере или на специальной тестовой полщадке он юнит тест что-ли? А если мы тестируем еще при этом тестируем апи и бизнеслогику?
Интеграционный тест это любой тест, который работает с несколькими компонентами(юнитами). В контексте спринга это обычно сервисы с бизнес логикой.
А в строгом понимании тест с поднятием спрингового контекста уже не юнит.
И когда я сказал, что интеграционный тест от входа до выхода из сервиса я имел ввиду, что может быть еще более мелкий интеграционный тест.
>Как это все мокать? Сидеть и рисовать скрипты миграции с согласованными данными?
Да, тестовые скрипты с данными бд должны быть согласованы с теми данными, что ты возвращаешь из замоканных вызовов других сервисов.
>Как эти данные согласовать, чтоб не накатывать миграции на каждый тест отдельно?
Для тестовых скриптов не нужны миграции через системы миграции. Есть @Sql в спринг тестах.
>Дамп тестовой базы тож не вариант - там полчаса на моей машине, а в ci это часа 3 минимум.
Для некоторых тестом можно данные из тестовой базы подергать отдельными запросами. А для остальных самому выдумывать данные.
>>Для тестовых скриптов не нужны миграции через системы миграции. Есть @Sql в спринг тестах.
Я к тому что заполнить надо данными, каким инструментом не так важно. Просто эти данные сидеть подгонять пиздец муторно будет. Еще и их бы протестировать как-нибудь, а то впишу хуйню..
>>А для остальных самому выдумывать данные.
Это печально, ладно пойду выдумывать. А то без тестов уже совсем пиздец какой то.
>Вот к вам пришел разраб и сказал что он мидол, какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах.
Так мы тебе и ответили. Охуенно устроился. Неее, чел, в век волчар, сидящих одной жопой на двух работах, и вкатунов, вкатывающихся на миддловые вакухи с фейковым резюме, крутись уж как нить сам. А то заебало новые тактики собесов изобретать.
>Ну бля, до того как вы устроились на работу, вы наверняка писали пет проекты и наверняка у вас был ахуй от реального проекта. Что вас удивило? Только не пишите что количеством кодовой базы различается, это и ежу понятно
Хз. Я вкатывался в 2009м. Тогда всем было похуй на петы, и вкатиться можно было просто с базовыми универскими знаниями и горящими глазами. Эпоха ушла.
>Как писать юнит тесты в спринге? Как это выглядит в реале?
Как кромешный пиздец. Персонально я считаю, что писать юнит тесты на спринге таким образом, чтобы они приносили реальную пользу, и не были лишь тупорылой бюрократией, на спринге невозможно. Но с другой стороны, на спринг-тесте пишутся вполне сносные integration тесты, а если testcontainers прикрутить, то и api/e2e-тесты.
>Типа я в директории test создаю такую же иерархию директорий как в main?
Да
>И вот есть service1, то и в test будет serviceTest1? Так штоле?
Да, но это по вершкам. Тестинг - глубокая тема, одним тредом всех деталей не объяснить. Там есть свои тулы, свои практики, свои косяки, паттерны и антипаттерны, это отдельный мир.
>А так, исходя из ваших ответов я чот ещё не могу понять, а чем это отличается от той хуйни что я пишу?
Не комплексуй. За свои года я насмотрелся всякой хуеты в проде, так что если я тебе отвечу что "ничем", не буду далек от истины. Просто наращивай экспертизу, пробуй разное, а мимикрировать под коллектив будешь на первой работе.
Если ты практикуешься на петах, стремись довести дело до конца. Чтоб пет был прям рабочий продукт, а не просто хуета скопипащенная с мурзилок и stackoverflow. Попробуй найти и получить обратную связь от какого нить практикующего чела, который проревьювит твой пет. Помимо пета - читай книги, статьи, развивайся.
>Если spring data jpa поменять на jooq
Однохуйственно. Что Spring Data JPA, что Jooq - вполне котируемые тулы. Освой хотя бы один из них как следует, не распыляй усилия.
>Вот к вам пришел разраб и сказал что он мидол, какие вопросы конкретно по спрингу вы зададите чтобы удостоверится в его словах.
Так мы тебе и ответили. Охуенно устроился. Неее, чел, в век волчар, сидящих одной жопой на двух работах, и вкатунов, вкатывающихся на миддловые вакухи с фейковым резюме, крутись уж как нить сам. А то заебало новые тактики собесов изобретать.
>Ну бля, до того как вы устроились на работу, вы наверняка писали пет проекты и наверняка у вас был ахуй от реального проекта. Что вас удивило? Только не пишите что количеством кодовой базы различается, это и ежу понятно
Хз. Я вкатывался в 2009м. Тогда всем было похуй на петы, и вкатиться можно было просто с базовыми универскими знаниями и горящими глазами. Эпоха ушла.
>Как писать юнит тесты в спринге? Как это выглядит в реале?
Как кромешный пиздец. Персонально я считаю, что писать юнит тесты на спринге таким образом, чтобы они приносили реальную пользу, и не были лишь тупорылой бюрократией, на спринге невозможно. Но с другой стороны, на спринг-тесте пишутся вполне сносные integration тесты, а если testcontainers прикрутить, то и api/e2e-тесты.
>Типа я в директории test создаю такую же иерархию директорий как в main?
Да
>И вот есть service1, то и в test будет serviceTest1? Так штоле?
Да, но это по вершкам. Тестинг - глубокая тема, одним тредом всех деталей не объяснить. Там есть свои тулы, свои практики, свои косяки, паттерны и антипаттерны, это отдельный мир.
>А так, исходя из ваших ответов я чот ещё не могу понять, а чем это отличается от той хуйни что я пишу?
Не комплексуй. За свои года я насмотрелся всякой хуеты в проде, так что если я тебе отвечу что "ничем", не буду далек от истины. Просто наращивай экспертизу, пробуй разное, а мимикрировать под коллектив будешь на первой работе.
Если ты практикуешься на петах, стремись довести дело до конца. Чтоб пет был прям рабочий продукт, а не просто хуета скопипащенная с мурзилок и stackoverflow. Попробуй найти и получить обратную связь от какого нить практикующего чела, который проревьювит твой пет. Помимо пета - читай книги, статьи, развивайся.
>Если spring data jpa поменять на jooq
Однохуйственно. Что Spring Data JPA, что Jooq - вполне котируемые тулы. Освой хотя бы один из них как следует, не распыляй усилия.
А мне вот интересно: что благородные доны могут сказать про Java Card?
https://www.msn.com/en-us/money/companies/vmware-layoffs-2023-what-to-know-about-the-latest-broadcom-vmware-job-cuts/ar-AA1kCNe1
Все, поминайте Spring и экосистему.
VMWare щас типа основной мэйнтейнер весны. Но один хуй ТС - шарпист-либераха, сосущий хуи, поэтому похуй.
Десктоп на жабе никому не всрался
Для пидаров
Нет
Ну наконец-то эта хуйня загнётся. Спасибо, Броадком!
Взлетело, так-то. Аналогов в мире нет и не поедвидится.
Это просто спринг на минималках, мало где нужен.
Лично я в рот ебал ставить отдельно какую-то микрописечную cli-ку чтобы билдить и ворочать конкретно этот кал. Это подход js хипстеров.
В смысле? Разве жопаскриптеры не те кому приходиться пользоваться только тем, что запихнули в копролитное апи?
>что благородные доны могут сказать про Java Card?
Технология более живая чем JME. Используется во всяких чипах типа платежнвх карт, сим карт и прочего ИоТ https://javacardforum.com/
Но если ты не разработчик чипов, то тебе с ней делать особо нечего. Максимум скачать эмулятор, закодить апплет и попробовать в него байтики попихать. Можешь почитать немного тут https://forum.vingrad.ru/forum/forum-485.html но сайт старый и не обновляется
как что, тестировать взлом прошивок на эмуляторе
Очень грустно, очень жаль
А зачем зумерам поддерживать легаси когда вокруг полно гринфилд проектов на питоне, го, шарпе?
>питон
Оч прикладной. Калькулятор на максималках
>го
бесполезная хуита
>шарп
пародия на джаву
>зачем зумерам поддерживать легаси
лутать шекели на зрелом проекте, особо нихуя не делая
Это глыбы с 25летним опытом только на джаве.
Ну и это скорее какие то архитекторы/лиды, которые не разгребают код, а рисуют квадратики со стрелочками.
Спрингокультошиз ты то сам хоть что-то сделал, чтобы выбирать что-то кроме спринга было не так больно?
Может ты написал какие-то библиотеки, коннекторы или обертки для микронавта или кварткуса, которых у самих альтернатив спринга нет, но есть для спринга?
Вот этот базанул.
Чтобы когда я буду писать свои тырпрайз круды мне надо было писать только пару велосипедов, очень специфичных для проекта, а не десятки и сотни внутренних библиотек, потому что из коробки нихуя нету.
Вообще то минимум в сто,плюс на джаве нет чистого бека,а только фулстэк и легаси,в отличии от шарпа
Это мои слова.
Ты как сингл тёрн гпт только на последнее сообщение отвечаешь, или что?
Да что уж там, аспнет сам обновляет старый ксеон до 15900к при его установке.
Ну вот, он про это и говорил. Все такие
StreamEx в JDK, наконец-то.
switch (a) compare (b) {
case < -> {}
case == -> {}
case > -> {}
}
compare (a, b) {
> {}
== {}
< {}
}
Benchmark Mode Cnt Score Error Units
DBBench.doubleBrace avgt 2 65,674 ns/op
DBBench.simple avgt 2 57,134 ns/op
А, не, хуйня ебаная.
>.gather(selectOne(Math::max))
Кто так будет писать?
>return Gatherer.Integrator.ofGreedy
Неймингом походу занимался тот же уебан, что для HexFormat.
А так в целом неплохо, хотя и хуйня. Но пойдет.
>Я провёл бенчмарк
Перед этим посмотри https://youtu.be/mMiSdq2166M?si=RfNyBO39I1w8v1lx
Потом давай свой бенчи и объясни почему такой результат.
>Тоже итерировал векторы в вайле, бгг?
В 1.3 уже ArrayList завезли, а итерировать было проще через for так хоть итератор был виден только в цикле.
Кто-то реально так пишет?
Спрингопидорас свой рот открыл
Больно блять ему. Вы, суки, не приспособлены ни к чему, кроме как зеркалить. Вам все что не ваш синдром утенка - то говно. А глянешь в кишки вашей параши - там рефлексия на рефлексии, которая тянет всю джаву на дно ебаное. Заюзать JPMS чтобы сократить размер дистрибутива через jlink? Сколько лет уже фиче? А хуй там, из-за спрингопараши изволь открыть пол системы через uses, иначе класспаф-сканнинг нихуя не найдет, но никто конечно этогро делать не будет, ибо "больно". Про AOT я вообще молчу - в то время как кваркус, который слеплен литералли на хтонических EEшных референс имплементациях, которым сто лет в обед, поддерживает AOT со старта, какой там статус поддержки AOT в спринге? Сколько времени его туда везли, и довезли ли, нука?
Но ладно спринг, хуй с ним, не к спрингу на самом деле претензия. Типичная реация спрингопидораса на вышеперечисленое обычно - "AOT не нужен, JPMS не для нас писан". Поэтому закрой ка нахуй свой ебальник, пидор переможный. Вы - ебаный рак сообщества.
Мы и есть сообщество,дегенерат,с нами одного мнения создатели языка,создатели экосистемы и создатели фреймворка,а ты просто нитакуся-деревенщина,поцелуй мою залупу,гной
Дохуя мнишь о себе, чмо. С вами "одного мнения" лишь евангелисты, задача которых - скормить вам говно.
Говноед, не забывай, что практика это критерий истины. А твои вскукареки это только твое необоснованное мнение.
>рефлексия на рефлексии, которая тянет всю джаву на дно ебаное.
Полная хуйня шизика. Для 80% задач фреймворов, забитых под завязку рефлексией достаточно. Да, на каких-то задачах перфоманс ниже в разы, да, куча всего на компиляции не отловишь. Зато количество бойлерплейта скрытого под "магией" максимально. И это ускоряет скорость разработки. Если бы рефлексия была бы проблемой из-за нее бы отказывались от спринга, хибера и других фреймворков.
>AOT не нужен, JPMS не для нас писан
Ну так они действительно не нужны большинству. Сиди на кваркусе, микронафте, на еще чем то более экзотичном, на самописных фреймворках и не бухти. Тебе же никто не запрещает. Ни разу не видел, чтобы кто-то рвался от неиспользования спринга. Спрингопараша инструмент для большинства, но так вышло, что у тебя есть редкие требования. Почему ты так рвешься?
Так ты и есть евангелист, которое пытается нам скормить говно, типа аот и JPMS, чтобы кто-то ушел от дефолтного спринга.
Те кого ты называешь евангелистами спринга это просто надроченные копатели в его кишках. На данном этапе спринг не нуждается в евангелистах, это дефолт.
"Эксперты" не популяризируют спринг. Все кто их слушают и так уже пишут на спринге.
Хуев ты переможник, разуй глаза!
Я по твоему на практику чтоли гнал? Нет, пидор. Гнал я на тебя и таких как ты пидарасов. Я выше с самого начала отметил что не к спрингу на самом деле претензия, и не к его рефлексии. Рак ебаный - это не спринг, спринг - следствие, а причина - именно ты, и твои спринговые перемоги. Ты как хохол-либераха сразу кидаешься перемогать своим парашным: "ыыыыы, как писать на квакусе чтоб не было больно". Ты даже не пытаешься смотреть на вещи объективно - сразу бросаешься перемогать какими то общими евангелистскими штампами типа "коннекторов спринга, не имеющих альтернатив". Ты - спрингокульт, потому что повадки у тебя - как у типичного культиса, и ты рак не потому что спринг - говно. А потому что перемогая за говно, ты блокируешь развитие платформы, из-за чего вас хуесосят в хвост и гриву даже шарпеи.
Зато когда я поссал тебе на ебало, ты начал крутиться, строить из себя целочку, "сиди", мол, "на кваркусе, микронафте, на еще чем то более экзотичном, нмкто", мол, "не запрещает". Так и я вам-червепидорам не запрещал сидеть на спринге, это вы везде лезете со своими дурацкими перемогами.
В каком месте я их продать пытался? Все что я сделал - это отметил что несмотря на то, что есть такие фичи, поиметь с них профит на спринговой экосистеме нихуя не просто, и это - факт, который говорит не в пользу спринга и его кишок.
орнул чаечкой
А у говноеда то, что это говно не используют это аргумент что кто-то хуевый.
>На нем даже петики на кор-джаве пилить невозможно.
Да что ты говоришь. А может проблема - между клавиатурой и сиденьем?
>JPMS же кал ебаный
Ты можешь думать о фиче все что угодно. Объективный факт в том, что на основе модулей работает jlink, а jlink - весьма неплохой способ порезать размеры приложух и сделать их дистрибуцию самодостаточной.
Но культисты же терпилы - вместо того чтобы сесть, разобраться с новой фичей, настрогать под нее тулов, будут сидеть, ждать пока им новую джаву в спринг завезут и жрать тонны постыронии от шарпеев о том, что джава - жирная а новые релизы никому не всрались.
>А у говноеда то, что это говно не используют это аргумент что кто-то хуевый.
А может хуев поешь?
Ты мог бы апеллировать к ненужности AOT или jlink если бы спринг оные технологии поддерживал, но всем было насрать. Но несмотря на то, что спринг по обьективным причинам, заключающимся в его корявой легасятной рефлективной архитектуре, поддержать эти технологии не может; несмотря на то, что у спринга есть альтернативы в лице кваркуса и микронавта, которые в AOT умеют из коробки; пизданутые спринговые фанатики будут до посинения перемогать за своего утенка вопреки здравому смыслу, хуесося все остальное высерами в стиле бабки из того мема - где "не нужон нам ваш инторнет". Ты - хуесос не потому, что тебе модульность неинтересна. Ты - хуесос, потому, что переможник и в залупу залез.
Ты щас сам звучишь как шарпей.
Культошиз, расскажи что и зачем ты через jlink и jpms обрезал? Это круды с хттп и кафками в облаках или что-то более специфическое? Какой набор библиотек был?
Что jpms дал? Время деплоя и старта?
С аот на условном микронавте понятно - если сложных интеграций нет и действительно есть нефункциональные требования(если ты их не из головы выдумал, а это требования бизнеса) по большим рпсам, по количеству памяти, по времени старта это норм решение.
А вот с модулями не ясно нахуя это нужно в реальном приложении. Пока в треде было мнение, что jpms нужен был только разработчикам стандартной библиотеки.
Я б этой пидорской конторе ничего не довепил. Они ж каргокультиты, накрутят ценник как в амазоне, а качество оставят свое. Особенно порадуют, когда сольют все персональные данные и заплатят 60к рублей штрафа.
State state = INITIAL_STATE;
boolean isProcessed = false;
Нужно сделать апи которое возвращает сущности с заданным набором полей, пусть например оно будет задаваться через параметр запроса fields=id,name. Грузить из базы поля не заданные в запросе смысла нет. При этом при маппинге в доменную сущность эти поля автоматически заполнятся значениями по умолчанию. Что делать?
На чистом jdbc написать динамический запрос. На уровне сервиса сделать определение что и как заполнять дефолтами и заполнение дефолтами.
>На чистом jdbc написать динамический запрос.
Это как помогает?
>На уровне сервиса сделать определение что и как заполнять дефолтами и заполнение дефолтами.
То есть рефакторить весь код, который полагался на то что дефолты заполняются при явном или неявном создании объекта?
>который полагался на то что дефолты заполняются при явном или неявном создании объекта?
Что это значит? Контекста вопросу добавь.
Написал же. В классе есть такие поля:
>State state = INITIAL_STATE;
>boolean isProcessed = false;
При создании нового объекта они заполняются. Причем второе поле даже обнулить нельзя так как оно примитив. В запросе к базе указано что эти поля грузить не надо, поэтому когда оттуда приходит row и из него создается объект, они заполняются дефолтами. И наружу дальше возвращаются с ними, хотя пользователь их не запрашивал.
Ну да. И не рефакторить код, а переписывать. Ведь логика изменилась. А зачем тебе динамически дергать разные поля?
Для такого говна graphql используют.
>И наружу дальше возвращаются с ними, хотя пользователь их не запрашивал.
Эта проблема решается на:
уровне реп -- проекциями спринг даты из энтити в дтоху без 2 полей
или на уровне домена -- новый контекст, новая сущность без 2 полей
или уровне контроллера -- разными профилями джексона, @JsonIgnore
или на уровне кха-кха коллеги вы там игнорируйте поле1 поле2 прыг скок мхем коллеги спасибо! жду обратной связи
Выбирай
Ебаный ты кусок дегенерате, не наелся дерьма?
С хуя ли ты вообще решил что на твою жалкие набросы на мой персональный опыт мне не должно быть поссать, как и на прочие отзеркаливания и виляния жопой культистов? Когда мне приспичить выбрать фреймворк для поделки, ты - последняя аватарка, с которой я это буду обсуждать, и кому я буду чето доказывать. По существу, тред был о двух вещах:
1. Ваш фетиш не умеет в то,что кваркус и микронафт дает из коробки, и это - факт.
2. Ты и твоя братия - переможники ебаные, лезущие в залупу чуть стоит тронуть ваш фетиш
И вот в разрезе этих двух топиков я и буду с тобой говорить. А твои потуги сместить акценты на персональный опыт я буду обоссывать. Не нравится - иди нахуй.
>А вот с модулями не ясно нахуя это нужно в реальном приложении.
Если тебе не ясно, нахуя нужны модули и AOT, я не тот человек, кому всралось тебя - хама ебаного - менторить забесплатно. Я тебе уже выше сказал - мне похуй что ты думаешь об этих фичах.
Ну вот и иди нахуй, залупный спрингокультист. Никто тебя не звал впрягаться в защиту ебучей секты - сам впрягся так и соси хуи.
Я хотел услышать аргументы, и какие-то новые кейсы где спринг не нужон а из тебя только поток говна льется с минимумом полезной нагрузки.
То что он ряде сфер спринг не нужон или его оверхед в каких-то случаях слишком дорог это и так всем понятно.
И с чего ты взял, что я только с тобой разговариваю? Может другие аноны пояснят.
Пошел нахуй. Хуй пожри а не кейс. Не бывает второй оказии создать первое впечатление: ты - культист, а культистов я хуями кормлю а не аргументами. С вами, пидарасами, иначе диалог невозможно вести, вы любую аргументацию к перемоге сведете.
Но не ту, от поломки которой больно и не так, чтобы это нельзя было легко обойти. Код 7 джавы больше не компилируется на новых JDK.
Слишком громоздко. Хочу писать .selectMax
Почему? Если из-за var то похуй.
Ясно ясно. Значит тебе ее и рекомендовал. Ну вот тебе отзыв еще один, раз мне не доверяшь https://www.youtube.com/watch?v=dGVqrGmwOAw&t=1475s
Че ты мелешь? Source и target семерки никогда не были однознаковыми, однознаки пошли начиная с девятки. Для седьмой джавы source и target всегда были 1.7.
Смотря кто спрашивает
Ну значит 1.7 укажи.
Её написал Брайан Скуфц ещё до того, как стал заправлять джавой.
Если тебя угораздило поддерживать легаси на джаве - пойдет. Новые проекты на джаве не стартуют, кста. Именно из-за того, что написано в этой книге
> Новые проекты на джаве не стартуют, кста.
> ВСЕ СЛЫШАЛИ???
> НЕ СТАРТУЙТЕ!
> МАМ НУ ПОЧЕМУ ОНИ СТАРТУЮТ!!!! Я ЖИ СКАЗАЛ ИМ!!
А че ядро канкаренси в жабе сильно изменилось с того времени? Или ты из лагеря шарпушек, которые вообще не ебут как оно там работает, а просто используют async/await?
Как обосновать использование например микронавта в банке?
Например у меня в будущем будет задача переписывания с нуля легасевой хуиты на спринге и прочего некрокала деплоемого в томкат.
Сервис достаточно высоконагруженый. Море интеграций. Кафка jms и rest с соапом.
Заливать про то что это дерьмо хорошо в попеншифт будет деплоить и что кластироваться будет хорошо?
Что метрики норм отдавать будет.
>ты из лагеря шарпушек, которые вообще не ебут как оно там работает, а просто используют async/await?
Скорее всего this.
Но вообще, шарпей пиздит и придумывает сказки на ходу. Потому что если бы на другие языки переходили бы исключительно из-за тягот поддержки конкарренси, то переходили бы не на шарп, и не на прочий императивный хлам, сама суть которого и порождает тяготы конкарренси. А переучивались бы на фукнкциональную парадигму и какой нить хаскель или F#.
Мимо
>А переучивались бы на фукнкциональную парадигму
Ха-ха-ха-ха-ха-ха.
Я как раз работал в проекте где купились на эту хуету и написали всё на Скала и Акка. Самоё правильное решение в этом проекте было: выкинуть всё нахуй и переписать на джаву и экзекуторы.
Все верно.
Поэтому считать, что конкарренси джавы - это шоустоппер, это мягко говоря делать из мухи слона.
Бранч предикшен говорит какой код будет исполняться, а не какая ветка условия выполниться. В общем случае он может предсказывать ситуации когда происходит исключение доступа к памяти, с.м. Spectre.
Нихуя не понял.
Сильно язык поменялся с тех пор?
мимо шел кодил на Java в универе
что за бред.
иди посмотри байткод который собирает javac это раз.
как он форы ифы и прочие свитчи разбирает.
а во вторых какой нахуй спектр в жвм?
а ты точно прогромист?
>байткод который собирает javac это раз
Ты же в курсе, что жвм этот байткод как мясорубка перерубит и изменит просто пиздец как?
Хороший способ узнать, что действительно там будет - это через jmh https://psy-lob-saw.blogspot.com/2014/08/disassembling-jmh-nano-benchmark.html
>а во вторых какой нахуй спектр в жвм?
А это уже оптимизации процессора. Не останавливается же все на жвм.
Мима
по ссылке какая то хуита. ничего там про джапмы которые генерятся байткодом из условных операторов нет
а вот байткод очень близок к асемблерному коду. с переходами по меткам
>а вот байткод очень близок к асемблерному коду
Ты долбоеб? Компилятор никаких оптимизаций не делает практически. Хуйню несешь какую-то.
>по ссылке какая то хуита
Хрен знает, там написано как получить асм, то что реально передается процу, а не твои маняфантазии.
Бля, там шарписты одни в комментах
>Здесь есть немного магии, так как библиотека используется reflection, но это чисто технический, не особо принципиальный момент.
пук
>а ты точно прогромист?
Пиздец ты даунич, лучше бы молчал.
>иди посмотри байткод который собирает javac это раз.
>как он форы ифы и прочие свитчи разбирает.
>а во вторых какой нахуй спектр в жвм?
1. Речь шла об if-ах, пиздоглазый ты наш.
2. Spectre это уязвимость в Intel процессорах которая основана на особенностях бранч предиктора. Я специально написал по английски, но ты все равно умудрился обосраться https://meltdownattack.com
3. Байткод напрямую может исполнять только какой нибудь picoJava или JOP но это экхотика которой почти никто не пользуется. А в реальности у тебя или интерпретатор - где свич-через-свич независимо от кода. Или JIT который уже генерирует условные переходы процессора, даже для свитча, собственно про которые и шла речь. И где Spectre как раз актуально в полный рост
хотя конкретно про
>он может предсказывать ситуации когда происходит исключение доступа к памяти
это скорее Meltdown
.
Как будто не Овер сильно поменялся, в любом случае у жабы один закон который прост, все меняется но так что работает и с прошлыми версиями, так что ничего грубого не случилось. Имхо
>Язык запросов в виде цепочки объектов и методов читается хуже, чем SQL
Нихуя себе.
>по сути это — особый язык, который надо учить.
НИХУЯ СЕБЕ. Это мне, джава программисту, для того, чтобы использовать ORM придётся учить лишнюю джаву?
Как думаешь?
Куда нужно гуглить? Класс console, метод printf(), что нужно использовать для этого?
Meh. Такая жа аргументация, как в статье, в сообществе джавистов циркулировала десятилетие, и это не мешало JPA здравствовать и процветать всю дорогу. Смешной будет пранк, если гоферы таки поступятся своими принципами и затащат ORM-кал себе по самые гланды. Меняются языки, меняются тренды - промытки не меняются никогда.
А на чём стартуют?
Я недавно зашел в дев и нашел там расшифровку термина "пупуни". Это типа ласковый аналог слову "мышь". Типа "серая мышь".
Причем тут жабка-тред?
Угум. Только ты как-то рано/поздно пишешь. Вторник все таки. У тебя что-то случилося?
0 часов 0 минут
> в сообществе джавистов циркулировала десятилетие, и это не мешало JPA здравствовать и процветать всю дорогу
у меня теория что это из-за галер. Галерам чисто написать по тз, сдать демонстрацию и забыть. Оптимизациями и поддержкой галеры редко занимаются. В таком случае да, хибернейт сможет немножко съэкономить времени, которое потом надо будет тратить на копание в кишочках хибернейта или его выпиливание. Но делать это будут уже другие чуваки
Не знаю. Эта хрень весьма хтонична, ОРМы существуют наверное столько же времени, сколько ООП как таковой. Интернет грит, первый ORM вообще в smalltalk появился (toplink). Потом в 90х его переписали на джаву, а еще позже придумали стандарт JPA (вошел в Java EE 5 в 2006м). Хз какие тогда существовали галеры и чем они руководствовались, все очевидцы давно вымерли от старости.
эксперименты всегда были. Они же не знали что это будет неудачный эксперимент
Тыскозал?
О, вот и промытка-культистка вылезла. Эта гнида совершенно нихуя не понимает по теме, но обсирает, руководствуясь стадным инстинктом.
Пробовал указать так, но нихуя:
@SpringBootTest(classes = {SecondMapper.class}) и так @SpringBootTest(classes = {SecondMapperImpl.class})
Это тебе нужно обосновать свой высер.
Обычно если не подходит юнит тестирование используется мок-тестирование.
Это копия, сохраненная 2 марта в 03:35.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.