1. Инфраструктура на будущее не нужна и запрещена. Всё равно придётся ломать API. Боль от миграций надо уменьшать другими способами (LTS версии, конвертаторы кода, методы-прокладки, shading, etc.) & 2. Ни единого дубликата кода быть не должно. Дубликация кода это не рациональное решение, это нехватка мозгов для его исправления.
>>3457776 (OP) А как вы вообще на работу устраиваетесь на жабе? ИДЕ и нейронка сейчас пишет весь код за программиста, джуны не нужны в принципе. Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга.
>>3457963 >Да и сама жаба вскоре отпадет, когда в контекст нейронки можно будет запихнуть весь проект на миллиарды строк кода и она за секунду выдаст код на современном языке типа голанга. Не забывай про ежедневный приём таблеток.
>>3457962 Чтобы убрать полностью дубликацию кода надо сделать систему типов очень мощной и разрешить жаванам делать очень много всякого. Неглупые люди сверху на это не пойдут. Они же понимают, кто такие жаваны и насколько им опасно давать такие инструменты.
Без этого дубликация в той или иной степени все равно будет, терпим..
>>3458053 Я же уже сказал, что тебе еще надо? Без kind у тебя нет четкой разницы между контекстом и значением, иначе говоря коллекции и значения - это одно и то же. Что из этого следует, ты не можешь сделать метод, который абстрагируется не по значению, а по тому, что его как бы хранит. Типа того: <A, B, F> F<B> functor(F<A>, Function<A, B> f);
Также без kind у тебя есть только крайне ограниченные интерфейсы, а не тайпклассы.
>>3458074 Ну это базовый уровень. Функтор фактически интерфейс для функции map любой коллекции. Потом идет развитие из функтора в аппликативный, если раньше функтор принимал чистую функцию и обернутое контекстом значение, а потом сливал их, то теперь он берет обернутую контекстом функцию и обернутое контекстом значение. Ключевая разница в том, что теперь сливаются два контекста. <A, B, F> F<B> applicative(F<A> v, F<Function<A, B>> f); Третье и финальное развитие - это bind. Когда на входе чистая функция, которая в итоге оборачивает результат в контекст и значение в контексте. Bind по сути берет и вытаскивает из контекста значение и передает этой функции, получая еще один контекст. <A, B, F> F<B> bind(F<A> v, Function<A, F<B>> f); <A, F> F<A> pure(A a); Пример в жабе, это map - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#map-java.util.function.Function- это bind - https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#flatMap-java.util.function.Function- Тогда Functor - это интерфейс для map, а Monad интерфейс для bind, ну и еще pure. Как вершина, типы позволяют изолировать ресурсы, создавая сколемы - https://thoughtsfactorial.com/posts/2021-08-07-the-st-trick/ В виде картинок, может понятнее будет - https://www.adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
>>3457968 Чел, что ты несешь. Для систем-типов-enjoyеров уже всю дорогу существовала скала, которая жила-жила, да так и померла. Какие нахуй неглупые люди...
Всем давно и плотно похуй на дубликацию кода. Программисты необучаемые блять - косплеят жалкие косплеи на ФП да переизобретают одно и то же по тыще раз, называя это развитием. Никакой теории заговора не надо.
И вот ты говоришь - "нужно сделать систему типов мощной джаванам"... Нахуя, если джаваны даже половины возможностей имеющейся системы типов не используют?
Чтобы эффективно работать в мощной системе типов, надо уметь мыслить абстракциями. А для этого надо чтобы мозг иметь хотя бы чуток прокачанный в математический уклад, чтобы не выпадать в осадок от пресловутых названий артефактов из терката. А таких людей не то чтобы много. На порядки меньше чем лоускильных квадратногнездовых промптеров. Поэтому джава именно такая, какая есть. Живи с этим.
>>3458335 Так это не я же предлагал убрать дубликацию, я наоборот согласен с тобой, что это не баг, а фича жабы. Все правильно делают, жаванам ничего доверить низя, что явно показывает история с unsafe
>>3458335 чел, индустрии надо чтобы чем более лоускильная макака может высирать рабочий код - тем лучше. Тем продукты дешевле и маржа больше. Нахуй никому не нужен твой пердолинг и вышмат, он денег не приносит
>>3458335 >>3458580 О каких скиллах ты говоришь, если ты не способен в базовое изложение своей мысли? Не говорю даже о том что ты не осилил даже систему типов джавы. Ты тупой дегенерат, гиперкомпенсирующий это самоудовлетворениями через рассказы твоей мамки что раз никто тебя не понимает то ты самый умный.
>>3458598 Да. Залутал себе недавно повышение, после того, как в одиночку в полу-функциональном стиле переписал лагающий как говно сервис, который стайка промытых дебилов не могла год (!) оптимизировать. Теперь их зарплаты принадлежат мне, хехе.
>>3458815 >в функциональном стиле >оптимизировать Выбери что-то одно.
> Теперь их зарплаты принадлежат мне, хехе. Если отойти от того что вся эта история пиздёж который палится на банальном непонимании вообще всего, что можно понимать, можно проиграть с веры в святой срыночек. На полном серьёзе думать что в такой ситуации, даже в случае повышения, а не простого "спасибо", 98% дополнительной прибыли не забрал бы себе кабан, а маняоптимизатор не получил бы на рыло +10к к зп?
>>3458832 > редактуры Какой редактуры? Это шизофазия. Смысла в этом нет. Это не редактура.
> Дюже интересно, на основании чего ты сделал такой вывод На основании того, что система типов джавы всеобъемлющая, а тебе её внезапно не хватило для чего-то, что намекает на вывод о том что тебе не хватило лишь мозгов.
Ну говорю же - промытка. Все, иди уже траву трогать
>веры в святой срыночек
Зачем верить. Оклад жирно подняли - чек. Лычку до арха подняли - чек. Дебилов на мороз выгнали - чек. А то что кабан там свои сверхплибыри получает - мне похуй. Заглядывать в чужой карман - удел инфантилов и коммуняк в острой стадии.
>>3458843 > Ну говорю же - промытка. Все, иди уже траву трогать Слив засчитан.
> Зачем верить. Оклад жирно подняли - чек. Лычку до арха подняли - чек. Дебилов на мороз выгнали - чек. А то что кабан там свои сверхплибыри получает - мне похуй. Заглядывать в чужой карман - удел инфантилов и коммуняк в острой стадии. Жирно это с безумных 150к до фантастических 200к? Лул.
>>3458844 Даже не так. Ещё забавнее. Вот. >>3457970. Тупой дегенерат, непреклонно верующий в свою умственную исключительность (что правда, только в обратную сторону), порвался с того что ему сказал что он тупой дегенерат раз повторяет писанину свою и начал обвинять монитор и сидушку в проблемах прокладки между ними.
>>3458870 Что карактерно, функтор-фаг (>>3458369) сразу адекватно отшутился и ушел в закат. А ты рвешься полтреда. Сходи на улицу, сходи, малой - трава тебя ждет.
>>3458780 У меня нет диагноза, чтобы пить таблеточки. Тебе судя по всему виднее.. Какие посоветуйте? >>3458847 Это разные люди, це ми >>3458002 . Впрочем и я тоже не топил, что в жабы нужна прям мощная система типов. Нет, ЕСЛИ нужно убрать дубликацию кода, то надо сделать Х. Но мне лично никак не мешает дубликация и бойлерплейт, чего я очень много раз тут писал. Напоминаю дежурно - лобок говно.
Для спрингозависимых, я считаю, что дубликация была, есть и будет и для жабы это норма. Если тебя не устраивает, единственный вариант - терпеть. Если читать не попой, то ты не найдёшь противоречий.
> Впрочем и я тоже не топил, что в жабы нужна прям мощная система типов. Нет, ЕСЛИ нужно убрать дубликацию кода, то надо сделать Х. > Но мне лично никак не мешает дубликация и бойлерплейт, чего я очень много раз тут писал.
> Для спрингозависимых, я считаю, что дубликация была, есть и будет и для жабы это норма. Если тебя не устраивает, единственный вариант - терпеть. Если читать не попой, то ты не найдёшь противоречий. Аргументов как я понимаю помимо повторения одного и того же уже обоссанного по 500 раз не будет?
>Напоминаю дежурно - лобок говно. А я в ответ проигрываю дежурно с дегенерата который оправдывает бойлерплейт от своих кривых рук инструментами и рвётся от решения последних проблем этих инструментов, ведь оправданий своим кривым рукам больше вообще не остаётся.
Я с тобой и не начинал спор, потешный. Нахуй ты мне сдался, о чем с тобой вообще говорить? Меня функциональщик выше заинтересовал, у которого нет kind и который запостил лекцию об артефактах терката со ссылками, с ним я и перекинулся парой комментов. Че ты влез и что донести пытаешься - известно лишь твоему полыхающему очку, не иначе.
>подразумевает что скала чем-то лучше джавы в плане типов
А ты решил по этому поводу чтоли поспорить? Малой, остановись - не загоняй себя в залупу...
>>3458889 > А ты решил по этому поводу чтоли поспорить? Малой, остановись - не загоняй себя в залупу... Я как бы с самого начала именно по этому ссал долбоёбу которому яйца танцевать мешают на рожу.
>>3458887 >нет ты Да сдался ты мне. Я ж собой интересуюсь, какой диагноз и тд. >рвётся от решения последних проблем Мы говорим об инструменте, который не может для дочернего класса-имплементации сгенерить конструкторы или сделать хоть что-то с рекордом/совместить гет и сет. Это якобы решение сплошь и рядом пронизано какими-то дебильными ограничениями. И бойлерплейт из одной области - поля класса, перетекает в область анноташек. Открываешь класс, а он весь желтый блять. Четка.
>>3458949 > Да сдался ты мне. Я ж собой интересуюсь, какой диагноз и тд. Я не психиатр, я программист. Хотя могу предположить что тебя в детстве били, какие таблетки против этого не ебу.
> Мы говорим об инструменте, который хрю пук хрю пук >1 Композицией воспользуйся, делов-то. Или билдером. Не велика проблема и точно не делает ВЕСЬ ломбок говном.
>2 Ты какие ещё геттеры аннотации добавлять собрался?
>3 Нахуй тебе геттеры рекорду, шизяра?
> Открываешь класс, а он весь желтый блять. Четка. Тебя жёлтые в детстве выебали?
>>3458952 >Или билдером Билдер не дает гарантии, что все обязательные поля будут хоть чем-то заполнены. Т.е. скажем добавил я поле и потом надо искать через using все это и добавлять везде, в случае конструктора - ошибка компиляции. >Композицией воспользуйся Мне иерархия нужна. Ты не видишь, что это event? Мне нужны супертипы, для слушателей типа логгеров. >Ты какие ещё геттеры аннотации добавлять собрался? Я хочу совместить две аннотации лобка в одну общую. Чтобы я не ставил @Getter @Setter, а просто @GetSet. Ну это в самом простом случае. Ишью с 15 года для этого - https://github.com/projectlombok/lombok/issues/557 >Нахуй тебе геттеры рекорду, шизяра? Допустим существует древнее говно, которое не поддерживает fluent getter.
>Я не психиатр Ну и не ставь мне диагнозы. Мне неприятно.
>>3458969 > Ну и не ставь мне диагнозы. Мне неприятно. Не нужно быть психиатром, чтобы понять наличие психических заболеваний. Психиатром нужно быть чтобы их по психиатрическим нормам классифицировать.
> Я хочу совместить две аннотации лобка в одну общую. Чтобы я не ставил @Getter @Setter, а просто @GetSet. Ну это в самом простом случае. Ишью с 15 года для этого - https://github.com/projectlombok/lombok/issues/557 Ну пиздец уписался бойлерплейта, лишнюю аннотацию повесил. Ещё претензии к лобку будут?
> Мне иерархия нужна. Ты не видишь, что это event? Мне нужны супертипы, для слушателей типа логгеров. Зачем тебе иерархия для ивентов? Ты про мультиколл, например слушаешь AbstractFoo, а тебе прилетает FooZalupnii и FooBanketnii? Это респонсибилити шины ивентов, где нужен альтернативный наследованию способ реализации мультиколла.
> Допустим существует древнее говно, которое не поддерживает fluent getter. Так и рекордом тогда не пользуйся.
>>3458995 >чтобы понять наличие психических заболеваний Еще раз. Мне неприятно. Делай мне приятно, в чем ваша проблема??? >лишнюю аннотацию повесил Не утрируй. У меня по пять аннотаций минимум, начиная с гетсет, заканчивая акцессорами и филддефолтами. Вот какую себе задачу ставит лобок? Убрать бойлерплейт и он с ней не справляется, просто перенося этот бойлерплейт в анноташки. Может это и короче, но шило на мыло. И с кучей исключений, когда случай сложнее pojo. >где нужен альтернативный наследованию способ реализации мультиколла Пример давай. Я просто пик хуйнул. Вчом я неправ >Так и рекордом тогда не пользуйся. Нет, хочу рекорд. Его оракл больше любит и добавляет ему нескучные фичи.
>>3459016 > Еще раз. Мне неприятно. Делай мне приятно, в чем ваша проблема??? Ну заплачь, дегенерат.
> У меня по пять аннотаций минимум, начиная с гетсет, заканчивая акцессорами и филддефолтами. Это ты утрируешь, лол.
> Убрать бойлерплейт и он с ней не справляется, Справляется. Есть дырки просто где он не убирает ВЕСЬ бойлерплейт, но это мизер.
> Пример давай. Я просто пик хуйнул. Вчом я неправ Какой ещё пример? Это ты показываешь примеры, я лишь попытался угадать что в твоей дурной головушке было.
> Нет, хочу рекорд. Его оракл больше любит и добавляет ему нескучные фичи. Придётся без нескучных фич.
>>3459020 >Ну заплачь Я и заплачу, ты че думаешь, хех.. >но это мизер В моих юзкейсах обычно или лобок принципиально становится бесполезен иба слишкам сложна или наоборот, просто все в этих аннотациях.. Золотой середины просто нет, ты или терпишь или терпишь. >Какой ещё пример? Ну создается событие в spring-event. Я хочу его подслушать, для целей логгирования. Создавать для каждого события отдельный подслушиватель глупая затея, вот делаю централизовано - по иерархии классов просто подслушиваешь и усе. Потом порядок задается с помощью BEFORE_COMMIT и AFTER_COMMIT. Удобно. Ты говоришь, что это неправильно. Как правильно? >Придётся без нескучных фич. Ну придется без лобка. Пошел он нахуй, правила мне навязывать.
>>3459031 > В моих юзкейсах обычно или лобок принципиально становится бесполезен иба слишкам сложна или наоборот, просто все в этих аннотациях.. > Золотой середины просто нет, ты или терпишь или терпишь. Могу предположить что юзкейсов у тебя значит вообще не было и ты экстраполируешь какое-то теоретическое тыканье. Я пишу кода дохуя, лобка хватает, иногда терпеть приходится конечно, но хули нам джаванам не особо часто это встречается и точно не чтобы отказываться от лобка от этого.
> Ну создается событие в spring-event. Я хочу его подслушать, для целей логгирования. Создавать для каждого события отдельный подслушиватель глупая затея, вот делаю централизовано - по иерархии классов просто подслушиваешь и усе. Потом порядок задается с помощью BEFORE_COMMIT и AFTER_COMMIT. Удобно. > Ты говоришь, что это неправильно. Как правильно? Это и есть мультиколл. Мультиколл должен быть отделён от иерархии в том числе по этой причине (а вообще там миллион причин почему и когда не нужна иерархия, но нужен мультиколл).
> Ну придется без лобка. Пошел он нахуй, правила мне навязывать. "сгорел сарай, гори и хата"? Чем мешает это тебе использовать его за исключением этого странной надуманной ситуации где тебе внезапно нужны обозначенные словом гет методы в рекорде?
>>3459035 >юзкейсов у тебя значит вообще Ну конечно не было, ты же лучше меня все знаешь, какой код я писал, что занимаюсь, какое у меня хобби, где работаю. >Мультиколл должен быть отделён от иерархии Я не понимаю, что ты имеешь ввиду. > за исключением этого странной надуманной Всяко лучше выкидывания рекорда, для того чтобы удолетворить требования лобка. Впрочем похоже, если отдельно на каждый параметр геттер накинуть, то все ок. Звучит логично, конечно, а не как дебильная хрень.
>>3459042 > Ну конечно не было, ты же лучше меня все знаешь, какой код я писал, что занимаюсь, какое у меня хобби, где работаю. Я тебе показал причины по которым я это считаю.
> Я не понимаю, что ты имеешь ввиду. Отвязка вызова множества ивентов через одну точку от иерархии.
> Всяко лучше выкидывания рекорда, для того чтобы удолетворить требования лобка. Ты в первую очередь пытаешься удовлетворять требования какой-то легасной хуйни которой ОБЯЗАТЕЛЬНО нужно иметь метод названный через get. У неповески геттера на рекорд есть причины — нахуй тебе геттеры в рекорде где они уже генерируются? Впрочем можешь попробовать скомпилировать, мб это вообще баг плагина для жидеи чисто.
>>3459061 >от иерархии Нет, а как ты это сделаешь? Под каждый event отдельный подслушиватель, который вызывал бы общий метод для логгирования или че? Ну заебно писать 100500 методов. Или их маркируют как-то.. >пытаешься удовлетворять требования какой-то легасной хуйни Это совершенно другое, тебе не понять. >есть причины Например? Чтобы меня побесить? И это не баг жидеи
>>3459069 > Нет, а как ты это сделаешь? Под каждый event отдельный подслушиватель, который вызывал бы общий метод для логгирования или че? Ну заебно писать 100500 методов. Или их маркируют как-то.. Создаётся метаивент и добавляются методы конвертирования в этот метаивент. Слушается метаивент. Конечно должна быть поддержка этого со стороны шины ивентов, например автоматическая конвертация по той же иерархии или по полям при эксплицитном объявлении. Без поддержки платформы тоже можно, хоть ты правда и сказал заёбно, но 100500 надо писать не под каждую задачу, а под каждый метаивент, что на уровень меньше.
> Например? Чтобы меня побесить? И это не баг жидеи Я же буквально в том же посте сказал её...
>>3459295 >не будет выделена память Мне всегда было интересно, а откуда берутся эти попытки понять, как же там работает рантайм, что и кто выделяет память.
Понимаешь, это не твоего ума дела и зависит от реализации. Нахуя вы в это лезете.. А потом вылезают ахуительные рассуждения во всех источниках, что ну на самом деле волатайл кэши очищает, ага ага. Губами очищает
Нет не должен, ты же определил приватным поле, а не методы работы с ним. Значит ты так задумал:
1) Непосредственно к полю обратиться нельзя
2) К полю можно обратиться только через предоставленные мною методы
То что твои методы так реализованы, что по функционалу это тоже самое что если бы ты поле сделал публичным - это уже твоя проблема, проблема твоей бизнес логики.
Почему я вижу сообщения от анонов которые говорят что не надо учить джава? ПОЧЕМУ ВЫ ЗАДРОТЫ ПОЗВОЛЯЕТЕ ЭТО ДЕЛАТЬ, ВЫ ЧТО ЗРЯ ИЗУЧАЛИ ЭТОТ КОД? АААААААА???
>>3459704 >у меня пути назад нет В плане? Начиная с того, что ты можешь поменять специалитет, заканчивая службой. Путь всегда есть. Впрочем слушать здешних нытиков и терпил по поводу работы - себе дороже. Это как инцелов всерьез воспринимать.
А можно в жабатредике обсждать жабку? Вот перенсите ваше обсуждение в мвп пж, там сидите, сритесь до посинения, кто волк, кто терпила, кто грефу пятки лижет, мертв ли вкат, жив ли и тд.
>>3460103 Нахуя ты на двач то идешь с этим вопросом? Ты вакансии читаешь вообще, перед тем как на собес кринжевать идти? Там тебе черным по белому пишут скиллы, ожидаемые от кандидата, включая список технологий.
Откопал у себя текстовый файл 2021 года с требованиями на собес джуна. Он сейчас актуален?
java core, алгоритмы, sql, postgres, spring core, jpa/hiber, spring data jpa/mongo, spring boot, spring mvc, spring security поверхностно, понимание как написать дефолт тесты, docker, git.
Прикрути к пету сваггер. И прочти статьи зачем нужны в общих четрах кафка и кубер. Ну и гофпаттерны(задрочи 2, кроме билдера фабрики и синглтона - я бы предложил декоратор и стратегию) с солидом и асидом.
У нас подрядчики-пидорасы на джаве пишут нашу ИС. Но они ее с 2011 херачат на сервлетах и прочем Java EE, интерфейс на свинге и веб-аппа с ваадином. Джава 8 естественно, на 11 не могут перейти, многомиллионная миграция. У нас даже нанятый пентестер не смог веб приложение попентестить нормально своим Burp suite, потому что он не привык что нет REST, а все на старых вебсокетах построено.
>>3461834 >на 11 не могут перейти, многомиллионная миграция В чём проблема просто в платный чат гпт залить проект и сказать ему пофиксить всё для миграции? Буквально 1 минута работы.
>>3462271 Обязательно пиши каждый день отчетик в жабатредик, как ты покушал, покакал, чего выучил нового, какие трудности возникли. Поможем чем сможем так сказать.
>>3462314 В плане? Обсуждение жабки, какие проблемы возникли, какие мысли по этому поводу, вопросы - это интересно. А вот очередное нытье, что "вката нет" не интересно.
>>3462314 Дружище - на фоне большей части местного контингента, состоящего из нейронкодегенератов, вкатанет-всепропало-инфантилов или, прости господи, шарпеев - что бы ты по неопытности ни ляпнул, ты врядли будешь бесить.
Желаю тебе удачи, и верю что все у тебя получится. Ты - большой МОЛОДЕЦ!
>>3462932 5% писания кода и 95% плевания в потолок в поисках наилучшего решения в данной ситуации. Решить поставленную задачу можно оооочень многими способами, тебе как пограмисту надо избрать лучшее из них, которое вписывается в архитектуру, удолетворяет заказчика, не слишком прожорливое, не слишком сложное. В общем-то таким макаром можно за весь рабочий день буквально одну строчку написать и заебися, поработал. Документация в этом случае лишь один из источников для решений.
Что надо, чтобы стать жаба сеньором в среднем тырпрайзе? Лычку мидла в микрогалере получил 2 года назад. Год назад ушел в большой банк на х2 мидлом. Первые полгода обживался и охуевал от бюрократии. Потом еще полгода было не до карьерного роста. Другие дела порешал, думаю как теперь стать сенькой. Внутри для подавляющего большинства грейдапа нету, насколько я знаю. Через полгода буду валить, тогда будет 4 года стажа. Что надо расписать в резюме и что задрочить, чтобы на следующую работу взяли сенькой с х.1.5 зепкой?
>>3463165 Контейнеризация - это чисто линуховая тема. Т.н. wsl - это тоже линукс, причем не виртуализированный, а запущенный как бы рядом. Так что тебе в любом случае придется с ним столкнутся. Плюс в линухе есть баш - ебал я в рот этот повершелл, просто говно говна.
>>3463074 Это ближе к сисадминству, девопсингу. Совершенно другая область. Программист может в душе не ебать как устроена ос, пачиму синий, красный или серый экран вылезает.
>>3463310 А зачем фокусироваться не на твоей специальности? Расширение экспертной области ни к чему хорошему не приведет, только к уменьшению глубины.. Просто делегируй ответственность и все.
Крутить возраст в плюс, если малолетка, нормальная тема или нет? Опыт уже все крутят, всем поебать, насчет возраста не слышал. На этапе сб проверку опыта могут скипнуть, а вот возраст явно будет видно
>>3463294 контейнеризация это костыль для линуха, чтобы обойти эти обосранные пакетные менеджеры и разруливание конфликтов. Зачем изначально линуксоиды пытались сделать шаринг общих либ? Экономить килобайты? А зачем поддержку версий не сделали?
В итоге такая экономия на этих килобайтах, что приходится делать копии всей системы, заебись
>>3463455 Контейнеризация - это про изоляцию, чтобы внесенные изменения не влияли на хост. Сначала это чрут, потом уже с развитием сигрупс стала возможна изоляция не просто фс, но целых процессов. Ну и еще раньше некоторые программы запускались as if root, типа ping ибо без рута ты не сможешь создать сокет что ли. Потом эту хуйню пофиксили создав что-то типа authority, которое ты можешь выдать процессу. Вот во всем этом НЕ прослеживается борьба с пакетными менеджерами. Если тебе не нужна изоляция, а нужна поддержка скажем нескольких версий пакетов, то существуют пакетные менеджеры, которые могут обеспечить тебе такую поддержку и без копирования всей ос.
>>3463455 Это делается командой chroot без всякой контейнеризации. chroot /mnt /bin/bash
Использовалось не только для того чтобы создать собственное окружение для софта, но и для безопасности (например запустить вебсервер в чрут, и для развертывания системы на устройтвах.
В современных линупсах десятки механизмов изоляции namespaces, SELinux, seccomp, UID-изоляция и прочее
Классический пример android где это используется не для пакетного менеджера а чтобы твой плееер не залез в твою кредитку
>>3463463 это следствие что каждая новая установленная программа/обновлённая либа может сломать систему или старые программы. Следствие что установка программ требует внесений глубоко в систему.
Той же жабе эти контейнеры нахуй не нужны, жвм сам есть контейнер, программы в жвм не лезут в систему и не засоряют
>>3463473 Ты же не только программы жвм используешь на практике. Скажем поднять локальную бдшку или еще какую-нибудь поеботу, типа установки кучи говна из pip install. Так что на практике с контейенрами тупа удобнее.
В джаваскрипт треде не признаются, может среди вас виновник есть? Хотя мне кажется тут всё-таки фронтомакака виновата. Если в отсутствии диапазона весов можно сбросить вину на бек, то блядь сортировка чисел по алфавиту уже никакого оправдания не имеет.
>>3463950 у меня есть шансы, запросил 40-50к, компания студентов набирает активно (делает локальные ИС для ЖКХ) по отзывам - поспрашивают про ООП и модификаторы доступа и дадут тестовое на дом, берут без проблем надеюсь на чудо не иначе
>>3463953 > 40-50к Господи... Что за неуважение к себе. Даже если бы ты внезапно им приглянулся, они бы тебя чисто по приколу нахуй послали чтобы поржать над бомжом-побирайкой. Шансы на трудоустройство максимальные при просьбе 200к, ниже и выше шансы падают.
>>3463452 На этапе отбора HR-шей окей это прокатит, но, допустим, я получаю оффер и хрюша перекидывает мои данные СБ, мне надо заполнить доки и там выясняется что у меня другой возраст Конкретно СБ будет похуй на это, верно? Они не знали тот возраст который я лично в сообщениях сказал хрюше Проблемы могут возникнуть если сама хрюша начнет выебываться, да?
Всем привет. Я краток буду. Мой манифест коротенький. Короче говоря, подтянул я вашу джаву на уровне уверенного новичка.
Насколько мы все знаем, девиз джавы таков: напиши единожды - запускай где угодно
Ну и?? Как написать программу для телефона которая к примеру создаст пустой файл в какой-нибудь директории. Ну или ок.. просто сложит 2+2 и принтанёт на экран или на консоль хотя-бы. ? Нееет ребята, никаких тяжеловесных Android studio и Eclips'ов я ставить не буду на пекарню и компилировать по 10 минут APK с хеллоу волдрм на три строки. Я вот сижу с андроида. А джава гласит ,что она может всё.
Ладно. Это был риторический доёб. Признаюсь. Сам понимаю, что это невозможно. Может какое нибудь окружение развернуть на Android'e в котором можно команды/программы на джаве транслировать ? Ну реально без приколов. У меня сейчас есть необходимость написать несколько скриптов которые будут создавать файлы на флешке и производить стандартные API действия в телефоне. Что мне сделать? В какую сторону смотреть?
(Скрипты должны одним/ двумя криками запускаться. Никаких развертываний IDE в телефоне и пр плясок)
>>3464910 Так в Андроиде нету жабы. Есть Android SDK, для которой можно писать код используя Java или Kotlin. Можно установить Termux со встроенным мини-линуксом и ставить туда что угодно - OpenJDK, GCC, Go, Python... Но у меня там получилось создавать только консольные приложения, графику ни в какую не хочет (там надо как-то сервер X Window настраивать). А WORA это больше про аппаратную независимость. Уже под Windows и Linux появляются различия, если писать desktop программы.
>>3464910 >Нееет ребята, никаких тяжеловесных Android studio и Eclips'ов я ставить не буду на пекарню и компилировать по 10 минут APK с хеллоу волдрм на три строки. Можно собирать Gradle'ом из консоли, но, насколько я знаю, без Android SDK нельзя создать APK файл из JAR'ников. Можно писать хоть на C++, хоть на Delphi, хоть на JavaScript (React Native), но в любом случае потребуется Android SDK.
>Ну реально без приколов. У меня сейчас есть необходимость написать несколько скриптов которые будут создавать файлы на флешке и производить стандартные API действия в телефоне. >Что мне сделать? В какую сторону смотреть? Посмотрел бы в сторону интерпретаторов, какой-нибудь Python или Lua наверно должны найтись. На iPhone компания Apple прямо запретила интерпретаторы (кроме браузеров с JS) в своем магазине. Яблочник не должен думать и уметь программировать. Отсутствие bash в Android - это маразм, конечно.
>>3465027 В общем, насколько я понял, для того чтобы просто хотя-бы развернуть маломальское окружение которое будет в состоянии транслировать(хотя-бы) любой самый простой хотя-бы скриптовый язык(хотя-бы Lua) , то придётся всё равно знатно поебаться.
>>3465033 > Посмотрел бы в сторону интерпретаторов, какой-нибудь Python или Lua наверно должны найтись. Да!! Lua попробовал. Действительно прекрасно справляется. Обнял тебя анончик!
Правда придётся подтягивать язык lua, яж на нем не писал никогда
>>3465033 >Отсутствие bash в Android - это маразм, конечно. Там есть классический POSIX-совместимый шелл, в чём проблема? Зачем тебе именно баш? >в своем магазине Там нельзя впихнуть статически слинкованный бинарник и запустить через шелл, как в любом юниксе?
>>3464910 >> Нееет ребята, никаких тяжеловесных Android studio и Eclips'ов я ставить не буду на пекарню и компилировать по 10 минут APK с хеллоу волдрм на три строки. Я вот сижу с андроида. А джава гласит ,что она может всё.
А что ты хотел? Чтобы на apt\swing захуярить гуи для ведроида? Бля, я бы тоже так хотел и в рот ебать оптимизацию и сресурсы, но если подумать сколько это требует работы чтобы то можно охуеть. И разрабы жабы тоже охуели и "сказали нахуй надо, пусть сами пердолятся"
Короче, прошел курс Java-дев от ЯндексПрактикум. С учетом моего 7 летнего опыта вебмакакинга не сказать, что проходится изи. Сам пошел из-за серта о переподготвоке, чтоб закрыть свою боль об отсутствии тех.вышки по ит
Чувствую себя машиной, готовым веслать днями напролет за оверайс, занимаясь жсоноукладкой.
Все остальные курсы хуйня на постном масле уровня инфоциганщины.
Курс нереально ебический, за весь курс был на одном вебинаре, но практики я ебу там, я прикидывал под 1000 заданий суммарно и ты должен сука каждый пройти, иначе дальше не пойдешь. Рикамендую для вкатунцов лютейшая годнота.
>>3465174 Там текстовая часть теории + тренажер встроенный (аналог литкода), только задачи не из серии "Посчитай числа фибоначи до 1000". Что я тебе должен вложить? Текст теории, текст тебе и диксик напишет.
>>3465172 Там есть бесплатная часть можешь сам посмотреть.
>>3465166 нет, просто курс хороший, а так у меня много вопросов к этой конторе по "базовой" части.
>>3464837 Может кто-нить пояснить за этот процесс, или наводку дать в каком треде конкретнее это можно уточнить? Не конкретно по волчарской теме, а именно проходит ли информация та же самая меж HR и СБшниками
>>3465567 Каждый финальный проект кстати проверяется ревьювером + postman тесты, которые при пулреквестве на гитхабе прогоняются и которые обязательно надо пройти для сдачи, а кейсов там обычно штук по 40
>>3465608 Как это с моками связано? Если максимально абстрагироваться, у тебя есть черный ящик, множество входных данных и то, какими должны быть выходные данные. Избирая из множества входных данных краевые случаи ты ничего в сущности не меняешь. Ключевая проблема в том, что входными данными для черного ящика служит целый реальный мир, поэтому приходится именно его мокать. Но.. Кто вам мешает изначально делать архитектуру которая не требует в качестве входных данных целый блять мир?
>>3465590 >>3465608 Че вы себе так анус прищемили, джаваны, лол? Ну да, не умеете вы в жабе писать нормальные тесты. Приходится вот так вот дрочиться с моками, а потом плакать, при малейшем рефакторинге. Хорошо, что мы в компании избавились от джава кретинов и их помойный спринг улетел на помойку. Сейчас все пишем по уму на сишарпе и гоулэнге и команда молодая и это самое главное, а не 30+ старичье, которое моки дрочит
Я понял, что тебя так трясет с моков, у вас то нет такой либы и врядли появится. Точнее есть жалкое подобие)
А не появится, потому что в это дело надо въебать сотни нефти кабану, либо в опенсурс пиздовать, но в то время когда мокито активно заежал в тырпрайз, было нормой красноглазить за пк и по 20часов, а сейчас на это нет времени ведь надо везде выебываться и рассказывать какой шарп охуенный вместе с голанг, а ржава такое говно)
Была бы либа такого уровня, уверен ты бы с радостью захлопнул ебальник и не менее радостно мокировал "весь мир, даже небеса, даже аллах", чтобы проверить одно поле в сущности.
А ключик просто открывается: The other important difference relates to the “virtual” keyword in C#. Methods in C# are final by default. You can’t override them unless they contain the keyword “virtual” on its signature. Both, Mockito and Moq create test doubles by subclassing on runtime, overriding methods and implementing the fake behavior on them (as far as I know). So, if the method you want to stub is not virtual, Moq will throw a runtime exception. If it is not virtual but you don’t specify any fake behavior on it, it will not throw exceptions, but worse, it will call the actual implementation. So you might be hiting the database in your unit tests inadvertedly. What I do, is that all my methods are virtual by default (I write “virtual” on their signature).
Понимаю твою боль, ну попробуй проработать анал с психологом, чтоле
>>3465865 >Это невозможно >Видос буквально говорит что это "плохой подход" и всё Ну если не применять свою голову, а следовать учению апостолов с митапов - то да, тут к сожалению только терпеть. С другой стороны можно порадоваться что даже абсолютные амёбы которым конференции заменили мозг, могут писать на джаве и это даже будет работать.
>>3465871 Ну если нужны - можете писать с ними, но тут-то ноют что НПЕ задолбали. Можно и без них, но если хочется колоться и жрать кактус- тут никто запретить не может.
>>3465872 Там буквально описывают десятки случаев, когда null просто необходим и ты его не сможешь избежать. Ты типа даже не смотрел, а просто по обложке начал пиздеть? Гений че.
>>3465881 Посмотрел по тайм коду. Если ты гений не туда таймкод дал, кто здесь виноват? >ты его не сможешь избежать ага, а при избегании сразу поднимется визг ДА ТЫ ЧО ТАК НЕЛЬЗЯ НИ В КОЕМ СЛУЧАЕ ПИСАТЬ ФУ ГОВНО вот и есть основная причина невозможности не использования нулов
>>3465887 Ну бля, мне че пересказ по таймкоду делать? Ты издеваешься? Посмотри 10 минут начиная с него и по пунктам, как ты избежать наллы сможешь, в случае создания массивов, в случае мапок метода get, аналогично методу репозитория find, в случае дефолт конструкторов в том же хибере. Давай давай, рассказый.
>>3465892 Потужно. >>3465891 Опшионаллы нельзя использовать в качестве филдов, как думаешь почему? Нулл объекты, это типа дефолт значения EMPTY? Найди этот налл объект у Integer. Который в хибере служит @Id и является null, в случае если он не создан.
>>3465896 >Опшионаллы нельзя использовать в качестве филдов, как думаешь почему? Я думаю потому что очередной апостол в своём Евангелии от стаковерфлоу сказал что это плохо, а миллионы овечек повторили.
>>3465900 >очередной апостол Да-да, апостол, который в джавадок блять. Сука, ну ты даже не читал её. Как можно-то? Это типа предлагать технологию, но не знать для чего она предназначена. Пиздос.
>>3465919 > Неудобно вышло? Прикол в том, что если ты не знал про это, то ты никогда таким способом не использовал опшионал и никогда не видел этого. Потому, что это подчеркивается идеей. Также как и использование в качестве аргументов методов, что к слову ещё тупее, имея flatmap-то. >Делай оверлоады на методы Какие методы? Мы про поля. >собирай новые объекты Это комбинаторный взрыв. Ну типа даже имея скажем 10 полей, надо создать, ну где-то 3628800 классов, чтобы охватить каждую комбинацию. Если бы в жебе была скажем хотя бы утиная типизация, то такого не требовалось бы. Впрочем я думал над тем, чтобы использовать частичную утиную состоящую из пика. Типа сделать интерфейсы, F1Get, Fi2Get, ..., а потом простым перечислением можно избежать комбинаторного взрыва. Типа того <T extends F1Get & Fi2Get & Fi5Get> void foo(T value) { /.../} Тут очееень много проблем возникает и возмооожно это в жабе и возможно, но я ебал, столько сложностей из нихуя просто. В ином случае это будет какая-то динамическая поебота, что еще хуже чем null. >>3465933 В общем-то суть про дефолт значения obj-ref. Ты когда создаешь массив - new Integer[4], у тебя он заполнен {null,null,null,null}. Как-то простым способом это нельзя, ну если только не сказать, что массивы нинужны. Потом дефолт значения полей, например если у тебя пустой конструктор, который обязателен в том же хибере. Т.е. сначала у тебя все поля будут null, и ты этого никак не избежишь, ну и еще внутрянка спринг даты, в методе save чекает поле @Id на null. Вот он предлагает, что можно мол, ну хуярь все филды просто Optional и намальна. Или вот выше другое. В общем мой поинт, null пронизан во всей жабе, ты от него никак не избавишься. Нельзя просто сказать, ну пук среньк, не используйте. Ты его так или иначе будешь юзать. Да даже имплементация Optional - это null и сам Optional может быть null: void foo(Optional<Integer> value){ if(value != null && value.isPresent()){ //... } }
>>3465953 Еще раз подчеркивает, что ты никогда не использовал Optional в каких-то специфичных сценариях. >This is a value-based class; use of identity-sensitive operations (including reference equality (==), identity hash code, or synchronization) on instances of Optional may have unpredictable results and should be avoided. Он просто неудобен во многих сценариях и многословен. В сущности, кто тебе мешает сделать геттер, который просто делал что-то типа этого: Optional<Field1> getField1(){ return Optional.ofNullable(field1); } Но, то что ты не предлагаешь даже такой вариант, опять же - ты никогда в своей жизни этот optional нормально не использовал и даже не понимаешь, почему его не следует использовать например в качестве аргумента. Ну не понимаешь ты инструмент, ну бывает, кто ж осудит.
>>3465958 >Он просто неудобен во многих сценариях и многословен. Суть, собственно как я уже раньше и говорил единственная причина "невозможности" - предпочтения.
> В сущности, кто тебе мешает сделать геттер, который просто делал что-то типа этого Кто тебе мешает просто написать самому такой же опшонал, который будет немногословен и будет учитывать все условия что тебе нужны? Я java.lang.Optional просто как эталон взял.
>Ну не понимаешь ты инструмент, ну бывает, кто ж осудит. Чел, у тебя блять претензии к инструменты - многословность. Тебе бы вообще лучше рот не открывать среди профессионалов.
>>3465964 1. На джаве давно это уже не надо писать. 2. На питухоне ещё хуже даже старой джавы из-за if __main__ != main или я не ебу как точно эта хуйня у вас там звучит.
>>3465968 Так что елси ты предъявляешь претензию к инструменту "многословность" - это значит что до тебя не может дойти, что ты можешь взять суть инструмента и написать такой же по духу, но с таким количеством слов, каким хочешь. Это значит ты либо вкатун никогда не работавший над реальными проектами, либо формошлём, садящийся в лужу если нет библиотеки под задачу. Так или иначе - твоё мнение можно не учитывать.
Ладно вам сраться. В джаву во всю прыть вон завозят JSpecify на анноташках. Многословно - прям как мы любим.
Вобще, я тоже всю дорогу недоумевал, нахуя гоец опшенал в аргументы не рекомендует пихать. Всю дорогу так делал. Джаваны грят - тормозить может, но ни разу не сталкивался сам. Наверное это должно быть что то совсем жирный и горячий сервис, чтобы прочувствовать импакт от этой мелочевки.
>>3465962 >Кто тебе мешает Отсутствие этого - https://en.wikibooks.org/wiki/Haskell/do_notation Как появится, так сразу. Ну и еще возможность абсолютно любую сущность сделать null, это просто дебилизм. >Чел, у тебя блять претензии к инструменты А отсутствие гарантии, хуйня, ну да? Какой мне чел сверху гарантирует, что Optional сам не будет null? Или что в аргументах какой-то далабеб не пришлет null? Тот же котлин как это решил? Правильно, каждый входящий аргумент чекать на налл. Гарантии - во. >многословность Когда трехстрочная программа в одном языке, требует во несколько раз большую портянку, то желания писать на этом пропадает https://godbolt.org/z/xdn4x7931 >>3465987 Смотри, в аргументы конкретно не надо пихать опшионал потому... Что это не нужно. Буквально. Если у тебя есть Optional, то примени для этого flatMap и все. Как в коде выше. Тебе не надо ничего придумывать, все сделано до тебя.
>>3457776 (OP) Где найти список бест практисис для проектов на Java? Почему приходя на проект раз за разом наблюдаю один и тот же понос? Почему нет свода правил и рекомендаций как структурировать приложение, автоматизировать рутинные операции и т.д?
>>3465990 Для того, чтобы чекать нули статическим анализом. Раньше оно всю дорогу было в идейке, но теперь вот выехало в отдельный стандарт с отдельными референс имплементациями.
>>3465987 >Вобще, я тоже всю дорогу недоумевал, нахуя гоец опшенал в аргументы не рекомендует пихать. Архитектурная задумка не та, так-то. Их аргумент в том, что так как Optional это по сути такой же ссылочный тип, то он тоже теоретически может быть нулом, то есть ничего не меняется ты только увеличиваешь количество возможны комбинаций параметров.
Наверное на вайтборде эти размышления о высоком очень красиво смотрятся.
>>3465998 И зачем это нужно в виде отдельной зависимости? Проблему с нулами в языке это не решит. Типичный проект на джаве это полгода пытаться высрать простейший круд на спринге и хубирнейте, а затем следующие полгода дебажить нюлы в продакшене. Затем команду нахуй выгоняют на мороз и все переписывают на гоулэнг за месяц
>>3465993 >примени для этого flatMap и все. Как в коде выше.
Так этим примером то твоим все не ограничивается. В твоем примере ты априори исходишь из того, что нуль к тебе аргументом в функцию никогда не придет, а все проверки выносишь на вызывающий код, где у тебя флетмапы. А что если сама семантика функции предполагает, что у тебя один из ее аргументов может отсутствовать? Что если ты хочешь делегировать именно методу работу с maybe-сутью этого аргумента?
Казалось бы - передай опшенал как maybe в хачкелле аргументом, и дело с концом. Но гоец с идеевскими аналайзерами сразу на говно изойдутся, да еще им вторит куча джаванов. Я конечно все понимаю - каждый разраб мнит себя дартаньяном а всех вокруг - идиотами, но до такой терминальной стадии раньше это не доходило.
>>3465999 Опшионал это и есть фунциональщина, плоть от плоти. И в чем я не прав, говоря, что ну просто не вписывается она в жабу и все. Неприятно это использовать. >>3466008 >что у тебя один из ее аргументов может отсутствовать? Эм.. Для этого есть ad-hoc полиморфизм, называемый overload method. Т.е. делаешь точно такой же метод, с точно такой же семантикой, но без одного аргумента. Это гораздо понятнее.
>>3466011 >Эм.. Для этого есть ad-hoc полиморфизм, называемый overload method. Т.е. делаешь точно такой же метод, с точно такой же семантикой, но без одного аргумента. Это гораздо понятнее.
Хорошо, идем дальше.
Что если у нас не метод с аргументами, а класс с аттрибутами. Причем не простой класс, а иммутабельный - все аттрибуты у него final. Один из аттрибутов может отсутствовать. Так как аттрибуты - final, нужен конструктор, который их просеттит. Опшеналы в конструкторах discourage'атся так же, как и в методах.
И что? Обростать теперь двумя конструкторами вместо одного? А если опшенал аттрибутов больше одного?
>>3466008 >Но гоец с идеевскими аналайзерами сразу на говно изойдутся, да еще им вторит куча джаванов. Я конечно все понимаю - каждый разраб мнит себя дартаньяном а всех вокруг - идиотами, но до такой терминальной стадии раньше это не доходило.
Нужно просто написать Maybe класс и это будет совсем другое! И Гоецу полизнул и упомянул монады и идея успокоилась - тут сразу видно что человек толковый, головастый, не каким-то там опшоналами оперирует!
>>3466018 Да все уже было... Вон в vavr'е есть Option, к примеру. Причем там они прям упоролись на предмет соблюдения монадных законов: Option(null) и None там - разные значения.
>>3466014 Это уже должно решаться например вызовами по имени параметра и дефолт значениям, но когда это введут хуй его знает. На данный момент, делай @Builer в лобке и все. Впрочем, как я уже писал, ключевая проблема билдера, что ты никак не можешь отметить обязательные и необязательные параметры семантически.
А я в рот ебал ломбок, и в рот ебал пересаживаться на билдеры из-за мини-проблемки, которая решаема обычным возложением болта здравого смысла на вахтерство всяких гойцов...
>>3466026 Генерь идеей и делай особые комментарии-метки, чтобы оно скрывало это все. >>3466027 Ну типа ты можешь больше забить и просто использовать null напрямую, кто тебе мешает? В филдах-то ты не будешь же использовать Optional/
>>3466029 >Ну типа ты можешь больше забить и просто использовать null напрямую, кто тебе мешает? В филдах-то ты не будешь же использовать Optional/
Мог бы, если б проблемы нулей меня вообще не заботили... Optional был хорошим компромиссом, который форсил проверки на отсутствие. Да, не без оверхеда, но не удавиться же теперь ради крох?
Впрочем, сейчас с наличием JSpecify я бы действительно попробовал избавиться от опшеналов в пользу @Nullable и посмотреть что получится. Пока руки не дошли.
>>3466025 >ключевая проблема билдера, что ты никак не можешь отметить обязательные и необязательные параметры семантически. Это проблема не билдера, а немощи, которая его пишет и не знает про faceted builder.
>>3466067 > faceted builder Хм, т.е. запихнуть в конструктор/фабрику билдера обязательные параметры. Ну кстати круто. Лобок так не может и генератор идеи тоже. Руучками писать :3
>>3465993 >Какой мне чел сверху гарантирует, что Optional сам не будет null? Наверное тот кто этот код сверху писал, скорее всего это ты же и есть, ты же наверное больше одной функции написал в проекте. А когда управление приходит извне - можно и проверить, если паранойя накрывает. Интересно кто-нибудь когда-нибудь вообще, со времен введения опшоналов, получал ли нулл там где ожидался опшонал в реальном коде? Вот на обычных ссылках ловят НПЕ постоянно и довольно урчат.
>>3466087 Ну это я просто для гиперболизации писал. Вот обычные аргументы, мне никто не гарантирует, что они не будут nullable. Т.е. придётся ставить какую-нибудь хурму типа @NotNull. Ладно аргументы, а кто гарантирует, что в филдах тооочно никто не подсунет с учётом, всяких хиберов.. Смотря дальше, а кто гарантирует, что в коллекциях нет null? В принципе.. я бы хотел язык в котором вообще нет null, т.е. подтипа всех типов, который можно создать. Он не должен иметь такую возможность.. Это сущность вроде while(true); что-то, что никогда не будет окончено или выкидывает исключение.. В котлин это Nothing
>>3465993 >Отсутствие этого - https://en.wikibooks.org/wiki/Haskell/do_notation Не понял bind - это же литерали просто присвоение локальной переменной в скоупе then - это просто вызовы в контексте одного объекта >In Haskell, we can chain any actions as long as all of them are in the same monad. То есть определил объект монады, определил у него экшены и все их вызвал в скоупе этого же объекта. Даже статья пишет >This sequence of instructions nearly matches that in any imperative language. Что тут космического? И вот из-за этого был весь сырбор?
>>3466362 В Optional уже существует байнд - flatmap. Для передачи значения между байндами требуется вложение лямбд. Что я уже в коде показывал. Проблема в этом вложении, ну.. при неправильной логике боюсь это просто в пиздец превратится. Способа как-то убрать это вдоженность, наверное и нет. Плюс помимо сложности этого апи, старое с null никуда не исчезнет. Null везде, он может вылезти откуда угодно, делать иные на каждый чих - маразм, но и статический анализатор не сможет исключить все случаи, только самые простые. В такой парадигме опшионал ни то, ни сё.
Неповоротливое квазимодо, которое В сущности ничего и не меняет. Может жеп с notnull value type что-то изменит..
>>3466496 Ну сделай ты sealed интерфейс Node. У него два final наследника NullNode и ValueNode. Потом в pattern for switch на ищи определишь, нулевая нода у тебя или нет. Это называется тип сумма.
>>3466496 >next->isNull() ? в котором (value == null ) ? У тебя там value может вообще не быть, тебе всего-то нужно имплементация метода которая все время возвращает true. Зачем тебе value?
В чем профит таких приседаний в конечно итоге? Я к тому что null реально проще, от него сложно отказаться. В любом случае ты где-то об null наебнешься, либо на бэке, либо на фронте (web\десктоп) и должен будешь как-то его обрабатывать. Лично мое мнение запись типа userRepository.findById(userId).orElseThrow(() -> new NotFoundException("user not found") );
Вполне удовлетворяет и fast fail и позволяет уйти от заебавшего все if (user != null)
Не, ну конечно есть варик сделать null - объектом, и я думаю это первое что пришло разрабам в голову, но раз его не запили в спеку, значит есть причины.
>>3466363 В чем суть паттерна, как java поймёт что ей надо создать экземпляр класса который нихуя не делает? Типа ебанули паттерны, а в коде все равно проверять x == null ? new NpeX() : New X(). Поесняйте, я сеньор, мне надо знать.
Ебать вы конечно тут срач устроили, все эти паттерны это наебка. О мы вместо одного метода в 500 строк с сотней if-ов сделали сотни имплементаций в каждой переопределя метод в 5 строк, и класс обертку со свитчем, ебать мы архитекторы, стало работать медленно, но как красиво в коде ммм. О мы теперь не проверяем на null, мы все оборачиваем в опшинал и проверяем что он не nullпишем flatmap orelse ЭТА ДРУГОЕ ПАНИМАИТИ!11 Ты сервелеты используешь и вытаскиваешь бади ты легасидаун надо аннотации омном
Пропущено 1000 ответов, тред #9999 Паграмирование это просто для лутания бабок, какая разница на чем писать и как, особенно кекаю с дегенератов с настройкой отступов и и портов, ты свернул ттри импурта надо когда их 5!!111
>>3466516 >Лично мое мнение запись типа userRepository.findById(userId).orElseThrow(() >-> new NotFoundException("user not found") >); Так ты с таким же успехом можешь и без всяких опшоналов просто НПЕ ловить
>>3466581 >Так ты с таким же успехом можешь и без всяких опшоналов просто НПЕ ловить Я за два дня таки не понял о чём спор, трай кач обмазать, в лог записать и вернуть ок 200 еррор тру
Привет, а что по собесам сейчас в java? Сидел лутал зп ниже рынка на одном полулегаси проекте. Осенило, что не развиваюсь больше по скиллам, да и денег галера жмёт даже проиндексировать раз в пол года, обновил резюме, максимум профитно описал ласт проект (хайлоад микросервисы все дела) и за 2 недели пуша/откликов ни 1 собеса и скринига. Резюме до 2025 года было рабочим и более менее конвертировалось в собесы. Может я чего-то не понимаю конечно.
>>3466628 мяушит. Надо активнее откликаться и бегать за хрюшами похоже. У меня скоро деньги закончатся, уже подумываю в курьеры идти. Ещё зимой активно писали сами, щас игнор или отказы. Ну может ещё лето, не сезон, все в отпуска сьебуют
>>3466653 >>3466640 Ну я пока на галере трудоустроен, но сил больше одноклеточные таски делать нет, до последнего тяну перед тем как в работу взять и максимально пинаю хуй. Скоро заметят, так как время описываем в задачах. + так как это галера, то набирают джунов аналитиков и продают как сеньеров, ни разу почти тз нормальное никто написать не в состоянии, скоро бомбану от лишний работы из-за долбаеба на том конце интернет кабеля, который просто перечитать что написал не в силах.
Алсо, подписан на группу Назарова в режиме рид онли с фейка. Там люди как-то устраиваются. И даже не в го. Может есть новые техники какие? Дикпик там вместо авы в резюме к примеру.
А и ещё за все время, а я ещё в начале весны перед отпуском пытался поискать работу, почти лутанул 1 оффер. Ржд, 3 дня офиса в Домодедово, нет аккредитации. Пол собеса расспрашивали про опыт, пытаясь поймать на лжи, потом минут 15 стандартных джавовских вопросов. Просил 250 за 3 года опыта, работать бы туда не пошёл, но в чем цимес, hr написала что готовят оффер, полторы нежели делала голову, а потом написала, что директор не согласовал 250 на руки. Скорее всего нашли веатуна за 200. Ну им же хуже, насколько я понял от челиков у них там нагрузка 1000rpc и их сервисы не выдерживают, все горит и нужна рабочая лошадка срочно.
>>3466676 Ну я 10+ лет опыта ищу за 180-200, выше мне кажется не реально, демпингую, надеюсь быстрее возьмут, жена уже косо смотрит, мол мне чё на работу тоже столь идти
>>3466694 Если это True, то я очень разочарован ситуацией в целом. Хотя, учитывая сколько no skill тел проходило собесы и устравивалось с 0 на 250 + политика государства, было ожидаемо что будет, мягко скажем, хуевато. Я просто отдыхал и не предпринял превентивных мер не научился варить металл Жаль, мне искренне нравится разработка если убрать всю эту корпоративную херню, бюракратию и волков. Будем терпеть получается и толкаться.
>>3466672 Самый рофл с этих одержимых волками эйчаров и задротов-душителей, что допросами они задавливают омежек программистов и скипают их ошибочно. А волки, которые замаксили софтскиллы на работе барменом, все равно легко просачиваются на пиздеже даже в крупнейшие конторы типа альфы и иннотеха
>>3466702 А что это блять, false? Я хз почему так ю, но когда я смотрю что на эту вакансию уже 500 откликов, мне ясно почему меня игнорит, остаётся только долбить напрямую на мыло зрюшам свое резюме или типо того. Или я хз, караулить их у подъезда, как раньше они нас
Есть какие-нибудь мысли, что будет с рынком в будущем? Текущая ситуация очень какая-то НЕ ОЧЕНЬ, крутят все, крутят очень дохуя, выдумывать легенду умеют. Как в таком мире пиздежа конкурировать? Быть гига пиздаболом?
сап джавач, взяли на работу, в понедельник первый рабочий день в моей жизни на проекте используется сырой sql (работа с ГИС, дохуя отчётов и прочее) как чаще всего эта тема реализуется? чистый jdbc? или jdbc template? ссу ужас просто, сейчас сижу с самого утра повторяю всё что знаю, ощущение - будто бы я вообще нихуя не могу и не умею, пиздос
>>3466815 >как чаще всего эта тема реализуется? чистый jdbc? или jdbc template? Какая разница? Главное как у вас на проекте будет. >ссу ужас просто Вообще хуй забей, собеседование пройти самое сложное, а это уже позади.
>>3466820 >Какая разница хочу заранее более-менее подготовиться >собеседование пройти самое сложное в этом и проблема, собеса то особо не было, лол >sql знаешь? агрегацию оконки знаешь? >да >расскажи разницу между синглтон и прототип на этом всё, с 1 минуты собеса было понятно что взяли, не знаю почему так
>>3466811 Х3, я го учу и пойду врать туда, не хочу любимую джабку осквернять ложью и там вилка больше и нет ебучего сбера и я за последний месяц так часто переписывал резюме, эксперементируя с описанием и накидывая год опыта, что у меня уже на старые вакансии автоотказы везде
А если по-чеснаку, сам сижу без собесов и оферов, работа ещё есть, опыта настоящего мало (2 года иду нахуй по фильтрам) и компании галеры. В честную проигрываю волку по всем параметрам кроме скилов, только их никто не увидит.
>>3466846 Хз, мне кажется опытному синьку легко прочитать волчару.
А какие боли ты испытал при разработке? Какие грабли ловил? Какую самую сложную задачу решал? В чем сложность? А как решал? А как понял что надо так решить?
А какой проект с которым ты работал тебе больше понравился? А почему?
>>3466844 Ты на одном аккаунте чето редачил, тем более опыт, конеш там пизда будет. Если я тебя правильно понял Если хочется редачить опыт это 100% новый акк на хх надо регать
>>3466854 Да, правильно понял, уже купил новый тг акк и зарегал hh с помощью смс сервиса. Накину наверное год до 3шки и порефакторю резюме, мейби фамилию сменю на семейную.
>>3466853 Фильтры у hr в основном на 3 года опыта стоят, я если не накину год то до технички даже не дойду. А так да, собесы что были раньше, были очень направлены именно на опыт. + внезапно спрашивали всякие мелочи которые только с опытом можно знать.
Какая же жава охуенная, хоспаде. Хоть и перекатился на фронт но на литкоде до сих пор задачки на жаве пишу и кайфую. Джавабогам моё почтение, остальным соболезную
>>3466855 Тут только почта, телега, и номер новые нужны. Первое меняется элементарно, второе меняется вместе с третьим, а третье стоит небольшую денюжку (если у тебя хороший оператор - то вообще копеечку)
>>3466864 Номер не обязателен, можно указывать что желаемый контак для связи тг. Тг акк купил за 300р примерно и чуть чуть на холде подержал, ничего не делая на нем, что бы не забанили. давно не капчевал очень и новая капчп уже порядком заебала меня
>>3466853 Глубоко в эти вопросы обычно редко копают, часть из того что ты описал часто даже не спрашивают. Ответы на них на приемлемом уровне можно узнать из видосиков на ютубе всяких (мок собеседования, видосы про рабочие процессы, про подобные "каверзные" вопросы на собеседованиях и прочее)
>>3466866 Номер же там в любом случае в резюмехе обязательный, причём сделать новый номер и на него уже телегу даже чуть дешевле выйдет чем то, что ты описал (а у хороших операторов вообще копеечка, 50 рублей например у одного оператора стоит подключить доп номер)
>>3466880 Не пользовался, чисто как е-сим на мобиле висит, для регистраций всяких (на хх том же) и тд. Но часто вижу что палочки связи почти всегда фулловые, в отличие от моего основного номера мтс
Писал в биг тех тред, но никто не ответил, может тут подскажут.
Сап, как дела у российского бигтеха с анкетами на сб и вообще как тщательно проверяют? Был офер в сбер, но отлетел по сб. Скорее всего из-за близкого родственника наркомана у которого на сайте приставов 2 страницы дел с микразаймами. Ну и сам не без греха, в студенческие было две административки за распитие в общественном, у общаг ловили. В условный авито/озонон/яндекс пройду? Яндекс на самом деле больше всех интересует, так как прошёл алгосы недавно и жду финалы. Ну и в озон может в будущем на гошке попробую пособесится. Понятное дело родственника никуда не спрятать, пугает перспектива работать всю жизнь на галерах без премий и за миску риса, пока какой-ниюудь средний разраб, устроены напрямую в сбер, лутает огромную премию и работает 2 секунды в неделю.
Как происходит процедура принятия оффера? Вот допустим прошел я один собес, дали мне оффер. Я теперь хочу пройти собес в другой компании и посмотреть что предложат там. Какой срок обычно дается на решение по первому офферу?
>>3467169 Как договоришься, обычно неделю-две дают. Бывает наоборот компания тупит и например та же СБ джве недели проверяет. Часто прям спрашивают проходишь ли собесы ли куда-то ещё и когда готов принять решение.
>>3466853 Ответы не волка из бигтеха >А какие боли ты испытал при разработке? Какие грабли ловил? Геморрой 3 ст. Больно сидеть и ходить в туалет >Какую самую сложную задачу решал? Что написать в форме для перфоманс ревью, когда полгода не было нормальных задач >А как решал? Расписывал каждую мелкую задачу как неебаться сложную и важную >А как понял что надо так решить? Тимлид сказал: ну напиши там что-нибудь
>>3467380 Не для чего. На java остались только старые проекты. Новые стартуют на Go и C#. Есть еще очень маленький процент проектов на Kotlin, но там 99% мобилки. Ну и в последние несколько лет старые проекты на java переписывают на Go
>>3467380 Для того чтобы быстро и удобно висать код с кучей спомогательных тулов и библиотек и не ебать мозги с управлением памятью, заголовками, if err != nil'ами, тайп хинтами и всем остальным. Сейчас по долгу службы периодически пишу и на С++ и блять, какое-то же это удовольствие писать на джаве. Рефакторинг легчайший, компиляция быстрая, все типы ИДЕ резолвит на раз. Пока не попробуешь писать на чем-то другом и не поймёшь насколько же писать на джаве легко, весело и молодёжно.
>>3467543 Смешно читать подобное. По факту я вижу как матерые сеньки и даже мидлы понимая, что им пизда, спешно переходят на гошку даже с понижением грейда
>>3467572 Да, это так, у нас те к то не смог перейти на гошку кидаются с обрыва, т.к. карьера по сути закончена и дальше пути нет. Везде, куда бы они ни пошли - в походке, во взгляде, в манере речи - всё в них выдаёт джавистов.
>>3467618 >Только вот когда все перекатятся в гошку че делать будем? Сделаем новый яызк, который парой ключевых слов отличается от шогки и будем форсить его кровь-из-глаз как долгожданное решение всех проблем.
>>3467609 Мне не нравится, что язык считает каждого программиста идиотом. Точнее не это, а то как он решил решить проблему - тотальный упрощением и невозможностью (по крайней мере декламацией) писать что-то сверхсложное. Какой-то крайне раковый путь, который программистов низводит до уровня бухгалтеров, которые бумажки туда сюда перекладывают, а вот вы жсоны. При таком снижении требований незаменимость тоже снижается и нейронов таких вот упрощателей гораздо быстрее заменит как по мне.
>>3467634 А мне нравится зп получать и заниматься программированием, а на каком языке или стеке - до пизды, подстраиваюсь под рынок. Я до этого по фану скалу изучал и фп вообщем, вот там пиздец да, а гошка изи залетает, даже прикольно, можно оказывается не писать очередную ProxyAbstarctFabcircZalupaService и все будет работать. Очень хочется на норм прод проект посмотреть на го.
>>3467638 Этот прав, кста. Сколько раз не приходил на проект и там все эти Контроллер, СервисИмпл имплемент Сервис, Рипазитари. Плюс килотонны кода и все свалено в сервис со 100500 зависимостями. Ну и вишенка на торте - тесты на моках. А если еще в тиме лид дебил и заставляет всякую хуйню руками писать и потом на нее еще и тесты делать - это вообще забей. Ну и магия - много магии, начиная от спрэнг фримверка и заканчивая всякими ноунейм помоями
>>3467640 >>3467638 >можно оказывается не писать очередную ProxyAbstarctFabcircZalupaService и все будет работать Удивительно, но это можно делать и на джаве, да и вообще на любом языке
>>3467735 В джаве у тебя есть выбор, можешь делать так, можешь кидать эксепшены. Пару раз проверить err != nil в принципе ок, но в го это совсем в пиздец превращается
>>3467741 Эх, вот если бы гошники сделали нормальные тайп суммы, а не эту поеботу, то этих проверок можно было бы легко избежать. А вот использовать эксепшены говнокодинг как раз уровня err!=nill.
вот и прошёл первый рабочий день пол дня ебался с доступами - пол дня ебался с задачей, не справился на проекте используется vaadin, написано около 300к строк, НИХУЯ НЕ ПОНЯТНО ВООБЩЕ ЧТО ЭТО ЗА ПИЗДЕЦ ковырял sql запрос на 3 ширины монитора - нихуя не получилось ну, не всё сразу, буду ебашить пока получается
>>3467765 Это у тебя не прошла интоксикация джавой, организм еще не очистился. Скоро наступит просветление. Будешь охуевать с ебанутых, которые на каждую задачу высирают 10 слоев абстрактных абстракций.
>>3467765 >>3467618 >>3467853 моя мечта писать на go но джуновских вакансий нет придётся пару лет джавы оформить а потом вкатиться в нормальный язык мужики главное дождитесь меня
>>3467848 лол нет конечно, потому что тебе все равно нужно будет возвращать управление обратно по стэку при ошибке, тайп суммы тебе в этом не помогут, без эксепшенов это обречено на лес return'ов по-любому
Переполнение стека не возникает из-за того, что Optional.empty умеет схлопываться. Ну проще говоря, Optional.empty().map(x -> ...) не выполнит код в лямбде. Это свойство ооочень похоже на резкий возврат по стеку вверх и это то, что го делает иным способом - через err != nill. Ключевая разница между map и проверкой, ты не сможешь забыть написать map. Тебе CE кинут или воринг, если просто get без ничего. Ну вот этот err - этот тот же Optional, только вместо EMPTY, у него какая-то ошибка лежит, он должен быть либо ошибкой, либо нормальным значением. В го ситуация иная - он может быть и тем и другим одновременно. Что как бы принципиально исключает возможность схлопнутся, а еще дает простор для ахуительных выдумок как на пике.
>>3467902 Да не обязательно целый either, хватило бы как в ts, возможность через | типы делать. Там они ещё прикольно из-за if сокращаются, типо можно проверить, что это не ошибка и в теле условия ts точно знает, что это не ошибка..
>>3467925 Ну.. Не использовать эксепшены для логики? Они для исключительных ситуаций как бы. Надо каким-то образом протягивать в сигнатуре информацию об потенциальных ошибках прямо до верха, контроллера т.е. А не скрывать это непонятно где. Жава пыталась выразить это через checked exception, но чет как-то жаванам не зашло.
>>3467930 >Надо каким-то образом протягивать в сигнатуре информацию об потенциальных ошибках прямо до верха, контроллера т.е. А не скрывать это непонятно где. Жава пыталась выразить это через checked exception, но чет как-то жаванам не зашло.
Ну так потому что хрень это.
С чекедами все здорово, весело и прикольно пока у тебя голые процедуры. Но становится резко уныло в тот момент, как появляются абстракции.
Вот представь себе интерфейс:
interface User { String name(); }
Ты сходу можешь ответить по одной лишь этой декларации, какие чекед эксепшены должны быть в сигнатуре метода name? Сразу отмечу: в имплеементации смотреть - читерство. Ты заранее не знаешь, не можешь и не должен знать, куда конкретная имплементация пользователя полезет за этим именем, равно как не можешь знать заранее всех имплементаций этого интерфейса.
>>3467242 Я помню ебошил по 3-4 собеса в день. Специально в тетрадочку в линию записывал. Всегда говорил, что да ищу работу. Может вафлиться сколько угодно уже офферы пошли. Потом звонили уговаривали мол идемте к нам, даже устроили ралли по зп. Кайф, охуенно был момент я в итоге в зп иксанулся.
Но то было в 2022 году, когда прогрессивная либезота решила внезапно устроить Верхний Ларс.
>>3467572 >> спешно переходят на гошку даже с понижением грейда вот объясни мне, почему такой форс этой гошки? меня лично от него блевать тянет назови хотя бы 2-3 киллерфичи
>>3467940 Нуу... Можно так interface User<T> { String name() throws T; }
Впрочем это скорее проблема ваших абстракций, а не самой концепции чекедов. Но я тоже согласен, что ну хуевато вышло и плюс конфликтует с лямбдами, в частности пиздец как "удобно" это все чудо в стримах обрабатывать.
>>3467942 Отлично. А теперь представь себе клиентский код:
public static showName(User user) { System.out.println(user.name()); }
User user = new GithubUser(githubKey); showName(user);
Вот ты говоришь:
>Надо каким-то образом протягивать в сигнатуре информацию об потенциальных ошибках прямо до верха, контроллера
Но при этом судя по твоему ответу выше этой инфе в сигнатуре интерфейса делать нечего. Получается, единственная опция для тебя протянуть инфу об ошибках - это имплементация. В примере выше - GithubUser.
Предположим, что имплементация GithubUser, которая выгребает имя пользователя из GitHub API, по честному прокидывает в сигнатуру возможное исключение, связанное с невалидностью API-ключа или недоступностью API. Представим даже что джава на говно не изойдет из-за того, что чекед эксепшенов, которые у тебя надекларированы в сигнатуре GithubUser::name нет в сигнатуре User::name.
Вопрос.
Кому всралась эта инфа с учетом того, что присвоив GithubUser переменной типа User ты ее просто проебал для всего кода, который работает с этой переменной? Внутри метода showName ты попросту не знаешь и знать не можешь, что тебе может отчеблучить user, которого тебе передали извне. У компилятора просто не остается ручек чтобы понять, что ты забыл чего то обработать.
>>3467951 Ок, можно и так попробовать. Можно даже прикрыть щас глаза на то, что джава с генериковыми эксепшенами дружит плохо, и совать дженерики в эксепшены обычно плохая идея.
Но этим мувом ты не решаешь вопрос. Ты наоборот все усложняешь. Возьмем опять пример отсюда:
Ну будет у тебя с учетом сигнатуры выше не такой вариант, а такой:
public static showName(User<?> user) throws Throwable { try { System.out.println(user.name()); } catch(Throwable t) { throw t } }
Что - лучше стало чтоли?
В чем то даже неа гоу кстати похоже...
Ты можешь возразить здесь что я ССЗБ, и надо было не знак вопроса ставить в дженерик, а конкретный тип эксепшена. Но тогда ты мне полиморфизм гробишь. Метод, который я раньше мог переиспользовать для абсолютно любого пользователя, становится менее переиспользуемым хуй знат ради чего.
>>3467888 >Что вы думаете о VSCode для Java Блокнот >если нет возможности купить intellijIDEA? Community >>3467906 Ну так через дженерики пары всё нормально передаётся, потом свичается по энуму и всё, типы доступны, на компиляции проверяется по дженерикам
>>3467957 Смотри. Знак вопроса что делает? Капит до верхней границы. Возникает вопрос, а почему у тебя верхняя граница это Throws? Ты че Error использовать собрался? Дем дальше, я думаю использовать фичу с тем, что подтипирование есть тип сумма. И ещё один неочивидный факт - ты в одном стене не можешь одновременно выкинуть более одной ошибки. Совмещая оба этих факта, ты можешь сделать UserException, наследники которого возникают в имплементациях. Таким образом, если ты хочешь взять любого юзера, то будь добр, обработай все возможные ошибки всех возможных имплементаций. Что тебе конкретно не нравится и как это вообще должно выглядеть иначе-то? >>3467958 Речь шла про голанг, в котоом женерики многократно менее мощные. Да и в жабе давным давно есть тайп суммы. С добавлением sealed.
>>3467768 >Давно свитчунулся или после зимы 2025? В 2023.
>>3467768 >Если втрое интересно было бы послушать как долго и сколько собесов было Я не планировать свитчится, просто весь ФААНГ набирает без учета твоего текущего стека. Если очень интересно могу запилить кулстори, но это точно не релевантно дя 99% этой борды.
>>3467853 >Это у тебя не прошла интоксикация джавой, организм еще не очистился. Я уже 3 года пишу на Го. Джава не то чтобы супер выразительный язык, но там хоть какие-то базовые вещи есть. Например в Го нет конструкторов, поэтому говей это - объявить публичный интерфейс, приватную структуру которая этот интерфейс реализует и метод New() который будет правильно инициализировать эту структуру. И конечно не забыть ебанину: var _ MyInterface = (*myStruct)(nil)
>Скоро наступит просветление. Будешь охуевать с ебанутых, которые на каждую задачу высирают 10 слоев абстрактных абстракций. У меня техлид пишет в Джава стиле на Го. Дело не в языке, а в ебанатах.
>>3467977 >Если очень интересно могу запилить кулстори Давай, правда мне уже почти 30, у меня нет проф вышки, так что врядли я когда-то буду где-то даже близко с фаангом, но всегда интересно почитать.
>>3467970 >обработай все возможные ошибки всех возможных имплементаций.
Вот это и есть шоустоппер.
Ты попросту не можешь заранее знать все возможные имплементации. Если ты считаешь иначе, готовься к тому, что реальность однажды придет и набьет тебе морду.
Сегодня у тебя есть GithubUser, который может падать из-за ошибок сети и ошибок аутэнтификации. Твой UserException - это NetworkError | AuthError, условно.
А завтра потребовалось читать пользователя из файла. Появилась новая имплементация: UserFromFile, и новая исключительная ситуация - FileException, которую ты приклеиваешь к своему UserException.....
....и у тебя взрывается нахуй пол кодовой базы, и ты сидишь как унылый долбоеб и переписываешь стопятцот обработчиков исключений по всему клиентскому коду. А потом еще ловишь ебалом регрессии на тестинге, потому что принцип open-closed все таки хоть и опошлен дядькой бобом с его ордой solidных долбоебов, но свою обьективную подоплеку имеет.
И это я еще не рассматривал случаи, когда новые имплементации подьезжают через импорт какой то внешней библиотеки, что не бьется с перелопачиванием имеющейся кодовой базы.
>как это вообще должно выглядеть иначе-то?
Просто надо понимать, что есть исключения как языковая конструкция, и есть исключительные ситуации и это - принципиально разные вещи. Исключительные ситуации которые в общем случае - просто ситуации в рантайме, когда по тем или иным причинам продолжение выполнения программы невозможно. Говоря про исключительные ситуации, различают recoverable и non-recoverable случаи. И смысл в том, что для работы с каждым из типов требуются изначально разные по своей сути инструменты. Это так потому, что сами цели перехвата в каждом из двух случаев - принципиально различаются. В первом случае цель - не забыть обработать ошибку и восстановить контроль выполнения. Во втором - сделать fail fast, собрав максимум доп-инфы (стектрейс, значение локальных переменных).
Для recoverable-ситуаций требуется обычно эта вот глубокая поддержка типов, которую ты так любишь. Верхом достижений в этом направлении стали эти любимые функциональные конструкции типа maybe, either и.т.д, которые форсят клиентский код делать дополнительные. Эксепшены, которые ты пытаешься натянуть на recoverable-случай - шаг назад. Прошлый век. Они попросту хуево подходят для этого.
Но зато, эксепшены отлично подходят для non-recoverable случаев. Они не замусоривают клиентский код нерелевантной инфой, но всегда оставляют возможность для своего перехвата (кроме разве что терминальных случаев, когда сама среда выполнения уже мертва). Но. Вышесказанное актуально только для unchecked эксепшенов.
В примере выше, интерфейсом я просто декларирую, что имя у пользователя обязано быть, а если его по факту нет - значит это non-recoverable исключительная ситуация - поэтому любое исключение которое могло бы выпасть из метода name будет unchecked. Вот и все. Если б контракт допускал его отсутствие, там был бы Optional<String> name().
>>3467990 >и у тебя взрывается нахуй пол кодовой базы Так. Смотри, обработчик есть только в самом верху. Плюс еще прикольная вещь, вообще говоря женерики позволяют как бы проносить информацию, поэтому print1 будет содержать не UserException. Поэтому в принцииипе взрыва не должно быть. >Они попросту хуево подходят для этого. В принципе согласен, просто мне интересен сам процесс натягивания. Прикольно как бы понимать какие границы у той или иной языковой коснтрукции.
if err != nil { __return nil, err } Это то же самое, что try { __puk(); } catch (PukException e) { __throw e; } При этом метод должен указывать в списке throws супертип PukException, чаще всего Exception, в худшем случае Throwable. Просто в яве есть выбор, использовать чекед эксепшены или нет, а гошников как обычно спросить забыли, и они анчекедом пукнуть не могут, а тех, кто пытается использовать panic для той же задачи, травят.
>>3467994 Отличный пример. А теперь давай рассмотрим его непредвзято.
Ты не рекаверишься на ошибках в методе showName, и сам говоришь что обработчик есть только в самом верху, то есть буквально описываешь non-recoverable-обработку исключений. То есть и ты и я рассматриваем non-recoverable случай.
С моей стороны - unchecked эксепшены. С твоей - пронос инфы об ошибках через дженерики. Let the battle begin.
Этот пронос тебе не дался бесплатно. Тебе пришлось: 1. Приклеить к методу метод-левел дженерик 2. Добавить throws
И то же самое тебе придется делать снова и снова для каждого метода твоего стека вызовов, то есть импакт на код довольно ощутимый. Более того, ближе к mainу у тебя начнутся скапливаться типы исключений вида UserException | ЧегоТоЕщеException - ты же не одной абстракцией ограничен в конце концов. В конце концов, ты дойдешь до обработчика исключений, который как ты сам сказал, скорее всего у тебя будет "в самом верху", и скорее всего обнаружишь что он будет построен на базе некоего типа E, который суть сумма вообще всех возможных типов исключений твоей программы.
А теперь скажи - чем такой эксепшен E и его обработка "в самом верху" будет принципиально отличаться от обработки какого нибудь Throwable или RuntimeException?
Ничем не будет отличаться. В обоих случаях тебе придется деконструировать этот тип на конкретные исключения и чето по этому поводу предпринимать. Только в твоем случае ты обрастешь вышеописанным бойлерплейтом. А в моем - нет. Причем этот бойлерплейт тебе мало что дает по факту. Нахрена он тебе?
То есть, unchecked эксепшены - считай уже инструмент, который по функционалу идентичен твоей задумке, но избавляет тебя от бойлерплейта.
>>3467983 Это была не первая попытка попасть в ФААНГ, но первая удачная. Я в этот момент уже был в Германии и у меня было 3 интервью в ФААНГ с разницей в неделю. Цукербук я провалил, Амазон и Гугл затащил. Вначале получил оффер из Амазон, а рекрутер из Гугл сказал, что вроде всё ОК но надо немного подождать. Я написал ему, что у меня оффер от Амазон который я должен принять до конца недели. В общем он подорвался и организовал мне оффер, который я принял. Но из-за спешки не было этапа знакомства с командой и я только в первый день узнал, что теперь я пишу на Го и вообще о чем проект. И насчет года я ошибся, не 23 а 22, до всех сокращений.
>>3467977 >Например в Го нет конструкторов, поэтому говей это - объявить публичный интерфейс, приватную структуру которая этот интерфейс реализует и метод New() который будет правильно инициализировать эту структуру. И конечно не забыть ебанину: >var _ MyInterface = (*myStruct)(nil) Ну это логично, ведь там же нет объектов, зачем там конструкторы?
>>3468001 Конграц, анон. Дальняя сестра из юкрайн, в году этак 17-18 (до всех событий), успешно с первой попытки прошла к цукербуку и до сих пор живет где-то в la. Уже дом там купила. А я тогда даже думать не мог о проге.
>>3467999 Гоферы смешали recoverable и nonrecoverable кейсы полд одну гребенку и сидят в отрицалове, принципиально за деревьями лес отказываясь видеть.
Гоферы, можно сказать - лакмус современной эпохи проебанных полимеров. Дальше будет только идиократия, нейрошиза и смерть. Столько бабла вьебать на то, чтобы найти миллион друзей трем своим долбоебам, решившим целенаправленно попроходить через 5 стадий принятия, и пособирать своими лбами грабли, разминированные дедами за последние 20 лет...
А ведь эти деньги могли бы пойти, ну не знаю - на то чтоб рак вылечить, миссию на марс пораньше запустить, или хотя бы инструментарий запилить нормальный для какой нибудь уже существующей экосистемы...
>>3468000 >будет принципиально отличаться Предполагается будет отличаться тем, что множество исключений, которые дошли до верха, действительно могут возникнуть. А вот если поставить RuntimeException, то далеко не все его наследники могут возникнуть. Принципиальная разница, для меня например в том, что я по сигнатуре могу понять какие коды ошибок могут возникнуть в конкретном контроллере, не бегая по всем всем веткам кодовой базы.. >Этот пронос тебе не дался бесплатно С т.з. перфоманса полностью бесплатно. А бойлерплейт бывает разный, например этот ты не можешь не написать, иначе CE. В отличии от err!=nill, который ты можешь вполне забыть, а компилятор ниче не скажет. Такой бойлерплейт мало чем отличается Either так-то.
Самая главная проблема скорее то, что throws T может быть только наследником Throwable, что пиздец какое ограничение. В том же Either Left-ом может быть любой тип. Из-за этого, в частности, сложно что-то придумать, когда например хочешь повесить несколько исключений, но не включать для этого весь UserException. Т.е. как бы сделать тайп сумму и именно её запихнуть, а не Throwable.
>>3468008 Да, но инициализация структуры значениями по умолчанию нужна. Например если у тебя в структуре есть мапа, то нужно её инициализировать, иначе будет паника при попытке записи. В джяве ты объявляешь конструктор и всё, в го factory method к вопросу о фабриках.
>>3468004 >Сколько лет опыта, какие офферы в Амазоне и Гугле? 15 на тот момент. Не такие жырные как в рассказах про долину есть не ФААНГи которые платят больше, правда акции у них пожиже в плане роста. Можешь глянуть levels.fyi там актуальные цифры.
>>3468009 >успешно с первой попытки прошла к цукербуку Я технические всегда хорошо проходил кроме первого NALSD, а вот софт скилы заваливал. Но я толком к софтскилам и не готовился.
Сижу на скучном легаси проекте, с одноклеточными тасками и вот эта вот дискуссия про эксепшены и дженерики, была полезнее чем года работы. Спасибо. мими джун
>>3468015 >И что конкретно я теряю? >протягивать в сигнатуре информацию об потенциальных ошибках Информацию, что еще? Вот нужна ли она тебе, это конечно другой вопрос..
Чтобы не писать бойлерплейт связанный с типами, надо всего лишь сделать type inference более продвинутый. Когда-нибудь жаба станет как на пике, я верю в скуфца.
>>3468027 >Вот нужна ли она тебе, это конечно другой вопрос..
Это действительно вопрос.
И вот на практике, когда дело касается non-recoverable-кейсов, когда обработчик таких ситуаций действительно - один и находится на самом верху, и когда сама цель обработки таких ситуаций не предполагает восстановления контроля - так ли уж важно какой эксепшен тебе туда пришел?
Обычно это нихрена не важно. В большинстве случаев ты просто логгируешь его факт прихода, стектрейс и шатдаунишь приложение (если оно standalone) либо дропаешь транзакцию и завершаешь обработку запроса (если оно - сервер). В редких случаях от типа эксепшена у тебя зависят вещи типа HTTP-статусов или заголовков - в таких случаях достаточно просто смаппить отдельно взятые типы.
>>3468000 Ты просто не шаришь, додь. Сейчас бы в 2к25 кидать эксепшены, лол. Это сайд-эффект, если что. Удачи написать крупную систему без чистых функций. Тебе выше все правильно сказали - твои методы должны использовать монаду either
>>3468170 В голос с тебя, недоумок. Удачи писать FP код на исключениях в твоей помойной жабе, гандон. Как же радостно на душе, что вас, дегенератов, выбрасывают на мороз и ваш говнокод заменяют на Go. Скуфидоны сраные, хртьфу
>>3468186 Ну вообще говоря нет. Паттерн матчинг в жабе, например, гарантирует exhaustive. Ты это никак не выразишь доступными тебе языковыми конструкциями. >>3468178 Их вообще говоря многовата стало, а когда-то я был один, эх..
>>3468190 >Ну вообще говоря нет. Паттерн матчинг в жабе, например, гарантирует exhaustive. Ты это никак не выразишь доступными тебе языковыми конструкциями. Проверяй в рантайме
>>3468095 Более того проект монолитный, без кубера и докера и связан с обслуживанием аналитиков, которые на spark гоняют etl потоки на биг дате. По началу было интересно поработать с колоночными базами данных в которых лежит по милиардам строк. Но чет быстро стало скучно. Ищу другой проект, но рынок пока вялый.
>>3468289 >this is a small proposal to try start (re-start) discussions Ну ща, пару годиков подискутируют, по губам поводят и хуй забьют.
Да и где конкретно тут отмена стирания типов, они просто добавят дополнительные параметры к вызвовам методов, чет типа этого https://www.baeldung.com/kotlin/reified-functions А вот проблему с brdge методами они похоже решать не собираются. Непанятна какую конкретно задачу можно решить с этим, которая невозможно решить сейчас...
>>3468419 Нет плох пул задач и то, что все аналитической и разрабы как подмастерья для аналитиков, которые выкатываю тз на отъебись с кучей ошибок, а ты потом бегаешь и спрашиваешь - а как, а че, плак плак. Сейчас занимаюсь правкой 200 sql скриптов olap, каждый из них огромный скрипт с юнионами сам по себе. пукан горит пиздец, мне их скинули и сказали, что потестили. А там - колонка хуй_соси амбивалентна при каждом запуске или cannot resolve column. Кароч я программированием не занимался уже месяца два, хотя работаю каждый день.
>>3468431 Что конкретно требуется? Стирание типов никогда не декларировалось, что оно хоть куда-то денется. А вот то, что ты сможешь пихать примитивы в женерики - это да.
>>3468456 Как в веб назад попасть после этого дерьма, если в резюме описываю проект как есть, то пишут ток всякие spark разрабы и дата инженеры. Хоть питон учи и в норм дата инженирию пиздовать. Но я бы назад крудошлепить пошел бы.
>>3468456 Звали вчера на собес в сбер, на де, 250 просил за 3 года (из них на этом проекте в окло де год всего, остальное веб). Джава вместо питона, хадуп, спарк. По итогу утром пришел на работу, окунулся во все это и желание собесится в де отпало напрочь, отказался.
>>3468476 >окунулся во все это и желание собесится в де отпало напрочь Ну вот у меня с вебом так же, сколько не пытался окунуться в современную разработку через фреймворки и их паттерны, каждый раз не осиливал и бросал. А с данными сиди себе, перегоняй говно из одного пайплайна в другой, всё понятно и прозрачно (относительно). Хотя и тут можно навернуть кучу хранимых процедур друг в друге, и потом утомишься их дебажить, видел и такое...
>>3468539 Пока на проекте еще была оракл был кейс с хранимками, там что бы переписать из 1 таблицы в другую и провалидировать все поля на основе ранее загруженной мета инфы использовалась хранимка в хранимке в хранимке... которая динамический создавала sql string и делала execute этой string. Целый день потратил (> 8 часов) на поиск причины падения моих вызовов, тупо сидел, доставал кусочки процедур и запускал в idea в console. Про то что у oracle есть какой-то дебагер для этого дела я тогда не знал, а потом оракл убрали. Причина оказалась в невалидно загруженой мета инфе админами бд, 1 соеденение по первичному ключу не отрабатывало
Есть ли какие-нибудь библиотеки для работы с json'ами больших размеров? Jackson, к сожалению, не выдерживает тех нагрузок, с которыми приходится иметь дело.
Если кратко: по http приходят json'ы. И так вышло, что эти json'ы сначала записаны как строки, размеры которых буквально больше 8 МБ(там длина строк больше 2.3 миллиона символом ascii кода). Такие строки jackson жуёт очень долго(секунд 12). И при этом попутно в период жевания забирает 200±50 МБ.
>>3468552 >которая динамический создавала sql string и делала execute этой string У меня то же самое. До сих пор на том проекте так делают скорее всего...
день 2, сделал тасочку (надо было поковырять запрос чтобы добавить поле в vaadin) теперь делаю вторую тасочку, пока всё получается, мне нравится алсо, у нас нет менеджмента и прочего скрама/агила пришёл - гребёшь по тасочкам из OTOBO (ну мне лично дают тасочки полегче)
>>3468633 >студентка >ка Пошла нахуй из треда. Тут онли сосисочная вечеринка, тян не нужны. Правильно, что тебя отклонили, надеюсь никода оффер не получишь и попиздуешь в пятерочку.
>>3468640 первая работа, чё поделать ваката нет иначе пиздос >>3468635 на похуй закинул резюме в локальную компанию, о ней одногруппник сказал (у них вакансий нигде нет), взяли сразу (не собесили считай) 45к на 3 месяца, после - 70к >>3468643 моя мечта свитчнуться на го я очень люблю этот язык, но для начала годик (два?) пописять на джаве
>>3468434 >Стирание типов никогда не декларировалось, что оно хоть куда-то денется. А вот то, что ты сможешь пихать примитивы в женерики - это да. Прям на странице вальхалы написано: >Parametric JVM, preserving and optimizing generic class and method parameterizations at runtime https://openjdk.org/projects/valhalla/
Плюс достаточно очевидно, что для примитивных и велью типов информация в рантайме о типе коллекции нужна, тупо потому что она влияет на мемори лэйаут. А если она есть для этих типов, то почему бы её не добавить и для остальных?
>>3468646 >моя мечта свитчнуться на го я очень люблю этот язык, но для начала годик (два?) пописять на джаве Закономерный вопрос: а нахуя было вкатываться в джаву?
А если я возьму и свои несколько лет в галерах превращу в серьезные компании и опишу свой микросервисы как супер-пупер неебца хайлоад (3rpc) конверсия улучшится? И что потом делать если офер получу, в трудовой же ооо рога и повидло. волк просыпается во мне, друзья, не могу больше на текущем месте сидеть
Горит просто из-за того что хуй без опыта врет и устраивается на 250 с 0, а я сижу несколько лет за 185к. Имея реальный опыт и чутка приврав я же их выебу всех.
>>3468651 Это заголовок статьи на 41 страницу https://cr.openjdk.org/~jrose/values/parametric-vm.pdf я честно ебал в рот эти маняфантазии читать, который уже лет 10 реализовать не могут и все фантазируют, фантазируют и фантазируют. Прочти за меня и найди конкретную фразу, где говорится, что стирание типов уйдет, а не добавят банальную хуйню, типа refiend из котлина. Просто открою секрет, ты и сейчас можешь это все сделать и даже неявно.
>>3468601 >Если кратко: по http приходят json'ы. И так вышло, что эти json'ы сначала записаны как строки, размеры которых буквально больше 8 МБ(там длина строк больше 2.3 миллиона символом ascii кода). Такие строки jackson жуёт очень долго(секунд 12). И при этом попутно в период жевания забирает 200±50 МБ. Нихера не понятно, что там большое.
В json-е просто много разных полей, но сами значения небольшие? Тогда гугли jackson/gson steam api.
Или в json-е есть большие строковые поля? Тогда это сильно сложнее, попробуй jakarta.json, возможно он будет пободрее. Во всяком случае JAXP парсил большие поля по частям.
>>3468539 Не, я понимаю уже как устроена баг дата и что делает дата инженер (хотя я не фулл дата инженер, я иногда и пайплайны настраиваю, а иногда поддерживаю проект на java). Просто пулл задач, который решается в вебе мне кажется интереснее и разнообразнее(даже когда знаешь проект и тебя от него уже тошнит). Вообщем прогать нрfвится, а тут я как-будто и не прогаю. Настроил там, настроил здесь, поадминил, в таблицу поле добавил через миграции и все. Попробую в го ворваться наверное, а то все уже с крыши прыгнули, а я еще нет.
>>3468676 Ну т.е. тебе тоже впадлу это читать, что нейронку просишь за тебя? Пынимаю.
Я в любом случае не понимаю, в чем блятб иновация. Тебе не дают возможности делать пары методов типа: void foo(List<Integer> list){ } void foo(List<String> list){ } Не дают возможности сделать new T(). Возможность же сделать instaceof List<Integer> ничего в общем-то не стоит. Вот пример, как это решают сейчас https://github.com/mockito/mockito/blob/main/mockito-core/src/main/java/org/mockito/Mockito.java#L2047
Единственное на что я надеюсь, что эта всё это действительно заменит вообще все очень нужные методы из пакета java.util.function (пик2). Но чет пишут, что весь этот празник жизни то ли ограничивается для коллекций > minimal changes of the JVM spec enabling java.util collections то ли, если параметров типов только одын, а вот Pair<A, B> это уже простите сложна.
>>3468708 Не думаю, что наврал. Но даже если он не наврал, в тиме был волк который пол года лутал зп около 200 и ничего не делал. Прошел испыталку из-за медленных процесоов, спалили очееень поздно и уволили с 3мя окладами. С опытом пойдет на другую работу и там продержится дольше.
>>3468720 Компании повалиднее поставить. Условно сейчас через галеру на Втб, а написать Втб. Мое резюме просто в околонулевой конверсии, а текущий проект очень душит. Ну и зарабатываю ниже рынка, а галера есс-но не хочет платить больше.
0) ООП хорош в книгах для описания котов и животных, но буксует в реальном мире, процедурный подход оказался удобнее, поэтому: 1) В dto не должно быть логики 2) Наследование - плохо. Максимум 1 уровень 3) методы в виде чистых функции - хорошо. Легко тестировать, легко применять, не имеют сайд-эффектов 4) Сайд-эффекты - плохо 5) Логика - в Service или Utils 6) метод очень желательно в высоту не более 1 экрана (90 строк) и не более 7 параметров 7) Максимум 3 уровня вложенности в условиях 8) Если код повторяется 2 раза - вынеси в функцию 9) высокая связанность хуже дублирования 9) Не применять теги ломбока: Data - опасно из-за equals и toString и вложенных объектов 10) методы называть глаголами, "что делает", переменные существительными или прилагательными
hibernate - по опыту от него больше проблем, чем пользы. Экономия на времени разработки съедается на попытках тюнить его и разбираться с тормозами и что он делает. Также требует написания Entity, а entity требуют написания мапперов. Возможно хибернейт имеет смысл в проектах где много сущностей, много действий, но мало нагрузки. У нас ситуация наоборот, мало сущностей и много нагрузки. Так что лучше использовать sql запросы и всю мощь постгреса.
Если делать юнит-тесты с моканием всего вокруг, это получается не очень эффективно: тест знает реализацию, при изменении реализации тест ломается, усложняется и удорожается рефакторинг, затрачивается время на поддержку этого. Поэтому
Юнит-тестами тестируем чистые функции. Тестируем внешние интерфейсы, контракт, с помощью интеграционных тестов с поднятием бд, кафки, и т.д. в контейнерах. Чем больше слоев затрагивает тест - тем лучше. Желательно при этом не знать про как оно реализовано. Обращение к внешним нашим сервисам мокаем
>>3468776 >>3468775 Это все хорошо, но за более чем 10 лет гребли, придя на проект я видел одну и ту же картину - техлида нет, тимлид транслирует свою шизофреническую позицию из "чистой архитектуры", которую он понял как Контроллер - СервисИмпл - Рипазитари. Вся бизнес логика складируется в километровых классах-сервисах. Сами сервисы зависят от других сервисов и т.д. Все юнит-тесты на моках. Интеграционных тестов нет, либо написан откровенный понос, который запускается за день перед релизом поздно ночью, чтобы в пятницу утром обнаружить, что у тебя половина приложения не работает. Добавляем сюда отсутствие документации, описание архитектуры и получаем типичный проект на джаве.
>>3468801 И что тебя не устраивает? Это классика, проверенная временем. Гораздо хуже, когда долбоебы впердоливают шину событий, в сишарпе это просто эпидемия какая-то. В итоге хуй вообще поймешь, как это говно работает. Единственная проблема - это отсутствие интеграционных тестов, но их должен писать отдельный чел в команде. Кабан жлобится выделить бюджет на такого хакера пентестера, а разрабы традиционно кладут хуй на тесты.
>>3468715 >Не думаю В этом и проблема. Ты не думаешь, а он просто взял и напиздел. Или "тактически умолчал", что 250 - это с премиями, которые могут и не выплатить. Таких пиздунов уже сотни было, если не тысячи.
На всех собесах на которых был за весну предлагали офис и меньше денег, чем я сейчас лутаю (мидл+ 310к). Видимо до осени а может и до конца жизни можно стопнуть собесы
>>3468914 >яндекс секция алгосов должна была быть, но я пока стопнул, потому что зассал. Hr написала, что в течении полу года могу ей написать и пройти. А первую секцию прошел.
>>3468919 Ну и? Хуле ты ноешь то тогда? Проходи алгосы и лутай свои 500к и не выебывайся, дай номальным ребятам 200-300 лутать и в хуй не дуть. Я вот тоже записался на яндекс, но чисто по приколу, даже не надеюсь, что пройду первую секцию
>>3468931 / Вы — backend-разработчик в интернет-магазине «Рога и Копыта». Дела идут в гору и магазин решил повысить лояльность покупателей, предоставляя им персональные скидки. К вам обратился product owner с задачей создать простую систему лояльности, которая предоставляет процентную скидку на корзину. Размер скидки зависит от покупателя. Аналитики уже определили, какие скидки должны быть предоставлены покупателям.
## Определения
Корзина - список покупок покупателя.
Покупка: - id товара - цена - итоговая стоимость c учетом скидки
Скидка. Для покупателя может быть задан % скидки (целое число).
## Задача Написать часть новой системы лояльности, которая: - на вход получает id покупателя и корзину - вычисляет и применяет скидки - возвращает корзину, в которой учтены скидки. Скидка учитывается в стоимости покупки
Вот это со свездочной и нужно было просто рассказать как бы сделал
/ Настройки скидок лежат во внешнем сервисе (БД, HTTP и т.д.).
Доступ к сервису асинхронный.
Нужно: - разработать асинхронный интерфейс сервиса, хранящего настройки - использовать его при расчёте скидок - адаптировать тесты и написать новые, если необходимо */
>>3468775 >> 0) ООП хорош в книгах для описания котов и животных, но буксует в реальном мире, процедурный подход оказался удобнее, поэтому:
Вот именно для описания котов ООП крайне плох, он вообще плох для попыток описания реального мира. Но ООП распиздат для описания работы программ. По этом когда автор начинает описывать в книге собачек, птичек через ОПП - можно смело закрывать книгу, потому что автор скорее всего долбоеб которые не шарит.
Пиши все на интерфейсах и не пиши лишний код. И будет все заебись.
Чтобы не писать лишний код, включи например cod-coverage, который спросит за каждый if. И ты будешь думать, а реально ли мне нужно пердолиться вот с этим кодом который я написал или все таки я хуйню написал и теперь еще на нее выдумывать тест кейсы.
>>3468801 >> Контроллер - Сервис- Рипазитари. Придумай лучше. Ах блять команды же, CQRS. Охуеть праздник во все поля (нет)
>> бизнес логика складируется в километровых классах-сервисах. так если она такая ебнутая, куда ты ее положишь?
>>Сами сервисы зависят от других сервисов это хуево если монолит, но могут быть причины и скорее всего это разовые акции, к примеру у тебя сервис который делает распределенную транзакцию, между сервисами которые лежат в на отдельном хосте в другом приложении в другой БД, у тебя даже блять репозитория к этим таблицам не будет. Как ты собираешься сделать "по красоте"?
>> тесты не писать тесты стрелять себе в ногу
Как видим за 30 лет в джаве есть дохуя полезных тулов и выработано много подходов, но многие почему то хотят выебнуться знаниями и сделать по своему (как сами поняли, они то умнее не то что эти старперы бородатые)
>>3468908 Джава теперь видимо самый парашный стек на руси. Везде гибрид офис. Игнор от чсв хрюшек и кучи откликов даже на сеньку. Вилки зп не выросли. Допросы о прошлой работе чуть ли не с полиграфом в попытке уличить в волчизме.
>>3468943 Час на задачу, я не думал, а начал спрашивать и писать. Много тупил из-за страха и спрашивал то, что есть в тз, честно думал не пройду, повезло. Я вообще на лайвкодинге начинаю тупить.
>>3468953 А да про это-то забыл, все собесы большую часть времени чувствовал себя преступником, которого допрашивают. С вопросов резких на половине интервью - а как в idea отформатировать код (cnrl+alt+l) направленые выявить волка, ахуел вообще.
>>3469009 Поэтому нужно отменить техсобесы и лайвкодинг и брать на работу только за выслугу лет. Проверяя по электронной трудовой с госуслуг например. Это же очевидная база. В других профессиях это давно работает. Но только блять в айти придумали тупо экзамены, вы ебанутые, не? Представляете врача, которому предлагают полайвоперировать пациента и потом решают взять ли его?
>>3469013 Ну только за выслугу лет тоже сомнительно, коллега с 1 из работ 6 лет сидит на одном месте, жена - пм этого же проекта, работает 3 дня в неделю. Знаний глубоких нет, но так сильно врос в систему, что его не уволить. Или какой-нибудь стулопросиживатель в сбере, там неделями можно только т3 уточнять. Знаю разраба, который так 3 года просидел, по скилам - джун.
>>3469013 Да чет эти холопы айтишные охуели. Вернуть очные собеседования! Нет прописки московской так не работай в московской компании! Нет вышки айтишной? Нахуй! Нет сертификактов нашего мудрого ведомства минцифры? Нахуй! Не служил в айти роте? Нахуй!
>>3468775 В общем-то всё правильно, только писать без сайдэффектов - это то же самое что писать чисто на ООП или чисто процедурно. В реальных кейсах обычно местами удобно сделать процедурно, местами удобнее через ООП, поэтому ООП языки мучаются со всякими компаньонами объектами, а а процедурные - со всякими функциями-членами с ресиверами и т.п. Методы не могут быть в виде чистых функций, хотябы потому что методы зависят от инстанса объекта, к которому они принадлежат.
>>3469009 Челики пишущие в прод так-то тоже в рот ебали все ваши алгосы. Ты как думаешь что будет если ты начнёшь для прода пузырьковую сортировку сам писать?
>>3469032 Считаю что знать алгосы надо, понимать какие у них О надо. Писать реализации нет, решать задачи с помощью них нет. На самом деле я бы в собесе добавлял больше железа, понимания булевой логики, почему булева и прочие основы. Почему меня спрашивают про аннотации, которые через год станут депрекейтед я хз
>>3469032 Гоферы велосипедисты это понятно, но даже они пользуют либы везде где могут. HTTP сервера те же они же сами не пишут.
>>3469033 Ну так объекты не просто так появились, иногда просто удобно связывать данные с логикой. О чистых функциях удобно рассуждать теоретически, но не всегда удобно применять. То есть по сути как только ты что-то логаешь внутри фнукции она перестаёт быть чистой, но ведь это бредятина отказываться от логирования.
>>3469032 >А вообще они же все чаще на собесах стали появлятся, алгосы эти, и не только у Яндекса и прочей биг кек параши. Так это понятно, но вне сосбесов абсолютно все в рот их ебали
>>3469043 >иногда просто удобно связывать данные с логикой. это порочная практика. Данные отдельно, логика отдельно. Иначе появляются сайд эффекты, глобальные стейты, зависимость логики от стейтов незнамо где
>>3469038 >На самом деле я бы в собесе добавлял больше железа, понимания булевой логики, почему булева и прочие основы. Почему меня спрашивают про аннотации, которые через год станут депрекейтед я хз Зачем? Ну вот человек заучил как железо работает, булева логика там, прочие основы. А потом идёт и ебенит всё на микросервисах и похуй что сетевое взаимодействие списывает на 0 все плюсы знания железа и вообще чего-либо. Современное учение апостолов конференций говорит что нужно делать микросервисы - значит будут микросервисы, иммутабельность, 10к потоков в параллель. Как это с этим перформанс проседает на несколько десятилетий назад? Умные люди так пишут, а вы вкатуны не понимаете ничего. Так что изучать при этом что-то про процессорную архитектуру просто смех блять.
>>3469063 скажем так. Это применимо, если внутренние объекты вообще никак не светятся наружу. В хэшмапе мне не интересно как она устроена, и мне не нужен её внутренний массив. Но отсортировать массив лучше SortUtils.sort(array) чем array.sort()
>>3469068 >Это применимо, если внутренние объекты вообще никак не светятся наружу. Ну да, это основы ООП так-то, еще со СмолТока. Объекты обмениваются сообщениями и чисто в теории вообще не открывают свой стейт наружу. В реале этого очень сложно достичь.
>>3468940 >Придумай лучше. >так если она такая ебнутая, куда ты ее положишь? Она не ебанутая. Просто джаваприматы привыкли все сгружать в один класс, а потом удивляются, что у них хрупкие "тесты" на моках, т.к. сервис зависит от других сервисов и лезет в базюльку или кэфку
>не писать тесты стрелять себе в ногу Соглы, но в твоей "классической архитектуре" невозможно написать норм тесты без обмазывания моками
>Как видим за 30 лет в джаве По факту мы видим, что джавадебилов начали целыми отделами на мороз выгонять, т.к. кабана заебало, что гнойное скуфье полгода хубирнейт со спрингом настраивает, а затем следующие полгода нюлы в проде дебажит
>>3469060 >Зачем? Я не понимаю такой постановки вопроса. У любого нормального разраба само по себе со временем работы появится желание в этом хотя бы чуть-чуть разобраться.
>>3469082 >Я не понимаю такой постановки вопроса. У любого нормального разраба само по себе со временем работы появится желание в этом хотя бы чуть-чуть разобраться. ну нет конечно, иначе бы это не требовали на собесах, это бы все и так знали, так же как никто не спрашивает как объявить переменную это больше натягивание совы на глобус, очень хочется чтобы все разрабы в мире были супер-мотивированными, поэтому будем утверждать будто так и есть
>>3469038 >понимания булевой логики А давайте въебеним понимание системы типов, теорию категорий? "У любого нормального разраба само по себе со временем работы появится желание в этом хотя бы чуть-чуть разобраться." Как тебе вариант?
>>3469093 Бля вот теория категорий это пиздец, когда в скале копался смотрел лекции какого-то зарубежного дяди и на 3ей уже нихуя не понимал. Функторы блять ебучие. Но хочется еще раз вникнуть. Алсо, сижу в скала чате, там челы математически подкованы больше (я вообще ебучий самоучка) и ахуеваю с их переписок.
>>3469102 >там челы математически подкованы больше Меня вообще бесят математики. В инстутите бесили, в программирование блять лезут. Математики же реально шизы, не те кто, понимает как квадратное уравнение решить, а те кто начинают все к математике сводить, теоремы, методы всё. Они шизы, это долказано, у нас даже на каведре математики шиз учился, а потом преподавал. А Перельман?
Большая проблема в этом все, не сама матеша, а вот натягивание совы на глобус, когда это все в пограмирование перетекает и просто все нахуй запутано становится. Вроде вот тут неплохо про это натягивание написано https://habr.com/ru/articles/133277/ >>3469109 Математики шизы няшки, ты просто с ними не общался. Меня правда такой один бросил почти год назад, грустно до сих пор..
>>3469121 https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_&ab_channel=BartoszMilewski Я вот его смотерел, там даже на первый 10 вроде русские сабы есть. >дохуя определений в этом то и проблема, после работы смотрел лекции, читая гугол + chatgpt, а на некст день уже половины определений не помнил. Как-будто закрепления не хватает какого-то. Потом дропнул. Мнйби вернусь, для общей эрудиции так сказать раньше запал был учить и разбираться, но чет я приуныл последнее время, ничего не делаю почти
>>3469131 Можно попробовать как в вузеке конспектировать. Типа емкая выжимка лекции со своим имхо чиста для себя. Разница между этим и гопотой, что это сделано тобой, ценность не столько в информации, сколько в структуризации, как следствии лучшем запоминании лично для тебя. >но чет я приуныл последнее время мяу.. Думал к психиатру сходить, но чет ссу, что это загубит дальнейшую карьеру навсегда, да и нейролептики с антидепрессантами я пить не хочу, овощность - это мехно.
>>3469136 В сосничестве, когда хотел откосить от армии и было плевать на все, сходил к доктору в гос пнд, наплел про суицид, он наверно рофлянул, припугнул дневным стационаром и отпустил. Хз как сказалось на карьере, но в одну госуху я не прошел сб, может быть из-за чего-то другого, так как я из не очень благополучной семьби и мейби что-то на родственниках есть. Сам хочу к частному терпевту, уже даже средства позволяют, но руки не доходят За совет с конспектом спасибо
>>3469078 >> По факту мы видим, что джавадебилов начали целыми отделами на мороз выгонять
Ну как сказать. С одной стороны я вижу нытье про 700к вакансий специалистов от МинЭк и сертификаты от хх на госуслугах.
С другой вот это все.
Возникает закономерный вопрос, сколько пиздежа в эти новостях, потому что к примеру может быть так, что целые отделы мигрируют в реогинальные офисы на ту же зп с опцией ИТ еботеки, а подаваться это может быть, как "вот смотрите массовые увольнения, людей же уволили"! К тому же бюджеты режут, при этом какой-то охуевший менеджеришка или СТО, ради премии вполне мог и предложить заменить программистов на ИИ. Потом помашет рукой, а контора наебавшись с этим новомодным ИИ, пойдет пылесосить рынок.
Подумай над тем где будет больше вакух в перспективе, что есть AxiomJDK росийский, импортозамещенный, ФСТЭКовый с кучей легаси-проектов и без привязки к платформе, а вот российская МОНО сосет болт, по популярности. При этом соотношение на хх 2 -1 в пользу ржавы.
>>3469020 Не постиронично подписался бы под каждым словом. Человек в айти должен быть надежным и лоялньым государству. А то понабирали нитакусь соевых во всякие яндексы, а потом в 2022 когда родина сказала надо, эти пидорасы дали по тапкам и ещё пытались компании развалить, которые их кормили. >>3469019 А это уже проблема не разраба, если компанию всё устраивает, значит не ебёт. Пусть тогда по компаниям рейтят, мол сидел в сбере, да знаем мы таких, иди на джуна. И тогда быстро всякие сберы включат погонщиков и будут следить за своим авторитетом. Я просто не понимаю, чем айти отличается от остальных профессий сейчас, уже давно нет того вайба, что туда идут только яйцеголовые. Яйцеголовые пусть идут в архитекторы, но должен быть стабильный рабочий прогер, который не должен знать алогсов и прочего подкапотного говна.
>>3469164 Нет, такие штуки не отсекают даже просто рандомов, которые заучили фразы которые просто надо сказать чтобы тебя признали знающим. Уж тем более волков с чатгпт. Волки - это как раз квинтэссенция этого идиотизма, когда нужно сказать правильные фразы чтобы пройти интервью, а не иметь реальные знания.
>>3469060 >Современное учение апостолов конференций говорит что нужно делать микросервисы - значит будут микросервисы, иммутабельность, 10к потоков в параллель. Как это с этим перформанс проседает на несколько десятилетий назад? Умные люди так пишут, а вы вкатуны не понимаете ничего.
Не преувеличивай.
У, как ты выразился, апостолов конференций на этих самых конференциях дано полтора часа таймслота на доклад и вопросы к нему. Че ты хочешь от них за такое время? Да им архипохуй на тебя и твои загоны. Они так и пишут в дисклеймерах к своим виршам - "За что купили - за то и продаем. Мы лично ни за что ответственности не несем. Хотите гарантий - наймите нас специалиста в штат"
Их задача - дать тебе пищу для размышлений (ну или накормить хайпованным говном - тут уж как повезет). Переварить пищу - уже твое дело. Никто за тобой бегать не будет.
день 3: встречали когда нибудь тернарный оператор в строке sql запроса? а я это писать завтра буду начинаю понимать количество абстракций, пока не понимаю науя столько
>>3468001 >да вы всё пиздите всегда ныли что сложно вкатиться Вот вам живой пример. Какой-то двачедолбоёб вообще без релевантного опыта въехал в фаанг.
>>3469279 Так спрашивать не заученные, а какие-то конкретные примеры на понимание, как это с языком и жвм делают. Проблема в том, что собеседующие сами могут не понимать ответа на такие вопросы, потому что их самих никто не спрашивал такое.
>>3469418 >Они так и пишут в дисклеймерах к своим виршам - "За что купили - за то и продаем. Мы лично ни за что ответственности не несем. Хотите гарантий - наймите нас специалиста в штат" Конечно же нет, чел ты никогда на конференциях не был? Литерали никогда такого нет. Там всегда байтовые заголовки, типа "Почему вы все еще используете монолиты?" или "Как мы переписали весь проект с монолита на микросервисы" или "Чам важна иммутабельность?". Пища для размышлений очень плохо заходит аудитории.
>>3469418 >У, как ты выразился, апостолов конференций на этих самых конференциях дано полтора часа таймслота на доклад и вопросы к нему. Че ты хочешь от них за такое время? Да им архипохуй на тебя и твои загоны. Под апостолами я имел в виду тех, кто бездумно транслируют всё что скажут на конференции в реальность. Буквально люди отказываются думать - так на конференции сказали - значит нужно делать так.
>>3469969 >>3469964 >Буквально люди отказываются думать >Пища для размышлений очень плохо заходит аудитории.
Увы. Интернетик и доступность информации не сделал обезьянку смышленее. А с нейронками нам всем в этом плане еще предстоит познать новое дно.
>>3469971 Все так. Буквально Шипилева вспоминал когда писал об этом. Леха кстати в этом плане - сознательный, и не инфоцыганин - цену своим словам оценивает адекватно. Может я реально преувеличил, ровняя под него всю конференц-тусовку.
>>3468691 >Ну т.е. тебе тоже впадлу это читать, что нейронку просишь за тебя? Ну так читалка у меня личная, а нейронка казёная.
>Возможность же сделать instaceof List<Integer> ничего в общем-то не стоит. Вот пример, как это решают сейчас В любом случае, ты можешь в коллекцию напихать любой фигни вернее можнона писать коллекцию так чтобы нельзя было, но по каким-то соображениям так больше не делают. А вот в массив - нет. И поэтому любой массив ссылочного типа приводим, к Object[], а у коллекций ебатня с вайлкардами.
>>3470155 >ты можешь в коллекцию напихать любой фигни С приходом вальхаллы не думаю, что это изменится. Это же не баг, а фича в общем-то. Что ты можешь в любой момент сказать, я пограмист, знаю лучше и поэтому вот explicit каст или приведение к сырому типу. >а у коллекций ебатня с вайлкардами Вайлкарды отдельная сущность, можно сказать, есть параметры типов, которые указывается в сигнатурах, есть аргументы типов - это как раз List<Integer> и именно их вероятно овеществят, передавая как скрытый аргумент. Но вайлкарды - это группа допустимых аргументов, что-то между параметром и аргументом. Они только в компайл тайме и дальше будут существовать.
Возмооожно, можно будет делать привидения из вайлкардов, к аргументам checked кастом, а не просто траст ми бро. Но энивей как-то погружаться в фантазии оракла себе дороже, чего стоит string template и то где он сейчас...
>>3470378 >С приходом вальхаллы не думаю, что это изменится. Это же не баг, а фича в общем-то. Что ты можешь в любой момент сказать, я пограмист, знаю лучше и поэтому вот explicit каст или приведение к сырому типу. Как по мне это фиговая фича. Хочешь пихать что угодно - объявляй List<Object> и всё. Я не могу себе представить ни одной ситуации, когда надо объявить List<String> и пихать туда Integer.
>>3470378 >Вайлкарды отдельная сущность, можно сказать, есть параметры типов, которые указывается в сигнатурах, есть аргументы типов - это как раз List<Integer> и именно их вероятно овеществят, передавая как скрытый аргумент. Но вайлкарды - это группа допустимых аргументов, что-то между параметром и аргументом. Они только в компайл тайме и дальше будут существовать. Вайлкарды это костыль. В C# спокойно обходятся без тьюринг полных вайлдкардов. Потому что там информация о типе сохраняется в рантайме.