Это копия, сохраненная 13 сентября в 18:50.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Мне этот перекат не нравится. Во первых слишком быстро, не успели попрощаться с тредиком. Во вторых шапку нахер снесли.
Лучше такой, чем с петросянством в стиле КВН. Газы он там нюхает, блядь.
>>3181414 →
Union. Ты читать не умеешь?
Создатели говнокотлина заплатили Red Hat, чтобы они тихо слили Ceylon в Eclipse Foundation. Без этого их говноязык не был бы нужен никому.
>>81451
Два месяца только.
>Ты читать не умеешь?
А что если да? В любом случае, на вопрос ты не ответил. Зачем это в жабе, если есть ad-hoc полиморфизм ну и sealed с pattern mathcing?
>заплатили Red Hat
А гуглу они тоже заплатили? Пруфы-то будут?
Че за эвент? Помню с одним кунчиком делали FSM-ку, ну вот примерные наброски:
https://pastebin.com/GFR6T8qU
Основная идея, мол вот есть OutputSignal и InputSignal. Есть стейты. Сами переходы детерменированы входными сигналами и неплохой тайп сейф выходит, который даже идея подсвечивает.
Плюс можно распределить по пакетам, полностью скрыть все конструкторы и оставить только StartState и возможность создания сигналов. Изначально так и было, но слишком громозко, я все на record заменил тут.
Главное, что я непоняв, так это как модульную структуру сделать в этих автоматах.
А что там практиковать-то? foreach уметь делать?
На счет женериков, попробуй получить Class<? extends List<Integer>> без кастов.
Попробуй заставить компилятор найти верхнюю границу String и Integer. Иначе говоря <T extends Integer & String>.
Можно еще попробовать сделать тайп-сейф бесконечный tuple. Типа Tuple<T...>
Из более практического, сделай intermediate operations ( https://openjdk.org/jeps/461 ) для Stream, которая находит all permits; лениво само собой.
Ты неграмотный и, похоже, совсем не способен изучать даже самые фундаментальные вещи.
В чем там неграмотность была? Я просто попросил написать аналог этого https://en.cppreference.com/w/cpp/utility/tuple
Почему вот людей, который вот так беспочвенно накидывают говно не банят?
О, хаскель. А к чему ты это принес именно сюда?
>>81842
Так аргументов и не принес, крутышка.
Я вот в последнее время думаю, а возможно ли как-то получить n-элемент этого тупла, ну и чтобы тип вывелся корректно через var.
Ну или хотя бы объдинить два тупла n и m размеров, чтобы вышел тупл n+m размера..
>О, хаскель. А к чему ты это принес именно сюда?
Задание для джавы, только примеры на Хаскеле.
Какая-то типичная шизофреническая дп задача. Судя по этому https://habr.com/ru/articles/211200/ , да нужны биноминальные формулы.
Спс, посмотрю
Объясните пожалуйста какого хуя тут ассершен эррор выпадает.
Щас бы создавать проекты на чём-то кроме последней джавы ЛИБО форке джавы с ещё большей обратной совместимостью.
Я подумал что потому что каждый поток копирует себе в стек значение и поэтому оно разное,но там примитив,а примитивы сравниваются по значению
Каким образом в разных потоках значение может быть разным если объект инстанциируется одним потоком и потом не меняется так как сеттера нет?
Потому что значение n записанное в конструкторе может быть не видно в других потоках. Т.е. тебе надо создать объект в одном потоке, а ассерт вызвать из другого.
Источник надёжный, но проверенный.
🍑ц, а это вообще легально? Какого хуя состояние объекта подтягивается позднее в этот объект, чем сам объект становится доступен?
Даже Maven с 4-й версии будет требовать JDK 17+, это при его консервативности-то. Буквально в прошлом году вышла последняя версия, которая заявляла о поддержке семёрки.
>>3180731 →
>>82422
ну честно ты как-то плохо читаешь, что забываешь, все, что было в книжке написано. про таких говорят, читаю книгу, вижу фигу. может не стоит оно того, м?
Да просто ты ж глупенький. Я тебе кидал ссылку на тест, ты похоже хуину забил и такой, а почиму так. А это легально?? Опущ тут только ты.
Ты чё рванул-то, опущ?
В яндекс браузере есть встроенный переводчик.
Их переводят за год-два.
Инфы мало, поэтому приходится читать все книги. Могу сказать, что даже в них нет всей нужной инфы.
До 2013 года. Старее нет смысла читать. Там вообще неактуально.
Ломает смысл мавена. Мавен всегда был оплотом стабильности, и благодаря этому его качество возвышалось на 20 голов над любыми копроаналогами. А мавен 4 это какое-то дегенеративное изменение с поломкой обратной совместимости непонятно что улучшающее и только ухудшающее, причём так, что буквально обнуляет смысл мавена, как я уже сказал.
Пишу аннотейшн процессор, генерирую валидный код на этапе компиляции.
Ну раз ты так скозал.
Когда переведут, тогда и узнаем. Но я каждый день чекаю все торренты и каналы в телеге, где выкладывают новые книги.
Лучше бы поискал в интернете онлайн-книги
>Я аргументированный абзац текста написал уже.
У тебя там из аргументов, только ломание обратной совместимости, всё остальное просто высер не имеющий отношение к делу.
Там сложность алгоритмов ниже, чем в всерос олимпиаде школьников муниципиального уровня. Если в хуяндексе спрашивают алгосы ниже этого уровня... То наговаривают что ли в мвп-то?
Можно ли найти работу на фриланс-бирже? Я не из России, потому могу работать с западными компаниями.
>eclipse
Написав парочку хелоувордов в еклипсе и vs code, могу с уверенностью сказать, vscode если не лучше, так точно гибче и понятнее. Тем более если придётся писать html, css, js, java, как при работе со спрингом.
Если бы у тебя были аргументы ты бы давно их привёл, а так ты только высираешься ты скозал на все вопросы про аргументы.
Один раз я придумал задачу чтоб пригодились алгоритмы, "продал" ее аналитикам, чтоб те бизнесу подсунули эту фичу. Но потом решил ее проще средствами бд.
Получается ни разу за 3 года.
>Как часто на работе требуется умение в алгоритмы?
Понимание нужно на постоянной основе.
Написание собственных алгоритмов - не нужно.
Я их и давно и привёл, в самом первом моём посте.
https://pastebin.com/MHNmPqic
Форма и контролёр, контролёр отлично отрабатывает ошибки, возвращая ту же форму. html страничка не отображает сообщения при ошибках.
Что это может быть?
Меня целиком тошнит от ЕЕ, Спринга и всего этого стека. Ведь есть же стандартная библиотека со всеми нужными функциями, можно было написать легковесные библиотеки, чтобы проще работать с разными аспектами. Нет, они взяли и запилили какого-то монстра, который по уровню сложности как 10 джав. Люди годами учат и всё равно всего не знают.
Золотой подход к дебагу — ищешь момент, когда всё работает, потом ищешь момент, когда всё не работает и постепенно сближаешь эти моменты, таким образом находя баг.
вроде можно в идее по какому-то адресу подключаться к нужному сервису для дебага
У меня оффер от яндекса был что я полил тухлой мочёй из бутылки, и меня пугает вот это https://4ege.ru/informatika/68363-demoversija-ege-2024-po-informatike.html .
Ты школьник? Судя по офферу, нет. Че это тебя пугает тогда? Да и что конкретно..
>>83856
Такая хуйня на самом деле, которая грязными хаками изменяет аст, делая некий диалект из жабки милой няшной. Так еще и сам этот лобок нельзя хоть как-то абстрагировать. В анноатции запихнуть анноташки лобка низя, наследоать их нельзя. Ниче нельзя, ставь руками все.
> Такая хуйня на самом деле, которая грязными хаками изменяет аст, делая некий диалект из жабки милой няшной. Так еще и сам этот лобок нельзя хоть как-то абстрагировать. В анноатции запихнуть анноташки лобка низя, наследоать их нельзя. Ниче нельзя, ставь руками все.
И всё ещё лучше чем просто на джаве писать без лобка.
Мм, а рекорды разве не решают большую часть проблем? Ну а геттеры сеттеры по заветам бугаенко нахуй нинужны.
Остаются только билдеры, вот тут да, проеб. Надо бы, чтобы кто-то гетцу сказал, что дефолт значения модно круто, фпшно.
Почти.
> Мм, а рекорды разве не решают большую часть проблем?
Рекорды немутабельные, а мутабельность очень часто нужна.
> по заветам бугаенко нахуй нинужны.
Ты всем постам зелёных на сосаче веришь, что тебе какое-то дело до ещё одного тролля?
> Остаются только билдеры, вот тут да, проеб.
Билдеры проёб в лобке как раз, когда они нужны на самом деле тогда то что лобок делает бесполезно.
>а мутабельность очень часто нужна.
Лучше ее ограничить до такой степени, чтобы осталась лишь пара мест. Имхо.
>Ты всем постам зелёных на сосаче веришь
Енто шутка, но сеттеры и геттеры действительно странная концепция какая-то. Правда из меня архитектор тот еще, вооот опыта наберусь...
>Билдеры проёб в лобке как раз
Ну тем более. Почему до сих пор нет джепа с дефолт значениями. Ряльно нужная фича.
Ну, дефолтные значения сами по себе ситуацию не исправят. Нужны неймед параметры и вот тогда можно уже дефолты навешивать.
Ну согласен. В принципе, даже лобок теоретически их бы мог сделать https://github.com/Auties00/NamedParameters
А уж оракл и подавно сможет. Держим кулачки, что ж.....
Да хуй там копрооракл сделает. Надо джаву форкать и вот тогда заживём. Чтобы не копрокотлин сделать с копросинтаксисом, а как джава во всём, но только лучше.
>>Ведь есть же стандартная библиотека со всеми нужными функциями, можно было написать легковесные библиотеки
Тут либо тебе придется полностью все переписывать для каждого проекта, либо ты изобретешь монстра вроде спринга, только сильно хуже и сложнее
А что не так с котлином то?
Одни говорят нахой не нужон, ибо ломбок и так все фичи дает.
Другие говорят что добавляет немного сахара типа замены "Optional.ofNullable().map().orElse()" на "?" и подключается как либа
> А что не так с котлином то?
>поделка целиком завязанная на идею и гугл
>без спек
>без JEPов
Даже не знаю, что тебе сказать.
> Надо джаву форкать и вот тогда заживём.
Так форкай, вон гугл форкнул, у него получился котлин.
Я вангую ты круче, у тебя будет
> джава во всём, но только лучше.
ебать, долбоёб земля тебе пухом, братишка.
> Ты ебобо?
Нет ты. Маня, форкнуть java нельзя, копирасты тебя выебут за нарушение спек. Как выебли микрософт, а потом гугл.
Чел, мне ж похуй какие там вендоры и спеки. Я на нем писать собираюсь, а не бизнес строить или йоба фреймворк изобретать. Если он через 10 лет сдохнет - я не много потеряю.
Меня интересует есть ли там проблемы с совместимостью с спрингом, ломбоком, маструктами всякими. Не начнут ли внезапные НПЕ в рантайме вылетать или что то еще.
То есть мне интересно не приведет ли сахар к диабету.
Гугл не форкал жебу. Хуйню несешь.
>>84106
Лобок не даёт compile time nullable safety. Ну и дефолты с неймед параметрами. Корутины тож не дает.
Лично для меня главная проблема котлина, что у него нет какой-то индентичности... Он себя позиционирует, как просто тупо улучшенная жаба. Типа знаешь, скорее диалект, а не отдельный яп. Собственно, как мне видится, оракл просто стащит удачные нароботки котлина, а он в итоге станет не нужным. Грустно это как-то, впрочем ниша у него есть, благодаря гуглу. Та же скала ее не имеет по итогу.
>compile time nullable safety
>дефолты с неймед параметрами
Ну вот я том же. Язык нужен ради 2-х фич.
Тогда мб попробую для написания отдельных либ, где сломать что то сложнее. А в основной код его добавлять причин все еще нет.
> Я на нем писать собираюсь
Сначала купи идею, потом ещё купи идею, потом ещё и ещё потому что ни где больше ты писать не сможешь. А завтра какой-нибудь дядя в купертине, решит что так писать ты больше не будешь.
Нравится сапог в жопе, пожалуйста.
>>Сначала купи идею, потом ещё купи идею
Прекрати тряску, я уже купил бесплатный китайский ультимейт.
>compile time nullable safety. Ну и дефолты с неймед
Что убивает перформанс, как и все остальные нововведения
>>3173709 →
Ну Котлин это язык для хайпа, а не для перформанса
анноташки run time. Тут проблема в системе типов больше, ее простым фреймворком не решить. Только компилятор если пердолить, что очень грязно и асуждаемо.
Зарубица бы на анус, но срок слишком большой... Посмотрим короче, но я чет сомневаюсь. Через 10, только вальгалла выйдет думаю, а в прод через 15-20.
>анноташки run time
Какой рантайм? Ставишь анноташку и идея тебе прямо в редакторе подсвечивает проблемы с нуллабилити
Это кривая хуйня. Причем она не вызывает Compile time error или хотя б ворнинг.
Соцсоревнование.
Нормальная хуйня. Почему они должна вызывать компайл тайм эррор, когда мы говорим о компайл тайм сафети?
>Ты рофлишь? На нпе жалуюсь.
Так ты getObject не отметил как @Nullable, это значит что идея его считает нон-нулл
>Ну например для того, чтобы быть точно увереным, что нигде нет этой хуйни. Мне же не по редактору блять бегать с этой хуитой?
Есть инспекции, Ctrl+Alt+Shift+I -> Nullability and dataflow problems
ты как первый раз идею в руки взял
>не отметил как @Nullable
Ты понимаешь, чего именно требуешь? Пометить все, все нахуй методы вот этой хуйней? Мне че блять вообще делать нехуй? Давайте вы или все автоматом будете делать или Nullable или NotNull. А не смешивать две стратегии, из-за чего мне сука требуется все метить.
>Есть инспекции
Хочу стандартный сука ворнинг. Мне не нравятся проприетарные способы. Тебе нравятся, ты ими и довольствуйся, меня не впутывай. И я не хочу сука пользоваться анноташками жидбрейнсов, мне они неприятны.
>Ты понимаешь, чего именно требуешь? Пометить все, все нахуй методы вот этой хуйней? Мне че блять вообще делать нехуй?
Ты не рвись давай, скажи еще тебе делать нехуй кроме как вопросики у типов расставлять
А, нет, вопросики это другое, расставить вопросики никогда не лень
>>84479
>Хочу стандартный сука ворнинг. Мне не нравятся проприетарные способы. Тебе нравятся, ты ими и довольствуйся, меня не впутывай. И я не хочу сука пользоваться анноташками жидбрейнсов, мне они неприятны.
Дело твоё, я пишу софт на перформансе, и не люблю убивание 10+% производительности на хуйню
>нехуй кроме как вопросики у типов расставлять
Я надеюсь они в котлине не такую же хуйню сделали, со смешением стратегий. Если да, то это просто мусор.
В жабе, по идее, надо будет просто знак вослицания над типом поставить, и тебе не придет null. Все. Гарантия как с примитивами.
> не люблю убивание
А, ну т.е. вот эти вот проверки вставленные жидбрейнсами перфоманс не убивают, а чеки при компайле пизда как по рантайму бьют? Ты шиз?
Обернул что тебе хочется, аннотировал согласно документации фреймворка
Спринг на сколько я знаю использует эту штуку
>А, ну т.е. вот эти вот проверки вставленные жидбрейнсами перфоманс не убивают, а чеки при компайле пизда как по рантайму бьют? Ты шиз?
Да
>>3173709 → -> на топовый хотспот посмотри
>Ты понимаешь, чего именно требуешь? Пометить все, все нахуй методы вот этой хуйней? Мне че блять вообще делать нехуй? Давайте вы или все автоматом будете делать или Nullable или NotNull. А не смешивать две стратегии, из-за чего мне сука требуется все метить.
Так так и есть, все что не аннотировано автоматом считается not null, поэтому он тебе ворнинг на getObject и не показывал
Я не понял, что ты хочешь сказать... Компайл тайм проверки, не трогают рантайм. Это очевидно, например по женерикам, они один раз проверились и все. Их больше не существует, ну почти.
А тут опять непоследовательность наблюдается, рантайм перфоманс мы убьем, а вот в компайл тайме нихуя не скажем.
>>84490
Посмотри на toNull2. >>84441 Чем оно считается? Правильно, @Nullable. Зачем смешивать две стратегии?
>>84485
Ну помимо спринга думаю дофига фреймворков. И мало кто будет котировать их анноташки. Впрочем они по идее совместимы еще с лобковыми и хибер валидатором.
Оборачивать тоже не очень стратегия, просто рутинная работа, которая будет повторятся, если фреймворк изменится.
>Чем оно считается? Правильно, @Nullable. Зачем смешивать две стратегии?
Я не вижу что там происходит в методе, возможно ты просто пытаешься меня наебать. Идея скорее ложно сработает на отсутствие нулов, чем на присутствие
>Зачем смешивать две стратегии?
Они не смешиваются
>Ну помимо спринга думаю дофига фреймворков.
Номинально - да, но фактически - нет.
>Оборачивать тоже не очень стратегия, просто рутинная работа, которая будет повторятся, если фреймворк изменится.
Ну если не нравится такая рутина - можно просто писать без ошибок, тоже вариант
Опять же, я так понимаю оборачивать джава либы вопросиками - это совершенно другое, очень удобно и прогрессивно, верно?
>Я не понял, что ты хочешь сказать... Компайл тайм проверки, не трогают рантайм.
На скрине у тебя котлиновские рантайм проверки нулов
Очевидно нулл сафети работает не только в компайл тайме
>Я не вижу что там происходит в методе
Он такой же как и первый, прост анноташки нет.
>Идея скорее ложно сработает на отсутствие нулов
Ну это да. Наверное точнее сказать, что в некоторых ситуациях она сама может разрулить ситуацию, а в некоторых мне руками надо ставить. И тк нет гарантии, что она верно разрулит, то.. Как следствие лучше ставить все руками.
>Ну если не нравится такая рутина
Хмм... Вот цитата хорошая When people say “but most business logic bugs aren’t type errors,” I just want to show them how to make bugs into type errors.
Мне бы очень хотелось перевести хотя бы рутину в ошибку типов, а не заниматься этой хуйней. На данный момент... Пока это невозможно(
>Опять же, я так понимаю оборачивать джава либы вопросиками
Еще раз, я хочу оборачивать знаками восклицания. https://openjdk.org/jeps/8316779
К слову, для вайлдкардов это тоже не робит. Хотя это и ожидаемо, тк слишком сложно.
>>84499
Компайл тайм как раз там и не работает. В жабе по крайней мере.
А рантайм проверки.. Я и ручками/лобком могу расставить.
А на скрине у меня последствие использования анноташек от жидбрейнсов.
>Он такой же как и первый, прост анноташки нет.
Анноташки нет, но идея видит, что ничего кроме нула оттуда вернуться в принципе не может, потому что ты как обычно захотел всех наебать, закрыв второй бранч с нулом тултипом (никогда такого не было и вот опять!)
Вернее не так - идея видит что ты явно возврщает из функции нулл в одной из случаев, а значит функция нуллабл
>Компайл тайм как раз там и не работает. В жабе по крайней мере.
>А рантайм проверки.. Я и ручками/лобком могу расставить.
>А на скрине у меня последствие использования анноташек от жидбрейнсов.
Ничего не понял
Вот пожалуйста посмотри СЮДА -> >>3173709 →, верхняя строка на скрине, рантайм чеки параметров на нулы от котлина
Ну так он тебе там подсвечивает второй свитч наверное как проблемый, с unreachable code
Да. Он знает, что этот код недостижимый, но при этом считает, что налл может быть и хуярит Nullable.
Ладно, надо заканчивать, а то скажут, что холивар.
Вероятно потому что инспекции разные
> Нет ты. Маня, форкнуть java нельзя, копирасты тебя выебут за нарушение спек. Как выебли микрософт, а потом гугл.
Какой же даун, блядь...... Джава GPL.
Как будто бы это намного лучше, лул.
> Через 10, только вальгалла выйдет думаю, а в прод через 15-20.
Ты либо нахрюкиваешь из шарпотреда сам прекрасно понимая что срок доставки фич на джаве в прод это пара лет, либо твоё восприятие искажено было тем что джава с недавних пор начала часто релизиться. 20 лет назад была java 1.3, через 20 лет будет java 50.
Почему нахрюк-то? Мы ждем вальхаллу сколько лет? В 2014 говорили, что мб в 9 версии будет превьюшка. Шел 2024...
>джава с недавних пор начала часто релизиться
Скорость разработки от этого не ускорится. Просто куча минорных обновлений. Спасибо, че.
>В 2014 говорили, что мб в 9 версии будет превьюшка. Шел 2024...
Джава 9 вышла в 2017, а не в 2014. И хотелось бы пруфы того что ты сейчас не галлюционируешь. О вальхалле задумались гораздо позже 9, в 9 думали совсем о другом.
> Скорость разработки от этого не ускорится. Просто куча минорных обновлений. Спасибо, че.
Ты даже не понял, что тебе донести пытались. Что взять с дауна.
>Еще раз, я хочу оборачивать знаками восклицания. https://openjdk.org/jeps/8316779
Ну так синтаксис для самого распространенного случая должен быть самый удобный и короткий. А самый распространенный - это ненулевая ссылка. Так что это как раз нулевые нужно отмечать.
Ну в таком случае та вальхалла про которую они говорили это не то что хотят завести сейчас. Как очевидный пример это те же нот нулл типы.
Люди, которым это реально нужно было, уже 10 лет назад сделали инфраструктуру для запихивания объектов в байтбуфферы
Ну факт в том, что ждали 10 лет назад, ждем и сейчас, ну и будем ждать еще черт знает сколько времени.
>>84568
А расскажи как ты байтбуфферами решишь проблему с ArrayList<int>?
Типа это основной поинт, что женерики наконец-то блять расширят до примитвов. И не надо будет вот эту хуйню на пике поддерживать. Все нахуй вырезать до Function<U, T>.
>>84557
Я честно сказать нинаю какой самый распостраненный случай. У меня нет статистики. Просто поинт в том, что я хочу, что если я сука пометил NotNull то никогда и ни при каких условиях туда не придет null. Это должно гарантироваться на уровне компилятора, а не проверочками в рантайме.
> Ну так синтаксис для самого распространенного случая должен быть самый удобный и короткий. А самый распространенный - это ненулевая ссылка. Так что это как раз нулевые нужно отмечать.
Это не совместимо обратно. Вот если бы в джаве сделали механизм обновления исходного кода и джарок до новой версии чтобы можно было и брекинг ченджи вводить, и фактически не терпеть от них никаких проблем, вот тогда бы зажили...
>А расскажи как ты байтбуфферами решишь проблему с ArrayList<int>?
А в чем собственно проблема? Есть Eclipse Collections, нужно - используй. Если какая-то перформанс критикал штука, там скорее всего свою коллекцию напишешь все равно
Проблема на пике, чел. Это просто пиздец, там больше 60 сука разных функций. Это просто маразм.
И вот тебе еще пик. Как думаешь, сколько тут делается боксингов? Бьет ли это по перфомансу, как думаешь?
>И не надо будет вот эту хуйню на пике поддерживать. Все нахуй вырезать до Function<U, T>.
Так не ты же ее поддерживаешь, тебе-то какая разница?
Ну мне большая разница. Например хочешь написать универсальную функцию для всех типов, пиши еще сверху 8 других. Если же ты обобщаешься по двум параметрам... То хуй знает, завещание писать?
Вот пример такой функции... Сложение двух любых Number.
>>84598
Если бы он был настолько умный, то вальхалла бы и не требовалась.
>И вот тебе еще пик. Как думаешь, сколько тут делается боксингов? Бьет ли это по перфомансу, как думаешь?
Я думаю что если мне нужен перформанс, для меня сейчас нет никакой проблемы написать функцию с примитивными параметрами.
У тебя глазки от фона и шрифта не устают? В чёрной чёрной комнате, как настоящий какир пишешь?
> Если бы он был настолько умный, то вальхалла бы и не требовалась.
Пока что ты не привёл пруфов что он не настолько умный.
У меня свет светит вовсю, няш. Черный няшно выглядит и вроде цвета шрифтов не слишком вырвиглазные. Можешь свою темку показать.
>>84605
Ну в оракл посчитали также, хуйнули 60 функций для примитвов. Была бы вальхалла этой хуйни бы делать не пришлось. Мне тоже придется это сделать, если я захочу сделать что-то универсальное.
>>84612
Ну на тебе рандом ссылку https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Performance-cost-of-Java-autoboxing-and-unboxing-of-primitive-types
Это известная проблема вроде.. И типа если можешь не боксить, то лучше не боксить.
>Например хочешь написать универсальную функцию для всех типов, пиши еще сверху 8 других. Если же ты обобщаешься по двум параметрам... То хуй знает, завещание писать?
>Вот пример такой функции... Сложение двух любых Number.
Ты же можешь ее написать. Если тебе эта математическая абстракция так сильно важнее перформанса - ты можешь это давно сделать, без завещания.
Ты можешь еще хотеть чтобы обязательно была команды "сделать заебись", и джава будет плохим языком, потому что так не может?
Ну так поведай, каким образом ораклу удалось лицензировать джаву под гплем но при этом потащить кого-то в суд, раз такой умный.
Миллион раз уже эту статью обоссывали. Бенчмарк тупо не воспроизводится. Откуда взяты результаты в статье неизвестно.
Не ворочайся, слитое.
>Мне тоже придется это сделать, если я захочу сделать что-то универсальное.
Ты можешь сделать банальную кодогенерацию вместо дженериков, это пару дней максимум, вместо ожидания в 10 лет.
> У меня свет светит вовсю
Это хорошо для твоего лечащего окулиста. Он с тебя хорошо бабок снимет.
>Ты же можешь ее написать.
Ряльно? Покажи пж. Очень интересно. Если вот ты предлагаешь пик 3 делать, и еще где-то сверху написать метода 4 для примитивов.. То блин, это слишком грязно, любой скажет, что ты хуйню какую-то наворотил.
>>84621
Ну на тебе еще один https://thospfuller.com/2024/03/12/java-autoboxing-performance/
Мне так-то впадлу искать эти тесты, поскольку само существование проекта вальхалла говорит о том, что это перфоманс проблема.
>>84629
Меее, но исходники все равно будут выглядеть убого. Не важно, руками я это делаю или как-то иначе... фактически костыль проще становится писать, не более. Я хочу чтобы няшно все было.
>>84634
Зато очки няшные будут, буду вумным казаться. Везде надо искать плюсы
> Ну на тебе еще один https://thospfuller.com/2024/03/12/java-autoboxing-performance/
Шарпогниль написавшая эту статью даже не удосужилась сурсы бенчмарков предоставить. Ясно.
Вообще, по поводу add, его вряд ли даже с приходом вальхаллы можно будет чисто решить для всех Number, поскольку их иерархия ничем не ограничена. Поэтому... Можно сделать свою)
Поскольку рекорд будут вэлью тайпами, проблем с перфомансом не будет. А счас это использовать себе дороже.
>Ряльно? Покажи пж. Очень интересно. Если вот ты предлагаешь пик 3 делать, и еще где-то сверху написать метода 4 для примитивов.. То блин, это слишком грязно, любой скажет, что ты хуйню какую-то наворотил.
да, понял, ну реально тогда только через перегрузку и опять же кодогенерацию
как мне кажется, вызовы через интерфейсные функции, супертипы и втейблы еще больше убьют перформанс
Я думал там сверх зп,я поэтому и задал в тредик вопрос
Хуита. Вот если бы они могли выходное значение выводить, это было бы что-то, а так... Ряльно похуй.
Базища.
Рад, что оракл так сильно вкладывается в своих инженеров, такими темпами через несколько десятилетий джава догонит C# времен windows only.
какого хуя шарпопетух тут высирается
а удаляют мои посты
Какого хуя этот ваш spring data jpa переиспользует созданые обьекты после save ?
например
var h1 = repo.findById(1);
h1.setField(123);
var hUpdated = repo.save(h1);
assertEquals(h1, hUpdate);
нахуя так по опущенски сделано?
очевидно же что если я запрашиваю результат сейва я ожидаю что это будет новый экземпляр а не обновленный старый.
как же хорошо что я всегда сначала тесты пишу прежде чем код.
я реально ожидал что ссаный спринг дата использует чистые функции без сайдэфектов. а тут такой пиздец
>очевидно же что если я запрашиваю результат сейва я ожидаю что это будет новый экземпляр а не обновленный старый.
Кто то мог бы тебе возразить что ты же обновляешь конкретный кортеж под конкретным PK, новых не добавляешь.
>нахуя так по опущенски сделано?
Потому что JPA. Потому что есть персистенс контекст, и работая с JPA ты работаешь не столько с базой данных, сколько с содержимым этого ПК. А содержимое ПК устроено таким образом, что на одну запись в базу приходится один инстанс @Entity-класса, который обычно мутабельный.
>>86614
>я реально ожидал что ссаный спринг дата использует чистые функции без сайдэфектов.
Спринг.
Без сайд эффектов...
Боже, как ты наивен, бро.
может я не правильно использую этот спрингдата
но мне нужно обновить несколько связаных табличек с внешними ключами
и мне в логике нужны старые значения ентити ДО обновления
впизду я бы обычным скл запросом с препаред стейтментом это сделал гораздо проще.
ну охуеть короче
А какие конкретно у тебя значения после save могут измнеится-то?
Насколько я помню, там id разве что генерируется. Ну и коллекции меняются, но это немного другое.
Просто тут прикол в том, что тебе даже save не нужен, поскольку findById и так связывает это контекстом.
Тут наверное только в дто хуярить и обратно. Хотя, мб детачем можно как-то ебнуть, хз.
Да я пример просто простейший привел.
Там на деле поиск по составному ключу и обновление полей входящих в этот составной ключ
>Хочется, чтобы они все были подняты, и можно было на всё проставить брейкпоинты
Какие нахрен брякпойнты. Ты их тестить собираешься, или дебажить?
>У меня поднимается эврика и конфиг сервис, но они все не видят друг друга.
Сугубо проблемы твоего софта. Иди к своим протыкам-коллегам.
Дебажить. Когда всё собирается в докер, там оно работает, речь про локальный запуск.
Спасибо
А я потерял, теперь, веру в людей. Получается помощи ждать неоткуда
Естественно. Найди себе куна, развейся. Можешь проектики какие-то для души пописать, другой язык изучить. Или вообще в иную область залезть.
Единственное, не факт, что скоро пройдет. И таблетосы не советую.
>У меня вопрос, кто-нибудь сталкивался с таким явлением как выгорание?
У меня такое с 2022-го года. Вечное чувство отсутствия времени, ты листаешь новости. Постоянно какой-то уставший. Не помнишь какой сегодня день. Думаешь, к понедельнику проекты точно запилю. Потом смотришь в воскресение - бля, нихера не сделал. Только 3-4 часа за неделю отработал. Тоска ёбанная появляется. Чуть малейшее препятствие и опять сидишь грустишь. Думаю, ладно, щас пойду ёбну энергетик и тогда попрёт. Но потом усталость опять накрывает, ночью не спишь, встаёшь днём. Бывают проблески продуктивности, но в основном листаешь, листаешь, интернет. И так каждый день.
Дофаминовая яма хули
>И таблетосы не советую.
Почему? Я как раз смотрю в сторону АД-ов смотрю.
>Найди себе куна
Я негей
>Или вообще в иную область залезть.
Я вылез из иной области, в иных областях не платят деньгами, там ветками, бусами, камнями я хз
План такой. Экстренное увольнение и АД-ы. И не делать нихуя пару месяцев. Тем более сейчас лето вроде
Бля ты меня описал
И смотришь в клиент банк на остаток по импотеке, за который еще три года ебашить...
Соре, я не знаю что такое рп.
>>88219
https://andreabergia.com/blog/2023/07/i-have-written-a-jvm-in-rust/
https://www.theregister.com/2024/06/10/fortune_200_oracle_java_audit/
А у нас получается можно спокойно хуй забить из-за санкций?
Это ж только для тех, у кого коммерческая джава от оракла? У нас давно все на openjdk.
Адопт был, но после 11 вроде они перестали собирать.
Зулу - до 17 вроде собирали а потом их мс купил и обозвал азулом.
Коретто от амазона, живая ли хз - не юзал.
Беллсофт - не юзал.
Темурин - сборка от эклипса вроде, бывший адопт вроде - юзаю сейчас в банке.
Больше не вспомню сходу
джава или говно?
Было такое. Перестал красноглазить в нерабочее время. Полностью, нахуй. С удаленки вернулся в офис. Начал снова уставать к концу дня, из-за этого нормализовался сон.
По выходным бросил сидеть дома. Лишь бы не красноглазинг ебаный.
Вообще в офис конечно не охота.
Со времен ковидла все расслабились.
Но наверное надо просить место в опенспейсе и начинать в офис гонять
Осталось ещё догнать по медленности. Всего-то в 11 раз замедлится. И по количеству гетсетов.
Кыш кыш из нашего няшного тредика со своими срачами.
Выгорание от того, что берёшь непосильные задачи. А задачи непосильные, обычно, потому что ходишь по граблям. А по граблям ходишь, потому что нет качественной базы. А базы нет, потому что знания о технологиях получаешь не из академических курсов, книг, тренингов, а из статеек на хабре, видосов на ютубе или стаковерфлоу, а после того, как обсераешься - идёшь читать официальную документацию, а она часто сложная и хуёво написанная. Экономишь несколько дней, а потом теряешь недели.
Кастомизируют, просто большинству это не надо.
https://dracula.github.io/javadoc/jdk8/index.html
>>нет качественной базы.
У меня постгрес.
Нет никакой БАЗЫ, шиз. Это просто проявление снобизма и ЧСВ
>>знания о технологиях получаешь не из академических курсов
Они полезны только стажерам. Мидл и так знает как надо, часто лучше академиков. Он же практик, а не маня-теоретик.
>>книг
Книги разные бывают. Бывает сборник бест-практис, идеи "как нам обустроить айти", справочники по языку, инфоцыганские "чистый хуйнянейм", учебники хэд-фест. И для разных уровней нужны разные.
>>из статеек на хабре, видосов на ютубе или стаковерфлоу
Почти всегда там выжимка из доков + личный опыт применения. Это сильно лучше книжных рекомендаций "делойте хорошо, а плохо не делойте".
>>официальную документацию, а она часто сложная и хуёво написанная
По джаве обычно норм доки, с примерами. Не вспомню даже где был прям пиздец-пиздец не соотвествующий реальности.
>>Экономишь несколько дней, а потом теряешь недели.
Экономишь недели и месяцы. Мне не надо перечитывать книги и доки по спрингу, хибернейту, кучи всего смежного целиком, чтоб понять почему возникает какая-то неявная ошибка и как ее избежать. На уровне джун-мидл без этого никак.
Погружаться глубоко в доки имеет смысл когда уже сеньор, понимаешь почему и зачем сто то сделано, хочешь сделать что то нестандартное (когда просто гугл уже не поможет).
>часто лучше академиков
Ты себя переоцениваешь.
>Он же практик, а не маня-теоретик.
Чем тебе теоретики не угодили, чмонь? Это они решают, то как будет выглядеть какой будет система типов вальгаллы. Они же решили, за то какие будут женерики, формализовали jmm.
Больше того, эти теоретики повлияли на stream api.
Я уж молчу за просто коллосальное количество алгосов. Хули вот ты пиздишь? Сиди молча и перекладывай жсончики и круды пиши дальше.
Да, чел, выгорание происходит именно из-за этого. Иди нахуй
Клин клином. После 2022го, я забыл о выгорании - его место заняла хроническая депрессия, апатия и постоянные бессонницы ебаные. Рекомендую.
>>89654
Ебанько, ты правда считаешь что тот, кто 10 лет только и делает что оптимизирует строки под жвм и знает спеку джавы наизусть, сможет быстро ебануть фичу на уровне обычного галерного сеньки продираясь через тонны говнокода с костылями?
Я не к тому что жвм-инженнеры тупые, нет, там крутые спецы. Это ты долбоеб раз проецируешь одни знания и навыки на совершенно другие выдумывая какие то там базы
Мы вообще разные люди. У меня притензия к ресентименту теоретиков. Мол те хуйней какой-то занимаются, а вот прааактики.
>>Мол те хуйней какой-то занимаются, а вот прааактики.
Я скорее о том что нет какой то БАЗЫ тут часто вспоминают спеку, рфц, кнута и тп, когда не изучив всю теорию ты не смеешь приступать к практике и даже не программист.
Мидлу эти книжки академиков нахуй не нужны. Гораздо чаще надо просто изучить какие есть типовые подходы и набираться опыта решения проблем. А вот на уровне сеньки уже можно вникать что там как работает на самом деле, начинать писать что то кастомное.
Получение знаний в айти это не строительство дома, где нужно все планировать заранее и важно закладывать правильный фундамент.
Это скорее картинка, где сначала делаешь наброски, а потом добавляешь все больше деталей и оттенков.
Ну имхо, чтение академической литературы нужно, хотя бы для расширения своей когнитивной модели. Ну т.е. чтобы не оставаться в рамках шаблонного мышления, аля сюда вот этот паттерн впендюрю, сюда этот алгос. А типа иметь возможность, самому придумывать их. И без движения как бы "снизу вверх", мне лично видится это невозможным.
Вот если тоже приводить аналогию, это вот изучение доказательтств в матеше, типа нахуй студику их учить? В большинстве случаев это действительно имеет мало смысла и просто выветрится из головы, но для некоторых они как бы служат эврико моментом, типо вооот оказывается как красиво и изящно можно использовать формальную модель.
Хотя лично для меня изначально таким служила не литература, а копание в кишках жабы.
Не отрицаю конечно, что хуйней занимаюсь, ноо, мне похуй)
Мой тэйк был не про то, что академические байтоёбы гении, а те, кто лопатой перекидывают json'ы - пидорасы, а про то, что для многих людей работа становится в тягость из-за не выученных когда-то уроков. Я всего лишь поделился своими наблюдениями над некоторыми бывшими коллегами. Ты можешь быть дохуя синиор-девелопером и страдать каждый день, ведь ты конч, которому под сорокет и который не научился в слепую печать, не умеешь поднять постгрес на линуксах, не пользуешься хоткеями идеи, не можешь в градл, не умеешь по-человечески откатить коммит в гите итд. Казалось бы - мелочи, ведь никто не будет тебя увольнять или пиздить как худую свинью за то, что ты не читал книжку с кабаном, не знаешь про оконные функции в скуле, используешь мышь в идее или не умеешь по-босяцки грепнуть логи, но из таких мелочей и состоит жизнь.
>Ты можешь быть дохуя синиор-девелопером и страдать каждый день, ведь ты конч, которому под сорокет и который не научился в слепую печать, не умеешь поднять постгрес на линуксах, не пользуешься хоткеями идеи, не можешь в градл, не умеешь по-человечески откатить коммит в гите итд
Проблема не в том, что ты всего этого не умеешь.
Проблема в том, что ты наслушался пидарасов, которые зовут себя "практиками". Т.н. "практики" - это просто шваль на подсосе у кабанов. В интересах кабана делать этот планктон дешевле и заменяемее, поэтому кабаны всю дорогу спонсировали деградацию культуры разработки. А т.н. "практики" всю дорогу им подмахивали. Эта кодла только рада, что ты всего этого не умеешь - чем меньше ты умеешь, тем меньше ты стоишь, и меньше из себя представляешь кого то.
Поэтому забей на бессмысленные срачи с местными деградантами, выйди на улицу и потрогай траву. Ведь сам же понимаешь что те тошно от нахождения с ними в одном треду.
А потом сядь и изучи уже командную строку гита, ну ебаный кринж же...
Мимо
нет, мне просто скучно
>Шиз живет в своем манямире, не хочет принимать реальность. Вместо адаптации и попыток вывести айти в нужное русло он предлагает все отменить, запретить и жить как диды в фидонете.
Ну хочет и хочет, имеет право. На тебя это как сказывается?
>Ты можешь быть дохуя синиор-девелопером и страдать каждый день, ведь ты конч, которому под сорокет и который не научился в слепую печать, не умеешь поднять постгрес на линуксах, не пользуешься хоткеями идеи, не можешь в градл, не умеешь по-человечески откатить коммит в гите итд
Это реально мысли 40-летнего додика? Пиздец.
Ссылку на его сайт
Я щупал, в голом виде не юзабельно. Даже бэкпрешер нет.
Возможно платная версия лучше, но из-за санкций мы не могли себе позволить.
Вот бы меня кто пощупал и на собес пустил...
Я, к сожалению, не могу заскринить, потому что нда. Я хз открыт ли этот кусок или нет, но сходу кинуть не могу код. Я просто не понимаю почему в рантайме ошибка, если все скомпилилось
Ладно, я заметил предупреждение, что не загрузка несистемных классов отключена. Мб в этом дело.
>в рантайме ошибка, если все скомпилилось
Это значит, что jvm не смогла найти твой cкомпилированный класс в classpath. Например, отвалился jar с библиотекой, или в класслоудере вылетело исключение. Частые причины - исключение во время инициализации статического поля или, если не используешь модули, рефлексия.
>>90479
Если че, то DfTypes.Int пытаюсь использовать, а оно падает
https://github.com/JetBrains/intellij-community/blob/master/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/types/DfTypes.java
Это фейк на джава раше, доцент на дух не переносит джаву.
Конпеляция не та, указателей нет, и памятью в рукопашную порулить не дают.
Всем привет!
Вроде изучил базовый синтаксис и уже собираюсь вкатываться на Senior-разработчика. Подскажите, какие технологии понадобятся для вката?
Сможешь сделать? >>81723 >>3175643 →
Если да, то изучай спринг, хибер, рэбит мкью с кафкой, контейнеризацию, апач кеймл ну все по калссике короче.
Ну так значит он просто нубяра, практически всё указатели, просто константные, с автоматическим разыменованием. И памятью врукопашную рулить можно, забыли доцента кислых щей спросить.
сбрызни спиртом горло, дальше смотри как пойдет
>апач кеймл
Это говно надо не откапывать и советовать, а закапывать. REST клиенты легко пишутся и на рест темплейте без камела.
кэмл - это просто брокер сообщений, тут не рест темлейт, а раббит нужно
>И памятью врукопашную рулить можно
Через ансейф что ли? Тебя жвм инженеры стукать сильно будут. Учти
Ну не стукай
Вот допустим как выглядит деплой у java? Что они выгружают на продакшн? Один жирный jar/exe файл или много файлов как у php? И нужно яву как-то компилить или она тупо интерпретируется? В php тоже есть OP-коды и JIT, но он сам по себе там работает, лезть туда не нужно. А у java как?
И как еще происходит компиляция? Я в С++ еще выбирал статическую линковку, вместо динамической и у меня был один exe и все библиотеку там находились, т.е. я перекину на другой комп и файл запустится, а если бы была динамическая то нужно было бы чтобы там всякие dll были и прочая хуйня
>т.е. тупо интерпретирует как php
Можно и так считать. На деле же там существует еще JIT, который профлирует методы и часто вызываемые компилирует максимально оптимальным способом и подменяет интерепретацию на это скомплириованное чудо. Также там есть и процесс декомплиляции, если спекуляции оказались неудачны.
Но в любом случае это все не обязательно и конкретная реализация может быть чисто интерпретатором.
>Один жирный jar/exe
jar - это просто архив, в который ты напихал кучу .class. Поэтому да, у тебя может быть чисто один жарник, который в себе содержит информацию обо всем, что надо.
>И как еще происходит компиляция?
Ну сама компиляция просто ходит по импортам и связывает их друг с другом. Во время же рантайма будет вызываться целая ирерархия класслоадеров, начиная с бутлоадера. Фаткически ты можешь написать свой и наживую подключать/измнять классы.
спс
>>от допустим как выглядит деплой у java? Что они выгружают на продакшн?
Образ контейнера если руками на прод деплоят. Часто надо просто написать dockerfile, а CI/CD сам все соберет и задеплоит.
Всю старую и не очень жяву под шидошс можно запускать через тануковский враппер.
Юзал его с 1.4.
Да и сейчас спрингбут под шиндош можно им запускать.
В кубере просто используют образа с автостартом через докерфайл/хелм
GraalVM позволяет компилировать в нативный код.
Ты кубер на проде используешь, или дома?
Бляяяяя....
Сука, от "умников", протаскивающих обычные туплы, вложенные друг в друга, через флюент АПИ типа стримов, головняка на проде не оберешься - страшно представить более менее сложный стрим с ЭТИМ в теле.
Зря выложил, эта черная техника должна быть забанена нахуй.
Мимо
Кто-то такое в проде делает? Прикоольно. Вот бы пообщаца, мм
> более менее сложный стрим с ЭТИМ в теле.
В стриме просто нет таких инструментов для работы с ними, ну типа zip
(Stream<a>, Stream<b>) -> Stream<Tuple<a, b>>
и unzip
Stream<Tuple<a, b>> -> Tuple<Stream<a>, Stream<b>>
Надеюсь с новым апи этот зип можно будет самому ручками как-то написать. Хотя, он же превью, надо потестить, как будет время.... Впрочем судя по отношению ко мне преподов в вузике, я похоже какой-то хуйней занимаюсь, мм
>Кто-то такое в проде делает? Прикоольно. Вот бы пообщаца, мм
Вкатываешься в Скалу и ищешь проект с монадозависимыми.
Ну вообще очень хотелось бы, но я даж в жабу еще не вкатился..
Да и типа джаба тоже все няшнее становится. С введением sealed появились sum type и ADT полностью оформился. Плюс паттерн матчинг над ними появился. Ящитаю это надо в массы продвигать, sealed это реально топчег.
Плюс апишки расширяют. К слову про них, похоже таки нельзя две струи объединить или разделить одну. Обидно.
Чево ты такой злой?
Я кстати, все пытался доработать то, какой можно сделать архитектуру для конечного пользователя.
А то, в zip идет и констркутор и стрим, конструктор мне не нравится тем, что по сути мы делаем недо map, зачем спрашивается, если она уже есть... Стрим же не дает как-то адекватно объединится с unzip. К слову, я побегал по либам, unzip вообще нигде нет.
В итоге я пока не знаю как и вообще можно ли нормально обойти пик 1 не через создание своих туплов. Впрочем, вроде выглядит не так уж и плохо..
Сборников задач, тестирущих+обучающих систем, до жопы. Так еще есть чатгопота, учитывая, что жаба практически самый популярный яп, она точно что-то да ответит. Не очень понимаю, зачем ты именно сюда зашел.
Но раз уж ты тут, какой у тебя ну в общем уровень? Что уже изучил, была ли хоть какая-то база.. Лвл какой, няшый ли?
Пиши консольный загрузчик порно картинок c имиджборды/booru по вкусу. Picocli, jsoup, selenium, jackson в руки и погнал.
А еще вопрос возник, какие вы делали пет проекты для опыта прежде чем вы устроились на первую работу? Где опыт набивали?
>>92512
>Не очень понимаю, зачем ты именно сюда зашел.
Загуглил задачник, там все как то скучно и сухо, на таких задачах не интересно учиться, хочется взять масштабную задачу, например написать прогу которая будет что то делать, и уже искать решения что непонятно в интернете, шаг за шагом
>какой у тебя ну в общем уровень
Начальный. Читаю книгу "java полное руководства" Герберта Шилдта. Параллельно прохожу курс на stepik. Еще лазию в Intellj IDEA, пробую разные варианты что как работает, в консоли еще проверяю команды, компилирую туда сюда.
>Что уже изучил
Типы данных, операторы. В общем самое начало. ХеллоВорлд написал, работает.
>няшый ли?
Думаю да. Через постель можно попасть?
>>92520
О, это уже интересная задача
>масштабную задачу
Ну типа без знаний, скорее ты 100500 фреймворков наберешь, какие-то магические комманды вставишь и оно само как-то заработает. Были бы в жаве развитые dsl-ки, это еще бы больше усугубило ситуацию.
С другой стороны, обучение, это требует обратной реакции. Иначе говоря, ну ты должен хоть как-то оценить, это хорошо или плохо. Большие приложение никто блять не оценивает, это требует слишком много времени. Хороша или плоха твоя архитектура тебе тоже скорее всего не скажут. И грустно, что это буквально единственный практический опыт, который можно получить без работы.
>там все как то скучно и сухо
Зависит от задачника и мотивации вообще. Хотя советовать ниче не буду, поскольку ну лично мне кнут пиздец как зашел, лучше всего обучения в говновузе, лучше почти всех видосов на ютубе, там и задачи... Но кто его будет читать, лол)
> в консоли еще проверяю команды
Не занимайся хуйней. Пиши в идее, используй дебагер, нахуй эту консоль.
>Типы данных, операторы.
Я бы начал вот практическое что-то делать, только тогда, когда control flow на интуитивном уровне станет понятен. Это условные операторы, циклы, вызовы методов, забегая вперед, ленивость через лямбды и анонимные классы.
>Через постель можно попасть?
Да ни, просто тааак скучно, что можно было бы с кем-то вместе что-то поизучать, я ж и сам считай почтиии уровень.
Пока не изучил синтаксис лучше решай базовые алгоритмические задачи, можно школьные с какого-нибудь acmp.ru они как раз для изучения программирования и предназначены. Писать типа прикладные программы не выучив синтаксис язык это пиздец, не верь инфоцыганам. Когда дойдёшь до спринга, в книгах обычно есть примеры. Когда почувствуешь, что готов, посмотри задачи, которые специально для отбора стажёров писались
https://github.com/avito-tech/backend-trainee-assignment-2024
https://github.com/Raiffeisen-DGTL/cib-interns-test-task
Как сделаешь, можешь посмотреть решения других вкатунов и черпнуть для себя что-то новое
https://www.youtube.com/watch?v=kdMG40wUCm4
По-моему это сюда уже вкидывали.
> чтобы самому не придумывать велосипед
Про задачи это верно посоветовали, а так:
1. При том количестве что есть в интернетах разного рода программ твоя в любом случае будет велосипедом. Кто бы тебе идеи не подкидывал.
2. Не можешь придумать собственную задачу и её реализовать - бросай это дело нахрен.
напиши простейший CRUD
Своевременность этого видоса в этом треде соответствует своевременности выполнения программ на петушарпе. И то, и то в 11 раз позднее, чем надо.
arr[x], arr[y] = arr[y], arr[x]
Строкой считается все, где есть точка с запятой, ну т.е. вот это не одна строка:
int tmp = arr[x];arr[y]=tmp;arr[x]=tmp;
Мнение? Идея не понимает моего гения, ну и хуй с ней в прочем.
Джава - не хаскель, вот тебе мнение.
Мог бы не выебываться и просто свапнуть через локальную переменную. Вместо этого породил дохера лямбд.
Кончил хотя бы?
>Кончил хотя бы?
Нет((
>просто свапнуть через локальную переменную
А за одну строку сможешь, м? По условию, в принципеее можно создать record, без методов каких-то конечно.
Кстати, до сих пор не понимаю зачем заприватили пик из Arrays.
>>93698
Не думааю, просто подумал, что это в принципе возможно и вот.
хотя, если подумать, то все значительно проще. И идея опять косячит, зарепортить чтоле...
Ты опасен для общества и самого себя
Подсосачну. Мне было бы стыдно такую голимую хуйню постить даже на анонимном форуме, это же пиздец, 40 iq.
Заебись вам, я вот безуспешно пытаюсь убедить лида что и нам оно нахуй не нужно. Все равно он апрувит не глядя, только ждать неделю приходится пока он освободится.
>Не можешь придумать собственную задачу и её реализовать - бросай это дело нахрен.
Что за хуету ты сейчас написал
for (int i = 0; i < 100_000; i++)
или for (int i = 0; i < 100000; i++)
IntStream.range(0, 100_000).forEach(i -> {
// Тут можно добавить необходимую логику для каждой итерации
});
Я не понимаю в чем проблема с этим примером.. Он же показывает лишь то, как работает оценка выражений в жабе. Не нравятся лямбды? Смени на это: a = (b) + 0 * (b = a); Комплиятор сам хуйнет тебе temp переменную, причем в зависимости от величины переменных. Что кстати опять же умнее идеи, которая просто игнорит все эти сайд эффекты и просто в душе не ебет, а че бля происходит.
Тем более этот код экспериментальный, он и не должен попасть в прод.
>>94055
Ну тебе не похуй, раз привлекаешь мое же внимание. Можешь считать себя отрицательным фанатом.
>>94057
Опять же не понимаю, что тут тупого.
>>94239
Мне приятно любое внимание, все лучше чем тотальнейший похиузм ирл.
int a = (int) 1e4;
Вынести в константу и дать имя, которое объяснит почему не 99999 или 101000
Просто переходи на jooq. Если преодолеешь небольшую еблю с первоначальной настройкой, то дальше писать запросы очень просто.
Че ты несешь, дебил? Жук - такой же апач коммонз 2.0 как и прочий попенсорц, разница лишь в том что он под двойным лицензированием сидит.
https://github.com/jOOQ/jOOQ/blob/main/LICENSE
Нет,нахуй котлин,буду роу мапперы в ждбс темплейте писать,мб ту хуйню с птичкой гляну или жук,заебал этот жпа зоопарк полностью
Ну обясни, как для идиота, в чем проблема? Пока у меня чувство, что ты просто набрасываешь.
Обмазываешься пятью впн, покупаешь западную карту, ставишь ноут в пустую комнату с белыми стенами и мягкой обивкой и сдаешь онлайн.
Имба
>Там вроде скорость фс выше получается. Был у кого такой опыт?
Чем где? У меня был опыт что там скрость ниже чем в каком-нибудь git-bash
>буду роу мапперы в ждбс темплейте писать
зачем, если бироумаппер со всем прекрасно справляется?
Чем в виде, во всех директориях кроме /mnt. Суть как раз в том, чтобы не иметь git-bash вообще, а использовать git и bash из линуха внутри wsl.
а почему просто линух не поставить? или дуалбут сделать. всл как костыли выглядит, имхо
Это печально.
>Чем в виде, во всех директориях кроме /mnt
Въебал говна? ВСЛ всегда был тормозным говном им и останется.
Я не ебу что это,я знаю ждбс и предполагаю что ждбс темплейт это то же самое только с коннекшнами не надо ебаться
Эта штука говорит не о скорости доступа, а о том что линукс кэширует частые обращения к фс, если у тебя не кейс кэширования - тебе это не подойдет
Хуй через плечо.
Открой да походи, посмотри. Почитай че в License понаписано. А потом ебало свое тупое закрой нахуй. Дебил блять.
Пиар менеджер жука когда нибудь расскажет как это отменяет то о чём он сам до этого с пометкой только говорил, чем и вызвал всеобщий смех в этом треде?
Че ты несешь, шиз? Какие блять пометки, какой всеобщий смех? У тебя шумы в башке или что?
public <R> Stream<R> apply(Function<Stream<T>, Stream<R>> f) {
return f.apply(this);
}
В чем проблема была включить ее в апи? Что сука им мешало?
Всмысле? А че оно делать то должно. У тебя тупо рекурсия без терминирующего условия.
И кто нахуй такой this?
Какая рекурсия, откуда? Этот метод, просто берет какую-то функцию на вход, берет нынешний стрим(себя тобишь) и применяет к функции. Возвращает результат.
>>96990
Допустим есть метод
public static <T> Stream<Stream<T>> up(Stream<T> s) {
return Stream.of(s);
}
Можно было бы легко сделать подобное :
Stream.of(1,2,3,4).apply(Class::up).
Сейчас же мне надо делать такую хуйню:
up(Stream.of(1,2,3,4))
Была бы в джаве перегрузка операторов или хотя бы инфиксная форма методов, то можно было бы написать что-то подобное:
public static <R, T> R apply(T t, Function<T, R> f) {
return f.apply(t);
}
И применять его как-то так: Stream.of(1,2,3,4) `apply` up
А щас мне просто грустно, что такого метода нет в апи и ничего не сделать с этим
Я достаточно времени потратил на попытки получения стрима внутри этих гатхеров.
Вот если ты попробуешь в рамках него реализовать вот up, который я выше показал, то просто ахуеешь от пиздецовости того, как тебе надо манипулировать потоком управления.
Технически тебе нужен longjmp, аля ContT/continuations. Последнее в жабе есть... Но оно ограничено виртуальными потоками, в общем-то говоря ты просто множишь потоки управления.
А с каких пор mvnd тоже апачи занимаются? Отдельный проект же был.
>up(Stream.of(1,2,3,4))
И че б ты с этим делал?
Так-то метод неспецифичный для стримов, в котлинге таких 4 штуки накрутили (или уже больше).
>Какая рекурсия, откуда? Этот метод, просто берет какую-то функцию на вход, берет нынешний стрим(себя тобишь) и применяет к функции. Возвращает результат.
То есть this - это стрим? Тогда как ты собрался передавать его в метод apply с аргументом типа Function?
>Можно было бы легко сделать подобное :
>Stream.of(1,2,3,4).apply(Class::up).
>Сейчас же мне надо делать такую хуйню:
>up(Stream.of(1,2,3,4))
Ну кстати зря ты так. Оно вон даже короче.
Вини сложившуюся моду на флюент-интерфейсы. Напридумывали куцых обрубков там, где функциональщикам хотелось монад, тайпклассов и do-нотаций.
Не ворочайся, слитое.
Это называется спиздить титул президента параши. Частая тема в опенсорсе. Ещё прошлые президенты параши часто бугуртят что у них забрали возможность забесплатно отрабатывать.
Да какая разница, че бы я сделал? Это просто наипростейший метод, показывающий общую проблему. Проблему того, что если твой алгоритм хоть в каком-то виде требует сам стрим, то хуй ты его реализуешь в рамках гатхеров, коллеткторов и пр. Делай внешнюю функцию и как-то криво косо припендюривай спереди.
Но в прочем, я-то конечно могу даже это решить, просто для этого надо написать свой стрим https://pastebin.com/D5cbRruJ
Что мне не нравится и в жопу это.
>в котлинге
У меня джава, а не котлин.
>>97049
>Тогда как ты собрался передавать
Ну очевидно этот метод существует в рамках реализации Stream, ReferencePipeline там. Он может легко this достать. В самом Stream это будет просто абстрактным методом.
>Оно вон даже короче
Ну просто смешивать два порядка примений выглядит некрасива.
>флюент-интерфейсы
Честно говоря мне они нравятся. Просто говорю, что не хватает метода в апи. Хуй знает почему его не сделали, реализация простйешая.
>где функциональщикам
В партию пробрались функциональщики значит?
Это не проблема отсутствия этого в стримах, а проблема отсутствия легковесных экстеншен методов что можно было бы использовать так же просто как делать статик импорт.
Олигофрен, ты код пишешь один раз в жизни и он никогда не меняется? А как поменяешь, будешь весь ручной дебаг заново прогонять?
Ты вообще знаешь как устроены стримы-то? Там 8 реализаций что ли. Все из которых приватны. Хуй знает как вообще можно внешний метод написать, пример покажи чтоль.
Так экстеншен метод должен к интерфейсу прилепляться. Аля
public class Anus {
----public static Stream<T> up(Stream<T> source) { /impl/}
}
...
import extension Anus.up;
Ну это не то. Я такое и на гатхерах легко хуйнуть могу. Как ты вот пользователя попросишь этот соурс получать? Каждый раз делать локалки, тогда флюенс апи нарушается. В какой-то степени.
> Как ты вот пользователя попросишь этот соурс получать?
> import extension Anus.up;
stream
----.map(mapper)
----.filter(filter)
----.up() // через import extension конвертируется в вызов метода up(stream)
Фига, если котлин так умеет, то действительно няшно выглядит. Но переходить я на него все равно не буду.
https://openjdk.org/projects/jdk/23/
Бля, придется новую шапку рисовать.
Ну хотя-бы СВИЧ ПО БУЛИНУ завозят. Но лучше бы лум с синхронайзедами подружили, да.
>Не умеет
А.. Ну ахуенно. Я конечно знаю, язык который это уже умеет... Петухончик вот со скалой.
>хочу чтобы джава умела
К сожалению вряд ли будет такое. Тут чисто дело принципа, как с перегрузкой операторов.
Вот поэтому и нужен Java++. И ещё JVM-- с возвращением взад выпиленных тред стопов.
Жава модули использует только сама жава. Да и типа кому мешают импорты, если их скрыть можно? Странная фича
Импорты уже давно стали конфигом управляемым и скрываемым средой разработки. Их программисты не пишут.
Чел, ну в заголовке жепа черным по белому написано модули. По твоему какие-то другие модули имеют ввиду? Это какие?
Вообще жеп интересный. Интересно, а часто жаваны jshell используют для исследований апишек? Блять не представляю как же удобно-то реализовывать в одну строчку gather.
Ну вот именно что там чёрным по белому написано какие это модули. Про джава 9 помимо небольшой исторической справки написанием которых джепописцы заниматься любят очень нет ничего.
Если у тебя 3 одноклеточных метода - конечно тебе так и будет казаться.
Нахуя оно всё, если и так очевидно.
Но.
Даже когда всё вроде очевидно и самые банальные тесты ты сгенерил нейросетью, чтобы отъебались - могут вылезти моменты которые ты проебал.
Понятно, что не специально, но всё же.
Человеческий фактор всегда имеет место быть.
Вот поэтому тесты нужно писать.
Не говоря про то, что после тебя с кодом могут работать люди с нуля, вообще без бэкграунда проекта.
И функционала со временем может стать овердохуя.
Итого спустя время и тонны непокрытого тестами кода - кто-то может сломать много функционала одной правкой, а вы это сходу и не заметите.
Не надо так.
Всё хорошо в меру и по ситуации.
Если юзать в качестве сахара для нескольких вариантов одного теста - ок.
Генерация входных данных по диапазону - для простого функционала тоже ок.
Но на сколь-нибудь сложном функционале ты ахуеешь, т.к. объемы вариантов в каком-нибудь многоэтажном входном дто для одного теста будут стремиться к O(n∞).
А тестов в проекте могут быть тысячи.
Ну вроде это не просто перебор всех возможных значений. Скорее попытка попасть в неправильные с помощью прнг и разного рода ограничений, статистики, сжатия..
Звучит просто очень классно, типо просто описываешь конкретное свойство, а вот фреймворк тебе нахерачил 100500 примеров. Обязательно надо будет попробовать где-то.
> фреймворк тебе нахерачил 100500 примеров
Я про то и говорю, если в методе инт на вход и больше ничего - это еще ладно, хотя далеко не всегда есть смысл проверять весь диапазон.
А если там дто в котором массив с массивами, в каждом 100500 разных интов, и еще дохуя всего.
Плюс нелёгкая бизнес-логика, которая по этой простыне ищет совпадения, запрашивает подсистемы, делает многоэтажные маппинги, etc.
То ты устанешь ждать прогон даже одного такого теста.
Упарываться можно, но в меру и по ситуации.
ТНН, бро. Максимум кун, но и то такое.
>но я не понимаю зачем они нужны? Зачем сливать на это время? Что они должны делать? Вообще полный ступор
Если ты не видишь в этом смысла, скорее всего тесты - говно. И код проекта - говно. Это довольно распространенный кейс в спринг приложениях - многие не понимают в этой возне смысла, но лиды кнутом продолжают насильно насаждать TDD на код, который под это не заточен.
Давай я попробую угадать - тесты у вас выглядят как перемоканная тафтология на логику сервисов?
>Если я уже продебажил всё, я теперь, должен придумать что-то хуй знает что, чтобы что? Блядь, бред какой
Проблема дебага в том, что ты продебажил и бросил. А тесты встраиваются в билд пайплайн и проверяют критичные инварианты для каждого вносимого анальниками изменения.
> тесты у вас выглядят как перемоканная тафтология на логику сервисов?
Ты это угадал просто потому, что такие тесты везде
Ну напиши ещё раз, хули сложного?
В школе на экскурсии
Юнит тесты обычно только для либ подходят. Для более серьёзных приложений из-за накапливающегося говнокода при совмещении кучи либ и фреймворков остаётся только возможность для интеграционных тестов.
База
Из-за постоянного переписывания бюнит тесты либо мгновенно устаревают, либо умножают объем работы впустую
Ебать проблема. бизнес логику поменял, старый тест не прошел. Ну охуеть теперь. Срочно удалить все нахуй. Тестим только e2e или ручниками
Есть проблема. Бизнес логику не менял, старый тест рухнул. Почему? Рефакторинг/изменения в апи сторонних сервисов. Переписываем все тесты. Потом по-новой.
Это изменение программы с сохранением ее общей логики. Но в частностях она может отличаться, а у тебя как раз все тесты на частности
Еще раз говорю, ты что-то другое под этим понимаешь. В частности в той же идее все инспекции рефакторинга по крайней мере стремятся к тому, чтобы они были обратимы, т.е. сводимы друг к другу.
Ебланишна, тебе говорят про "юнит тесты" в которых мокаются те же вызовы, что и в сервисе. Это рак ебаный.
Ты сам все подчеркнул, without changing it's external behavior, это ты похоже что-то не то под этим понимаешь. Без изменений внешнего поведения можно всю программу переписать что у тебя ни один юнит тест не пройдет
>Но в частностях она может отличаться
Не может, если есть изменения бизнес-логики, то это не рефакторинг.
О чем? Рефакторинг не должен вызывать проблем с тестами. Если вызывает, то это или не рефакторинг или тесты говно.
О том и речь.
Примеры есть но они тебе не понравятся. Чтобы получать удовольствие от юнит тестов, надо декомпозировать код не так как принято у спрингокульта, а спрингокульт очень ревностно относится к своим догмам.
Вот этот анон >>97614 кстати отчасти прав. Юнит тесты отлично подходят для либ, потому что либы априори дизайнятся так, чтобы быть переиспользуемыми максимальным числом клиентов. Автотесты по сути своей - ничто иное как частный случай переиспользования тестируемой сущности. Если у тебя непереиспользуемые юниты (классы, компоненты) в коде, попытка переиспользховать их под тестом не принесет ничего кроме боли и отторжения.
Тут либо спрингокульт с процедурным кодом, либо ддд-шизы с бинами в отдельном файлике (как в спринг 3). Или еще какая ебанина в стиле ООП по заветам дидов.
Спринговый код хотя бы привычный и предсказуемый.
нет юнит тестов - нет жалоб
Проверил сборку одного из проектов - в wsl выполнение mvn clean install занимает на 2 минуты меньше.
Регламенты небось тугие какие нибудь.
Вернись на кассу бургеркинга, ты слишком тупой.
Мне понравятся. Покажи примеры
А если это не изменения в бизнес логике - ну ты мы аккуратно промолчим
начинать трогать спринг (в процессе пробелы сами затянутся)?
или продолжать клепать калькуляторы/крестики нолики в консоли пока хорошо не овладеешь кором?
алсо, жакартаЕЕ стоит трогать? что такое сервлет и его жизненный цикл знаю, дальше стоит лезть или теперь только крудошлёпить на спринге и радоваться жизни?
коллекции/стримы/ооп хорошо знаю, многопоточка страдает
Джава кор это то, что приходит очень долго и с очень большим опытом. Намеренно лепя вынужденные калькуляторы ты его не поднимешь. Так что трогай спринг, что по сути простейшая прикладная технология, и потом и кровью овладевай кором.
На новой машине, кстати, точно такой же результат. Так что выбор сделан, даже git для windows ставить не буду.
Потрогай немного рефлексию и проксирование. А то спринг ебанный будет казаться магией и начнешь ему поклоняться.
Можно вкратце за причины. И я не понимаю тезиса про то, что \ менее элегантен чем $. Звучит как хуита.
Так это наверно про первую версию с STR."zalupa". Вторая версия гораздо лучше выглядит.
Там в видосе было сказано про большой срач среди разрабов джавы по поводу этого. Надо читать его. С тем что доллар кал я согласен.
Ну я коммент главного жавана почитал, вроде понятнее.
>С тем что доллар кал я согласен.
Не ну, читаю комментарии, блять половина сука про то, что а где же доллар, как же мы будем пользоваться \, почему нельзя как в скале/котлине. Чувствую себя каким-то не хипстером, тк вообще похуй, что на синтаксис, что на саму интерполяцию. Что в ней такого-то вообще.
>>99750
Не думаю, что они будут так просто добавлять ключевые слова, хоть и контекстуальные.
Вот тут он же пиешт https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html
Мол
>Specifically, the role of processors is “outsized” to the value they offer, and, after further exploration, we now believe it is possible to achieve the goals of the feature without an explicit “processor” abstraction at all!
И вот в результате пик.
>>99761
Где именно тебе поднасрали синхронайзеды-то?
Кстати, вроде хорошая новость для тебя. Можешь потестировать даже.
Кстати, не пойму, как в новом варианте ПРОСТО отрендерить темплейт и передать как строку. Что там вместо STR?
Да вроде нет https://mail.openjdk.org/mailman/listinfo/loom-dev
Скорее похоже на типикал подписку, чтобы тебе хуйней мыло засирали.
>>99778
Там нет никакого нового варианта. Они просто накидывают всякое разное. Жди 24 или 25 версии.
Заебись, хоть юзать, наконец-то, можно будет лум. Но не идеально. Жду когда вообще этот пиннинг уберут нахуй.
>Там нет никакого нового варианта.
Есть же.
>String s = String.format(“Hello %12s\{name}”);
Но это вместо FMT. Вместо STR непонятно что будет.
Ну тогда вот. Вообще без всех этих fmt и str судя по всему будет. Типа либа за тебя все решит. Как я понел, конечно.
Но там судя по началу, было ебать какое обсуждение и хуууй его знает, что в результате выйдет, потому проще просто забить.
Блядь, ну с твоего пикрила же. Когда виртуальный поток исполняющий синхронайзед не оторвать от платформенного потока.
Так то что у тебя на скрине будет за счет перегрузки методов
>void println(String s)
>void println(StringTemplate st)
А я говорю про случай, когда есть только метод, который принимает обычный String, и StringTemplate надо отрендерить перед передачей.
"\{name}".interpolate(STR);
>This might be a static method (String.join(StringTemplate)) or an instance method (template.join()), shed to be painted (but please, not right now.).
Короче будут обсуждать еще 5 лет а потом выйдет залупа.
Классика для жабы же. Че ебало скорчил?
Нет, это полная хуйня. Так и String.format можно обойтись. Во всех языках интерполяция происходит неявно. В жабе хотят расширить очко возможности - окей, но не за счет основной сути интерполяции.
Ну, получше чем STR."". И неявность на самом деле не так просто добавить, ломается принцип того что один и тот же код где бы его не вызвали возвращает один и тот же тип (а обычно, если без калового @CallerSensitive, вообще одно и то же).
Да не за что
Это копия, сохраненная 13 сентября в 18:50.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.