Предыдущий: >>3247368 (OP)
Все шизы в сборе, урааа
Да дохуя похожих пограм по идее, просто нахуй оно для жабы надо? Прописал помник в мавене и не ебешь мозги.
Эта хурма еще умеет с помощью direnv выгружать всякое разное. Я gtk и lsp с её помощью прокидывал компилятору и идешке.
1080x1080, 0:28
Сап
Вкатывался в джаву год, потом сделал перерыв на 3 месяца ибо тупо выгорел, сейчас у меня тряска ибо я за год не чувстувую уверенность и не пробую откликаться из-за этого.
У меня лютая тряска, мне страшно, у меня даже мысли быстро начать вкатываться в питон ибо дажва это сложно и там банки и в банках все серьезно и там 30+ геодезист нахуй не нужон, а в питоне может быть нужон ибо конторы там попроще.
Анон, молю, помоги унять тряску годным советом и подскажи как мне действовать.
Сложность в том что у меня нет абсолютно никаких знакомых кто хоть каким-то боком причастен к айти, тупо не с кем посоветоваться.
в питон точно не стоит лезть. Там вакансий абсолютно нихуя, а кандидатов миллионы. Тупо конкуренции не вывезешь.
Ну я тоже вкатун, могу ошибаться..
>>67944
про помник подробнее пожалуйста.
Задача:
1. Копировать заготовленную папку с статическими ресурсами
2. Выполнить две баш команды
Второй пункт думаю легко сделать, но мне куда-то нужно деть папку со статикой. Самый простой вариант - упаковать её куда-то и пригонять по команде.
В питоне есть pipx, в NodeJS - npx -- эта херь устанавливает пакет и выполняет команду из него. Для Java не понял как такое провернуть
>30+
>Вкатывался
Бля, дед, забей уже, ты проебал. В 30 лет люди лидами и руклями отделов работают, а не вкатываются
Сравнительно как раз в джаве, судя по всему, не так. Но по сути ты никуда не вкатишься, ни в джаву, ни в питухон одновременно. 0% шанса вката = 0% шанса вката.
В java самое большое число откликов на вакансии среди других стеков.
Да забей ты хуй на мнение жаванов. Они вкатились сто тысяч лет назад и нихуя не знают как там сейчас. Просто боятся, что их места пригретые заберут.
Просто ебашь не обращая внимание, и все.
> И куда тогда вкатываться?
В продолжение сидения на шее мамки, лол. В 2024 ушёл последний вагон уже не просто на работу в айти, а на работу в принципе. Работы нет нигде. Разве что донный пиздец типо курьерства.
У тебя определенно есть скрытый талант к юмору, скрывай его и дальше.
>>68049
Ну вот и нахуя просто сидеть на шее, если в этом время можно штудировать какие-нибудь задачки с литкода, потом контест яндекса/тинька решить и стать стажером. Но нет, у жаванов работы нет, тлен безнадега. Специально людей дурят.
> У тебя определенно есть скрытый талант к юмору, скрывай его и дальше.
На вопрос не ответил, школьник.
> Ну вот и нахуя просто сидеть на шее, если в этом время можно штудировать какие-нибудь задачки с литкода, потом контест яндекса/тинька решить и стать стажером. Но нет, у жаванов работы нет, тлен безнадега. Специально людей дурят.
Дооо, дооо, тебя обязательно возьмут стажёром за 30к если ты несколько лет будешь дрочить литкод, стоит только верить!
Типичный жаван, пиздит о том, чем даже не знает.
https://yandex.ru/yaintern/backend
https://education.tbank.ru/start/
Невозможно быть таким тупым. Ты определенно бот или нейронка. Жаль тебя как в по нельзя по id скрыть.
>>68059
Мимо жаван, я ненавижу шарп, го, петухон и все остальное, что ты собираешься приплести.
И по факту вы не ответили. Просто говорите челику смирится и нихуя не делать. Это контрпродуктивно и не имеет смысла. Я же предлагаю просто делать не обращая внимания на такую гниль как вы, которые всегда будут против чужих начинаний. И даже конкретный путь предложил.
> Невозможно быть таким тупым. Ты определенно бот или нейронка. Жаль тебя как в по нельзя по id скрыть.
Очень аргументированно. +15
> Это контрпродуктивно и не имеет смысла.
Контрпродуктивно годами долбиться в стену веря в силу срынка и мрия о 300к/наносек когда-нибудь, лахтопетушок.
> Я же предлагаю просто делать не обращая внимания на такую гниль как вы, которые всегда будут против чужих начинаний.
Каждый божий день удивляюсь от того насколько мерзким может быть человек. Просто блядь пиздец. Этот хуесос блядь предлагает потратить годы жизни НА ПОПЫТКУ блядь получить СТАЖИРОВКУ блядь чтобы после стажировки ЕЩЁ РАЗ ПОПЫТАТЬСЯ блядь вкатиться. Пиздец. и смеет кого-то блядь называть гнилью. Сука, харкнул в ебало мрази.
Да, а другой человек предлагает эти годы потратить на... Сидение на шее? Вы бы блять для начала что-то адекватнее предложили.
Лучше годы тратить на такое, чем просто замыкаться в себе или ебашить всю жизнь на дноработках.
>>68064
Если это в конечном итоге принесет результат, я предпочту долбится в стену.
И да, я вообще не ебу причем тут лахта, у нее риторика как раз обратная, ровно как у вас. Стоит смирится, не стоит качать лодку, сверху все решили и тд.
Как хочешь.
> Да, а другой человек предлагает эти годы потратить на... Сидение на шее? Вы бы блять для начала что-то адекватнее предложили.
> Лучше годы тратить на такое, чем просто замыкаться в себе или ебашить всю жизнь на дноработках.
Ты в любом случае будешь сидеть на шее, маня достигаторская. Только свои лучшие годы просрёшь на попытки ухватить журавля из неба вместо того, чтобы чиллить.
> Если это в конечном итоге принесет результат, я предпочту долбится в стену.
Долбиться в стену и результат это противоположные понятия, олигофрен.
> И да, я вообще не ебу причем тут лахта, у нее риторика как раз обратная, ровно как у вас. Стоит смирится, не стоит качать лодку, сверху все решили и тд.
Ну да, власти ведь совершенно не выгодно чтобы ты забесплатно батрачил и верил в светлую жизнь завтра, лахтогной.
Если ты в джаве за деньгами то иди нахуй. Если за навыками в принципе — учись.
>Ты в любом случае будешь сидеть на шее, маня достигаторская.
>забесплатно батрачил
Ты там определись.
>вместо того, чтобы чиллить.
Нахуя их тратить на чилл? Можешь даже не отвечать, я не пойму в любом случае.
>Долбиться в стену и результат это противоположные понятия
Я по своему опыту решения разных олимпиадок говорю. Сложно предеать, но.. Да и не надо.
В общем, картина пациентов понятна. На етом все. Я устал
> Ты там определись.
И где ты противоречие увидел?
> Нахуя их тратить на чилл? Можешь даже не отвечать, я не пойму в любом случае.
Ну да, бесплатная шлюха не поймёт, зачем жить в своё удовольствие. Смысл жизни в том, чтобы заработать на золотую ручку олигарху!
> В общем, картина пациентов понятна. На етом все. Я устал
Слив принят, достигатор. Не забудь зайти через полгода таким же безработным чмом продолжая уверять нас всех, что вот завтра ты вкатишься.
К большому сожалению.
>вместо того, чтобы чиллить
Я уже заебался чиллить, скучно неимоверно. Ну а все, что весело - стоит денег
У тебя в любом случае денег не будет, пойми. Хватит уже мечтать.
Там где-то раз в квартал создает новый контест, типа осенний 2024. И вот за к примеру 3 месяца тебе надо успеть прорешать 5 задач.
Проблема в том, что 5 задач надо решить одновременно и за скажем 5 часов. Плюс каждую на 100 баллов. Тогда возьмут в стажеры.
В общем-то почитай правила на самом сайте, они там где-то наверняка есть.
Есть варик со стажерством чуть проще - это вузы. Сам вуз может через практику сделать тебя стажером.
> Проблема в том, что 5 задач надо решить одновременно и за скажем 5 часов.
> Плюс каждую на 100 баллов.
> Тогда возьмут в стажеры.
Самонеуважение вкатунов-мечтателей не имеет границ...
Причина тряски?
У меня знакомый в жаву вкатился в 27 и его забрали с первого собеседования. Не прыгай с хуя на хуй. У тебя уже есть какие-то знания по джаве, развивай их. Толку все сливать в унитаз и вкатываться в калькулятор?
До 2022 вкатиться было в разы легче. И вообще экономика другая была. Ты хоть интересовался, как у твоего кабана с финансами сейчас? Будет у тебя завтра работа?
У моего кабана экономика простая - 150к за мидла, 200к за сеньку.
Зато вон еще один этаж в бизнес-центре выкупили.
Причина тряски в том что кажется что джава это сложно и только в крупных компаниях, а они ж по рассказам с двачей любят студентов набирать с вузов. А питон типа разнообразный и там много всего, много контор "рога и копыта" и вот туда можно вкатится.
Если что я не утверждаю, это тупо мои догадки, у меня вообще ощущение как у потерявшегося в лесу, тупо не понимаю как эффективно действовать во вкате.
Щедрый кабан ещё. Я за 4 года до самого разорения фирмы получал с 30 до 80, а по званию рос от джун до джун+, затем до джун++, затем до джун+++ (это когда на мне одном вообще весь фронтэнд и половина бэка держались). Самому смешно щас.
Пруф
выглядит так, как будто тебе нужна система сборки просто. приклей к проекту maven или gradle
я Почти твой знакомый. Вкатился в java в 25. Сразу на 130к. Сейчас немного зп подняли, теперь 150к. Вкатился с 1 собеса грефу в трусы.
Кулстори, правда вкат в сбер доступен только через студенчество.
https://sbergraduate.ru/sberseasons-moscow/
кхх чел думает, что можно вкатиться только через стажировку
Да тут в треде был чел, который в сбер вкатился.
Там правда один ньаюнс, он уже работал в сбере, считай через связи.
Мне 23. Учу джаву два года, главная заноза в отсутствии диплома. Есть егэ на 290 баллов и я думаю, поступить в рандом вуз или очно или заочно, попутно пытаясь найти работу. Очка отнимет много дневного времени, а заочно учиться на 7 месяцев больше, почти пять лет. Оба сценария хуевы, так как диплом получу только под 30
Где покупают дипломы я не знаю, и вряд ли у меня хватит денег
Или вообще не рыпаться, дальше работать курьером?
Это я и есть походу. Работал в сбере до этого, но даже близко не айти. Алсо тогда меня устроили не напрямую в сбер, а к вендору. Сейчас уже перевели в штат.
Но один парень с моей группы на курсе тоже в сбер вкатился, и он в нём не работал.
Ну расскажи, как вкатывался. Были проблемы с вышкой? Как коллеги относятся, что до 25 не в айти работал?
Уровень, чтоб вкатиться на низ вилки джуновского грейда в сбер ~ 30 лвл на джавараше и прочитанная хед фёст джава
На вышку всем похуй, если идешь на специалиста, а не лида. Коллегам похуй, кем ты там работал и какой у тебя диплом. Есть 60 летние скуфы, которые в 80-х десктоп на делфи писали, есть 20 летние МФТИшники с красным дипломом. В конечном счете со всеми подружишься, если ты не душный токсичный уебан. Чего не знаешь - научат.
Мимо проходящий абмассадор Сбера.
Хуйню какую-то несешь, если честно. Ну типа там инвариант стоит, ты просто никак не засунешь туда null, нахуй тебе тогда проверять его наличие? Наличие пупуни на забудь проверить во всех сетах, а то вдруг.
Даже если ты как-то обойдешь этот инвариант, у тебя всегда есть возможность превратить все это в итератор какой-нибудь и уже там проверить.
К слову, надоели обсуждать вкат в джаву... Обсуждайте её непосредственно.
>Ну типа там инвариант стоит, ты просто никак не засунешь туда null, нахуй тебе тогда проверять его наличие?
Если тебе этот Set откуда-то извне передали, откуда ты знаешь, какие у него там инварианты? Да, в явадоке написано, что contains может выстрелить NPE. Но у HashSet, который приходит в качестве параметра с типом Set в 99% случаев, такого не происходит, и поэтому перед вызовом contains никаких действий не требуется. А тут оказывается еще и на null аргумент метода надо проверять. К тому же интерфейс не разделен на NullPermittedSet и на NullDeniedSet. А вдруг у меня в методе подразумевается, что аргумент Set может хранить null? Как мне указать это в сигнатуре метода? А никак.
Хуйню сделали, короче.
Проблем с вышкой не было, вкатывался через курсы яндекс практикума, предварительно навернув джава раш. Коллеги наоборот говорят, мол круто. Но у нас в команде ни у кого нет айтишной вышки.
Ну эту лазейку в доке насколько я помню сделали не из-за этих Set.of(), а из-за concurrent коллекций. Вот там реальные причины, почему null нельзя хранить.
Хотя, конечно я не очень понимаю, почему бы не возвращать в таком случае сразу false. Мы типа нарушим принцип лискова, тамушта мы можем. Еще проблемы есть с ансапортед операциями, они тоже никак не обозначены. Поэтому типа через remove как-то сделать низя.
Как я вижу, рабочий вариантом, будет или пользоваться итератором или.. Просто ловить ошибку.
>Как мне указать это в сигнатуре метода?
@Nullable))) Правда не то, чтобы это сильно хорошо работает. Но хоть как. В будуууууущем, можно будет просто знак вопроса у типа поставить.
>Хотя, конечно я не очень понимаю, почему бы не возвращать в таком случае сразу false.
Вот именно. Если ты знаешь, что в коллекции не может быть null - значит в contains должен быть early return. Нахуя мне срать NPE в кашу?
>Как я вижу, рабочий вариантом, будет
Запаковывать Set в HashSet. Манал я в рот все остальное.
Всмысле - запускаешь либу? Либа - не программа, как ты ее запускать собрался?
>>67966
>1. Копировать заготовленную папку с статическими ресурсами
>2. Выполнить две баш команды
Все это возможно в любом сборщике, хотя справедливости ради, при пересадки из вышеперечисленных экосистем в джавовую можешь испытать определенный культурный шок - на том же мавене некоторые вещи могут быть менее интуитивными. Но возможно все.
К примеру, на мавене я бы использовал assemble/resources plugin для первого, и exec plugin для второго.
Работаю в тбанке на 350к где-то с дежурствами. Есть стартап на 250к, в котором я уже работал. Он зовёт меня обратно, там, в целом, прикольно по задачам было и посвободнее. Но самое главное, что там полная удалёнка есть из любой страны.
Я нихуя не могу понять, как мне выбрать. Как будто бы в 2к24 круто иметь полную удалёнку на случай пиздеца и иметь возможность свалить.
>проде не слишком много отличий от джавы
Зачем тогда в него погружаться? Та же жаба, вид сбоку.
Давай в скалу
Скала кажется излишне нагроможденной. Также прикол скалы создавать объекты на каждый чих не очень на скорость влияет. Также хз как у скалы со спрингом дела. В котлине понравилась декларативная многопоточность и очень не понравилось отсутствие чекед исключений, непонятно нахрена они так сделали
>отсутствие чекед исключений
Да у них много таких ахутельных решений. Примитивы как-то не вписываются в нашу систему типов? Нахуй вырежем. Теперь сиди и гадай, когда у тебя объект, а когда примитив.
>хз как у скалы со спрингом дела
Ты новый язык хочешь потыкать или очередную имплементацию спринга? Сиди на жабе дальше в таком случае.
>создавать объекты на каждый чих
Если они маложивущие, то не похуй ли? И где там объекты на каждый чих? В скале даже мутабельность легальна.
Ну прекинь, работа не ограничивается спрингом. Бывает и такое.
И оказывается на джаве тоже можно что-то писать без спринга. Чудеса, ты так не думаешь?
>Думаю погрузиться в котлин,проде не слишком много отличий от джавы
На изучение всех тонкостей корутин у тебя уйдет не один год, чел..
>Что думаете?
Работы нет
Чудеса - это мир спринголюбов...
>>На вышку всем похуй
Ну не совсем, похуй только если она у тебя есть(какая именно - уже не важно). Просто обычно особо не спрашивают про такое и это наверняка знает только херка, мб пм/лид.
Either монаде лет столько же, сколько и чекед исключениям. Почему одно легаси и фу таким быть, а другое круто модно молодежно?
Да и вроде там нет трансформеров монад, do нотации нормальной.. Какой-то карго культ, не иначе
Где ты будешь ставить трай кэтчи решаю не я и даже не ты, а разработчик апи библиотеки. Если он решил, что тебе пиздец как надо все обработать, то будь добр. Или оберткой какой-нибудь пользуйся, которая автоматом это сделает.
>Да и вроде там нет трансформеров монад, do нотации нормальной.. Какой-то карго культ, не иначе
В го не используют монады, там просто возвращается несколько значений. И по соглашению если ошибка не пустая, то другие значения не определены и читать их не надо.
Какая же параша, лол. Это литерали хуже джавы, в ней просто поставил try где-то сверху и похуй. В его контексте ты можешь не обращать на ошибки. Ну или добавить в сигнатуру функции эту ошибку.
В вашем же случае, походу приходится каждый раз чекаете, бля а вдруг ошибка пришла. Так еще писать некоторую логику по передаче ее наверх, если обработка сейчас не нужна. Пиздеееец.
Буквально хотели как лучше, но получилась полнейшая хуита.
> И по соглашению если ошибка не пустая, то другие значения не определены и читать их не надо.
Лол блядь. Это вот так выглядит в зумерских головах оптимизация потребления памяти?
Чтобы понять почему одно - легаси а другое нет, нужно немного укуриться в логику.
Вот представь - есть у тебя метод void pupa_zalupa(). У метода есть тельце, и в пограничных случаях это тельце может отрабатывать не так как ты пишешь в коде. Это называется - исключительная ситуация. Во многих языках, включая джаву, в ответ на исключительные ситуации среда генерит исключение. В случае же джавы исключение - это как и все остальное обьект с определенным типом.
Ты - клиентский код, который коллит pupa_zalupa(). Вопрос - нахрена тебе как клиентскому коду в теории может понадобиться знать тип исключения, который pupa_zalupa выбрасывает? Ответ может быть только один - чтобы исключение обработать. Обработать исключение == поймать его, отреагировать на его приход и забыть о нем (отрекавериться).
Но технически, исключения устроены так, что их выбрасывание на определенном этапе сопроводждается сборкой стек-фреймов, которые нужны для того, чтобы показать разработчику уютненький стектрейс чтоб разраб понял, где он обьебался и впоролся в исключительную ситуацию. И сборка стектрейса - процесс нелегкий.
В итоге что же получается. Ты декларируешь эксепшен как чекед, буквально декларируя свои намерения клиенсткому коду - если ты коллишь pupa_zalupa(), изволь обработать IOException. Клиент его обрабатывает и дропает. Усилия по сборке стектрейсов - коту под хвост.
Ты конечно как клиентский код не обязан дропать исключение - ты можешь его и наверх пробросить. Но какой смысл метод pupa_zalupa засорять сигнатурой чекед эксепшенов, если рекавериться из них - зашквар, а проброс наверх анчекед эксепшенами делается и так без усилий со стороны разраба?
С монадными конструктами все честно - ты так же как и с чекед эксепшенами зашиваешь легальные исключительные ситуации в сигнатуру, но в ответ на исключительную ситуацию не кидаешься собирать стекфреймы как дурак.
Впрочем, на самом деле все неоднозначно. В некоторых либах лабают специальные обрезанные чекед эксепшены с оверрайженным пустым fillInStackTrace, как раз чтобы стек трейс не собирался. Сомнительно, но ок.
Чтобы понять почему одно - легаси а другое нет, нужно немного укуриться в логику.
Вот представь - есть у тебя метод void pupa_zalupa(). У метода есть тельце, и в пограничных случаях это тельце может отрабатывать не так как ты пишешь в коде. Это называется - исключительная ситуация. Во многих языках, включая джаву, в ответ на исключительные ситуации среда генерит исключение. В случае же джавы исключение - это как и все остальное обьект с определенным типом.
Ты - клиентский код, который коллит pupa_zalupa(). Вопрос - нахрена тебе как клиентскому коду в теории может понадобиться знать тип исключения, который pupa_zalupa выбрасывает? Ответ может быть только один - чтобы исключение обработать. Обработать исключение == поймать его, отреагировать на его приход и забыть о нем (отрекавериться).
Но технически, исключения устроены так, что их выбрасывание на определенном этапе сопроводждается сборкой стек-фреймов, которые нужны для того, чтобы показать разработчику уютненький стектрейс чтоб разраб понял, где он обьебался и впоролся в исключительную ситуацию. И сборка стектрейса - процесс нелегкий.
В итоге что же получается. Ты декларируешь эксепшен как чекед, буквально декларируя свои намерения клиенсткому коду - если ты коллишь pupa_zalupa(), изволь обработать IOException. Клиент его обрабатывает и дропает. Усилия по сборке стектрейсов - коту под хвост.
Ты конечно как клиентский код не обязан дропать исключение - ты можешь его и наверх пробросить. Но какой смысл метод pupa_zalupa засорять сигнатурой чекед эксепшенов, если рекавериться из них - зашквар, а проброс наверх анчекед эксепшенами делается и так без усилий со стороны разраба?
С монадными конструктами все честно - ты так же как и с чекед эксепшенами зашиваешь легальные исключительные ситуации в сигнатуру, но в ответ на исключительную ситуацию не кидаешься собирать стекфреймы как дурак.
Впрочем, на самом деле все неоднозначно. В некоторых либах лабают специальные обрезанные чекед эксепшены с оверрайженным пустым fillInStackTrace, как раз чтобы стек трейс не собирался. Сомнительно, но ок.
>проброс наверх анчекед эксепшенами делается и так без усилий со стороны разраба?
Ты лукавишь. Проброс чекед эксепшенов пробрасывает и информацию наверх. Ты наверху точно будешь знать какие к тебе придут эксепшены и что тебе надо обработать. С анчекедами это не так.
>но в ответ на исключительную ситуацию не кидаешься собирать стекфреймы как дурак
Т.е. для тебя весь плюс - это.. Сбор стекфреймов? Но типа монадные конструкции не собирают его не потому, что они такие ахуенные и перфомансные, а просто потому, что не могут. Control flow, точка с запятой пресловутая, обычно характерна для языков императивных, но обычно где есть нормальные монадные штучки и императивности тоже нет. Тогда и смысл собирать стек теряется, поскольку порядка-то вычислений нет...
В го это конечно не так, но там и Either крайне убогий. Такой и в джаве легко можно сделать, что показывать я не стану, поскольку вы жаваны неблаходарные.
>с оверрайженным пустым fillInStackTrace
Там же просто один флажочек поставить, пик. Не оч понял про что ты.
Короче, если плюс помимо возможного перфоманса нет, то ну нафиг. Условно жвм умеет оптимизировать стектрейсы уже давно.
Давай еще какие-нибудь плюсы придумай))
> Такой и в джаве легко можно сделать, что показывать я не стану, поскольку вы жаваны неблаходарные.
Проиграл с того как этот даун называет круговое обоссывание за бесполезную бойлерплейт тормозную хуиту.
Да пошел ты. Я вообще не понимаю хули вы про меня помните. Я тут полтора блять месяца не был.
>Там же просто один флажочек поставить, пик.
Флажок прощелкал, каюсь. Я в сорцах разных фреймворков видел - делают разные Signal extends Exception, и в них кастрируют fillinStackTrace.
>Но типа монадные конструкции не собирают его не потому, что они такие ахуенные и перфомансные, а просто потому, что не могут
Странный какой то наброс... не могут. Не не могут, а не хотят, им это не нужно. Нахуя? Монадки на то и монадки - там где ты зависишь от языковых фичей и вынужден соответствовать, монадки тебе позволят хоть так хоть эдак делать. При желании монадками и стектрейс можно было бы собратью
Просто есть два принципиально разных типа исключительных ситуаций - recoverable и неrecoverable. В первом случае надо просто форсить компилятором обработку таких исключений (которая в 99% случаев подразумевает восстановление из исключительной ситуации в нормальную). Во втором - наоборот: control flow зло и эксепшен дролжен прошить все слои и пиздануть глупого девелопера по ебалу стектрейсом. Посередине нихуя нет. Для второго случая лучше анчекед эксепшенов нихуя не придумано. Первый случай мы тут обсасываем.
Ну и не то чтобы я настаивал на том, что прям нужно экономить на спичках. Просто насколько я прокурил эту тему, раньше с этими стектрейсами были прям проблемы, из-за чего и сложилось это правило, что control flow via exceptions is evil. Ну и плюс история все таки все равно развернулась в сторону монадок - попробуй ка поработай в стримах с чекедами. Заебешься.
>Для второго случая
Они кстати на Error по твоему описанию похожи.
>control flow via exceptions is evil
Я кстати думал, это из-за плохой репутации goto. Мол типа мы из кода лапшу делаем, а это плохо.
>попробуй ка поработай в стримах с чекедами
Вот тут согласен. Но тут наверное больше идет то, что джава изначально была без фп штучек и вот оно как-то криво состыковалось в итоге.
К слову эта ситуация вообще говоря несколько уникальна, поскольку трубет смешения двух эффектов: множественности значения и существование ошибки.
Попробовал такое смешение вообще сделать: няшно выглядит. Пишешь будто никаких ошибок вообще нет. Просто простые примерчики и усе.
Сам код: берет некий массив, создает в нем двухэлементное окно. Типа [1,2,3] => [(1,2),(2,3)].
Потом divide правый элемент каждой пары на левый элемент. И наоборот. Полученные два результата опять делим друг на друга.
В процессе этого, они могут поделится на ноль и таким образом образоваться ошибка.
И вот думаеца мне, что на го код для данной задаче не будет особо короче джавового. Поэтому, ну простое введение Result ничем не поможет: будет та же хуйня с кучей вложений и лишних обработок.
> Во втором - наоборот: control flow зло и эксепшен дролжен прошить все слои и пиздануть глупого девелопера по ебалу стектрейсом. Посередине нихуя нет.
Ещё один маня-теоретик повторяющий за блохерами из ютуба высрался. Как всегда приправил токсичностью в сторону себе подобных, пидорюндель ебаный. Давай, объясняй, почему положить микросервис нахуй лучше, чем отправить клиенту сообщение о внутренней ошибке и залоггировать ошибку.
@
ВСТАЛА ВСЯ БОЛЬНИЦА
>>Усилия по сборке стектрейсов - коту под хвост.
если стектрейс по коду не вызывается - он и не собирается
https://www.youtube.com/watch?v=2OJXRwtjfg0
>>Ты наверху точно будешь знать какие к тебе придут эксепшены и что тебе надо обработать. С анчекедами это не так.
Как быть если мне похуй какие там исключения, я не собираюсь их обрабатывать? Если жсон не спарсился - я не буду вызывать другой парсер, я просто выкину 500 клиенту и пукну стектрейсом в лог.
Паджит Дривен Девелопмент лол
Правда в том, что он из-за наличия топ-левел принтеров исключений в фреймворках собираться может всегда, и на этапе компиляции гарантированно вычислить, будет ли в тот или иной момент собираться невозможно из-за нерешаемости проблемы остановки.
Есть разные чекед исключения же. Вот для меня например важное, чтобы вот это https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html было в сигнатуре функции. И я точно знал, что неплохо бы тут подумать над тем, как оно будет прерываеться.
А вот в котлине тебе надо это помнить, забыл: в лучшем просто ошбика утечет наверх, в худшем же у тебя тред не завершит работу и будут утечки.
А насчет жсона, если большинству клиентов этого апи похуй на эти исключения и они их просто подавляют, возможно просто дизайн неудачный или сделан не для людей, ака jdbc.
Так и не понял кстати что делает вызов interrupt() в ранабл в ответ на исключение. Остановится ли тред сразу,остановится ли только таска и тд. Тяжело
>что делает вызов interrupt()
Восстанавливает флажок того, что тред был прерван, поскольку исключение IE делает этот флажок = false. В основном это нужно, чтобы наверх передать, типа информацию не терять. Нооо, смотря кишочки всяких разных тредпулов и фючеров, я не заметил, где эта информация вообще применяется. Наверное можно считать это правилом хорошего тона.
> Восстанавливает флажок того, что тред был прерван, поскольку исключение IE делает этот флажок = false
Наоборот же,тред по умолчанию не интерраптед,а исключение просто оповещает что снаружи тред хотят прервать
Смысл в том чтобы ты не мог создать объект. Типо хочешь создавать объект— наследуйся. Мб это для фабрик актуально
Они у большинства такие, ибо это нахуй никому не нужная инфа, пхпхп.
Ну ты выделил условие при вызове вейт метода,а ниже написано что статус будет установлен если ни одно из вышеуказанных условий не выполняется
>Они кстати на Error по твоему описанию похожи.
Error это совсем крайность - это когда не то что обработать - перехватывать их особо смысла уже нет. Анчекед эксепшены перехватывать смысл может быть - например чтобы собрать в контексте вызова дополнительную инфу из локальных переменных и прикрепить к эксепшену, трейсов насрать, и.т.д. Впрочем, перехватив, ты обязан прокинуть его наверх, иначе коллеги тебе ебало набьют.
> Но тут наверное больше идет то, что джава изначально была без фп штучек и вот оно как-то криво состыковалось в итоге.
Дык монадки то и пришли из ФП-штучек. И не от хорошей жизни они туда пришли. Ты попробуй ка спроектируй методы на Stream API таким образом чтобы они чекед эксепшены поддерживали? Скорее всего ты просто засрешь апи - у тебя вместо мап будет мапЧекед и мапАнчекед. А монадки в паре с дженериками эту проблему решают
Токсичный здесь только ты. Я бы мог пояснить тебе за твой вопрос, но ты сам задал тон дисксссии. Пошел нахуй.
Хм, интересно..
>Ты попробуй ка спроектируй методы на Stream
Ну вообще что-то сделали: https://www.baeldung.com/exceptions-using-vavr по виду вроде неплохо выглядит. Правда пользоваться я таким не буду.
Короче. Просто смотришь в кишки(пик1). Вот, флажок. Он ставится. Потом этот флажок смотрят остальные методы, обычно через interrupted(), корторый этот флажок снимает, ну и вызывают соответсвующее исключение. На пике3 пример реализации Condition. И там как раз лок саппорт.
И вообще я не очень понимаю, что именно ты хочешь, доказать, хм...
Хотя 3 пик не совсем то. Вот тут ошибка непосредсвенно вызывается. Т.е. он следит за тем прерывал ли кто-то тред, сохраняет этот флажок, в конце ебашит исключение.
Object#wait примееерно также работает, просто на уровне jvm.
Так вот именно! В вавре и так комбинаторный адок с Functionами и Tuple'ами из-за того, что надо по отдельному классу на кортеж и функцию с N-ным количеством параметров... Так теперь еще из-за чекед эксепшенов есть серия классов CheckedFunction. И да - они декларируют в сигнатуре чекед эксепшен. Но толку то, если он там throws Throwable.
И самый главный прикол этого CheckedException - методы lift/liftTry. Которые суть - читерство, для того чтоб эксепшоны в уютную монадку Try упаковать.
>Делаю лабу по Джаве
>Поскольку я нихуя не шарю в программирование
А нахуя поступал тогда, лол?
Чет тип пика, наверное.
Спасибо за помощь, анон. Только я нихуя не понял. Когда в классе родителе есть метод, который мы хотим изменить в классе-наследнике, мы переопределяем его. Но нахуя вообще нужно переопределение, если можно ёбнуть перегрузку метода, без этих ваших @Override?
>Когда в классе родителе есть метод, который мы хотим изменить в классе-наследнике, мы переопределяем его.
Ну... Нет. Переопределение просто одна из форма ad-hoc полиморфизма. Его делают обычно, чтобы поддерживать несколько типов не связанных между собой иерерахией.
Вот не знаю, хочешь ты сделать метод который складывает два числа, сделал пик1. Потом думаешь, а почему бы мне не расширить его еще до лонгов и не знаю, для дабл.. Выходит много много методов пик2. В принципе, больше не для чего тебе переопределение не понадобится. На пик3 наглядно, как его используют в жаве.
Перегрузка тоже форма ad-hoc полиморфизма, просто в ней меняется не тип, а алгоритм, который зависит от контекста, где он находится(класса). И да, тип параметров при перегрузке можно менять, пик4.
Спасибо за пояснение, анон.
Бля, спасибо анон. Ты прям очень выручил. Я уже пропустил это ебаное задание, и пошёл дальше, и там такой хуйни с закрытыми полями нет.
Да не за что. Я тут сам буквально вчера ебался с ебаным ажаксом и шарпом. Сука какое же лютое говнище пиздец, до сих пор горит. Сиди копайся в кишках, непонимая какого хуя это не работает, просто ррря. Никогда такого в няшной жабке не було, в ней хотя бы документацию люди пишут, а не майки.
Чет дохуя возни
Короче я придумал записывать поля enum-ов так же как у record-ов, а слово class в декларации enum-а сделать необязательным.
К слову, я хоть и нихуя не разбираюсь в программировании, чтобы что-то там судить о языках, но C# понравился мне больше. Я вообще с него вкатывался в эту тему, но успел изучить немного, всякие там типы данных да массивы. Потом, когда поступил в ВУЗ, Java стала основным языком на учёбе (в смысле, она по дефолту много где шла). И мне не очень нравилось, что если в том же C# достаточно написать Console.ReadLine, то в джаве нужно аж ёбанный объект класса Scanner создать. Впрочем, сейчас эти "различия" уже не кажутся мне чем-то критическим.
>поля enum-ов так же как у record-ов
Думаю слишком большая вложенность скобок будет. Представь твоему енуму поле сделать и будет подобное:
enum Enum(One(1), Two(2)){
int num;
}
Плюс это каких-то явных преимуществ не даст, просто измнение синтаксиса ради измнения синтаксиса. В общем сомнительно, что его приняли бы.
>class в декларации enum
Про что ты?
>>72327
Я не собираюсь холивары разводить. Просто сгорело, вот и усе.
Не, я не ради холиваров это написал. Я скорее к тому, что таки выбор любимого языка, в ряде случаев, происходит по каким-то своим внутренним ощущениям. Мне C# показался как-то интуитивнее той же Javы (с высоты своего небольшого опыта). Тебе, судя по всему, Java заходит куда больше. Каждому своё, в общем.
>Думаю слишком большая вложенность скобок будет
Ты пупуня совсем? Это будет выглядеть так
public enum State(@JsonValue String jsonRepr) {
UP("up"),
DOWN("down")
}
Да-да. Она самая.
Не ну выглядит интересно, но таким образом ты забираешь возможность поставить модификатор доступа. Или предлагаешь как в record все пабликом сделать?
>Или предлагаешь как в record все пабликом сделать?
Не думал об этом. Я думал о том, что все поля все равно неявно final, так что по духу близко.
>что все поля все равно неявно final
Ну на данный момент в енумах они могут быть и не финальными.
Так что ну как я вижу это огромное препятствие, ведь затрагивает обратную совместимость, если конечно не оставлять изначальный синтаксис, что-то типа свитча получится, который несколько синтаксисов сразу поддерживает.
Еще лично мне в енумах не хватает только поддержки женериков....
>Еще лично мне в енумах не хватает только поддержки женериков....
Емумы с поддержкой женериков - это силед-классы)
Шутка.
Залетух...
1. Скобки на сосаче не используются.
2. Отчитываться о том, что твой пост является шуточным не принято, т.к. особо сильных последствий даже от самого жирного троллинга нет.
>1. Скобки на сосаче не используются.
Нашел до чего доебаться. На тебе тире как вы все любите ---
>2. Отчитываться о том, что твой пост является шуточным не принято, т.к. особо сильных последствий даже от самого жирного троллинга нет.
Так местные чето какие то слишком серьезные дохуя. Начнут щас на серьезных щщах доказывать еще что силед - говно а емум - заебись, вперемежку со своими загонами и подрывом жоп.
Какой положняк по вкату в Джаву в 2024м?
Через постель разве что.
Вводные: высшее образование в сфере ИТ, общий стаж работы там 9 лет, из которых 7 лет писал бекенды на гавноязыке в VS Code. Смежные технологии, на которых работал - git, docker, rabbit, redis, pgsql, kubernetes (в меньшей степени)
Жёлтые пидорасы, у вас лк лежит. Как же заебала эта хуйня, опять в интернетах что-то не работает...
Починили. Читают.
Диплом без троек с профильного вуза, хорошее знание алгоритмов и структур данных, уметь решать задачи на графы на листочке, стаж работы от 3 лет с подтверждением в трудовой, ну и естественно знания всех сопутствующих технологий.
И че? Снова нихерища интересного.
Даже превьюшка про примитивы в свитчах - это то, что должно было быть изначально, а не спустя N лет. Да и прошло уже больше года с того момента как ввели эти свитчи, я как-то за это время наигрался с паттерн матчингом, нет такого восторга от жабы, эхх.
Эти ебанаты собираются виртуальные потоки фиксить или быдло и так схавает,неча барское время на это тратить?
Попробуйте написать
Stream.of("jetbrains", "jret", "jovno").map().toList()
Поставить курсор внутри map и написать trim
Я в ахуе просто.
Работало в предыдущей версии, иначе бы я не обратил внимание. Теперь еще и пофиксят хуй знает когда.
>Надо перед точкой ставить.
Чего блядь?
Я в java после си. Так вышло, что там на всё это используется просто массив символов(обычно для этого делается конструкция вида char* str=malloc(...)). Из-за этого не совсем понятно, что и когда использовать.
Я им блядь штук 20 тикетов сделал с аккаунта с аватаркой ПЫНИ блядь, всё приняли, что за нахрюк?
Перформанс низкий будет.
Пруф.
@PostMapping
public ResponseDTO test(@RequestBody RequestDTO request) {
try {
return someService.execute(request);
} catch (Exception e) {
anotherService.save(request);
throw e;
}
}
Короче ясно,хомячки и так схавают,а у оракла есть задачи поважнее, ещё столько фич из скалы не спизжено
String используем бай дефолт. Остальное зависит от условий.
Если нужна мутабельность, часто изменяем строки - StringBuilder.
Если мы сохраняем конф. инфу, типа пароля - CharSeq/char[].
Обычно так, вроде. И свои строки не надо делать. Они в любом случае будут хуже стринга.
Мой тоже, кста приняли. Но показывать я его не буду, потому что жаваны злые и опять меня затравят. Себе дороже.
Да вроде кидают эксепшены. А вот трай кэтчи заменяется обычно обработчиками. Тип того https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
Кидают эксепшены всегда,главное обработчик написать. Почитай про контроллер эдвайс
Инфиксные методы, например. С их помощью можно дслки начать делать. Ну или знаешь, написать универсальный метод, который бы брал какое-то значение и применял к какой-то функции, пик 2 типа. Существую такой метод, не нужно будет ручками делать паттерны типа билдеров или аля стримы.
>>74359
Я кстати не понимаю, зачем оракл вообще пошел в сторону функциональщины. Реально проблем важнее нет?
Тут прочитал. У меня акка JB нет, чтобы тикеты им заводить.
https://habr.com/ru/news/825052/comments/#comment_26981856
Благодарю
У меня тоже нет, я просто из гитхаба взял. И хуй знает, повторюсь, у меня приняли даже не стали бухтеть, что я шиз это хуйня или то, что я узкий.
>зачем оракл
Оракл ничего не выбирает. Он только деньги башляет (и собирает, за платную сборку оракл жидкей). Выбирает Брайан Скуфц. Де-факто несменяемый диктатор джавы. Любое изменение в джаве делается с его позволения.
Ну окей, вопрос-то тот же. Зачем гетцу это надо? Можно было и дальше продолжать топить в чистое ооп, зачем эти заигрывания с фп...
Спроси его. Как по мне что функциональщина, что ООП имеют фундаментальные ограничения (но функциональщина побольше). Правильный стиль кода это стиль си с использованием ООП и прочих неуниверсальных парадигм по необходимости.
Ява как обычно всех выебала.
Чел просто пиздит о том, что не понимает. Вот первый же тезис говно. Сука, для этого придумали монады и этот бойлерплейт скрывают, называя эффектом. В нормальных языкам тебе блять не надо писать ифы или матчить это как-то, там за тебя все сделали.
На счет системных ошибок - есть MonadFail.
Дальше хуйня про перфоманс - похуй. Эти сравнения в вакууме ничего не стоят.
>Сука, для этого придумали монады и этот бойлерплейт скрывают, называя эффектом
Так это в функциональных языках. Без do-нотаций монадки не такие няшные.
Ты мечешься от одной крайности к другой просто. Нужда в монадках в твоем языке появилась, когда появились стримы. Ты мог бы сказать что и стримы вводить была хуевая идея, но стримы не от хорошей жизни вводились.
Че ты хочешь от айтишки - айтишка одновременно самая клоунская и самая консервативная область деятельности человечества. Анальникам понадобились десятилетия чтобы понять, что вечно на императивщине сидеть не получится, не вывозит она современные реалии. А просто слезть и пересесть на хаскель, где всю дорогу всё было, не позволяет зашоренность и предвзятость мышления. В конечном итоге имеем опять клоунский торг длиною в десятилетия, где в джаву завезли уже стримы, лямбды, комплитаблфьючи и продолжают завозить всякое прочее стракшерал конкарренси (и я почти уверен что рано или поздно завезут и дунотацию, но не скоро), а хомяки переизобретают гоу, делая его таким же императивным, каким они привыкли видеть разработку.
>но стримы не от хорошей жизни вводились
А конкретнее? Вроде форы не настолько неудобные да и многие задачи чисто через стримы сложно решать.
>и стримы вводить была хуевая идея
Монада листа и без do нотации вполне юзабельная. Вот Optional вот это да, не пришей к пизде рукав.
>Че ты хочешь от айтишки
Мне просто не совсем нравится тенденция, когда вот видят фичу в каком-то языке. Видят, что она хорошо работает и выдергивают без контекста в свой язычек. А потом удивляются, а че она так плохо работает-то. Хуже будет только, если эту не очень хорошо работающую фичу будут проталкивать на безальтернативной основе. В жаве со стримами и пр. это хотя бы не так.
Почему на JAVA больше откликов на вакансии чем на других языках? Разве это не один из самых сложных языков для больших систем?
Ты посмотри сколько откликов на питухон, например. Джава не только относительно сложный язык, но ещё и популярный, в большой троице.
Какой же ты блядь даун несущий несусветную пургу с умнейшим видом. Типичный порридж с синдромом Даннинга-Крюгера. Один вид поста со смыслом, но под ним нихуя. Ёбаный имитатор-позёр.
>ты блядь
>даун
>порридж с синдромом Даннинга-Крюгера
>Ёбаный имитатор-позёр
Я ведь обижусь...
>умнейшим видом
Врешь ты. Дефолт пост, точнее ну сколько не перечитывал, искренне не могу понять, где вы тут подобное находите.
>Вроде форы не настолько неудобные
Это пока ты линейно по коллекции конечной длины бежишь. Ты конечно паралеллизм и в тушке фора раскорячить можешь, но на то оно и ФП чтобы делать потоковую обработку данных за адекватное количество бройлерплейта.
>Мне просто не совсем нравится тенденция, когда вот видят фичу в каком-то языке. Видят, что она хорошо работает и выдергивают без контекста в свой язычек
Чел, расслабься. У тебя просто нет другого выхода и все. Написать новый язык не выход никогда. Да и инертность мышления программистишек - данность, кто бы что ни говорил. Программисты как лабали структурное программирование в 70х, так и продолжают это делать вопреки тому, что многие проблемы современной разработки императивщиной решаются из рук вон плохо. В таких условиях черри-пикать фишки из других парадигм - единственное что тебе впринципе остается. У тебя нет никакого выбора.
Чем больше тупорылых фич добавят оракл,тем яростнее будет наш щитпост в джаватреде
Да вам не угодишь. Добавляют фичи - у джаванов в треде яростный щитпост и тряска. Перестают добавлять фичи - в тред набегают орды шарпеев а джаваны перекатываются в гоферы. Вы там блять определитесь уже.
Еще одна проблема в том, что по спецификации внешнего сервиса, с которым мы будем делать интеграцию, запрос авторизации выглядит так: client_id=123123123&client_secret=ABCDEFGHIJKLMNOPQRSTUVWXYZ&grant_type=client_credentials&scope=read%20write
А по спецификации oauth2 client_id и client_secret передаются в параметрах авторизации, а не в параметрах формы. Как это сделать?
Лично я хочу чтобы в массивы добавили метод .stream() чтобы не пользоваться статическим методом и починили виртуальные потоки,все,мне больше ничего не надо,пусть сосредоточатся на Вальхалле и подобных масштабных проектах,или ядро оптимизируют без трат на тысячи версий джавы в год
По вопросу складывается впечатление что ты не понимаешь о чем спрашиваешь. Ты хочешь сказать что у спринг бута и спринг клауда есть стартеры для оаус2?
А что не так со статическим методом? Не по понятиям?
И в каком месте виртуальные потоки сломались?
У спринг клауда есть spring-cloud-starter-oauth2, погугли. У спринг бута тоже есть они:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-authorization-server</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
<version>${spring.boot.version}</version>
</dependency>
Ну конкретно в клауде,авторизейшн сервер выдает токены,а ресурс сервер хранит защищённые данные к которым ты запрашиваешь доступ с токеном который получил от авторизейшн сервера. Подозреваю что в спринг бутовом стартере просто готовые классы для работы с оаусом без разделения на такие четкие амплуа
Наоборот получается,у бута разделение,а у клауда общее*
Лично я просто сидел до какого-то времени на 8 версии, поэтому на личном опыте помню, что появилось после. Плюсом к этому знаю некоторые различия в кишках.. И еще на паре версий сидел. +- понимание версионности появилось.
В любом случае фич после 8 не много, да и нахуя спрашивать о том когда-то что-то появилось. Хуйня какая-то.
Попробуй напиши маленький пет, чисто на 8. Без спринга. Можно и без веба. Потом впечатления мне же тут распишешь.
Да никто кроме залетух мимикрирующих под заплесневевших дедов на фичи не жалуется. Настоящие заплесневевшие деды типо меня ноют, что фич мало.
С зависимостями разобрался, буду использовать спринг бут. С клаудом бут совмещается очень плохо.
Осталось разобраться, как правильно принять запрос авторизации. По документации запрос на получение токена выглядит так: client_id=123123123&client_secret=ABCDEFGHIJKLMNOPQRSTUVWXYZ&grant_type=client_credentials&scope=read%20write
Это можно записать иначе:
curl http://localhost:9000/oauth2/token -F client=123123 -F client_secret=ABC -F grant_type=client_credentials -F scope=read write
А нужно:
curl -u 123123:ABC http://localhost:9000/oauth2/token -F grant_type=client_credentials -F scope=read write
Как это реализовать?
Много, но не синергирующих друг с дружкой фич тоже не надо. Будет свалка уровня cpp. Пусть реально большую часть усилий сосредодрочат на ебаной вальхалле.
>>75409
Возможно оно? https://www.baeldung.com/spring-security-custom-oauth-requests
Помню когда кейклок настраивал чет такой хуйней не занимался..
Опять ты? У тебя личный пунктик или что? В любом случае давай конкретнее. Я не понимаю какой именно тезис тебе снова не понравился
>нихуя не понял, уточни
Исключительно проблема твоей манеры отвечать на миллион постов одним постом.
Ну заебись же я щитаю. Типа знаешь решение n+1 проблемы, вмето миллиона запросов на миллион обжектов, всего один, пхех.
И не хочешь говорить и ладно.
Какие поломки обратной совместимости? Стринг темплейты были превью их и выперли на этом праве. То, что вы постоянно лезете в детали реализации и ноете, ноете и ноете о том, что ррря как можно их менять реально надоедает. Просто берешь и не лезешь в приватное апи. Это же просто и легко.
>выперли на этом праве
А давайте сделаем вообще всю джаву превью и можно будет ломать что угодно! Блядь, не опускайся до уровня шарподаунов, у которых всё что не кроссплатформа выписано из дотнета.
Ты щас сам психуешь как пубертатный масленок у которого конфетку отняли. Даже потешно.
Не стыдно?
Ну и нахуй ты порвался?
Про то, что превью может быть даже отменено писали очень давно. Тебе даже специально вставили кучу палок в колеса, чтобы ты не запустил превью код легко и не смешивал его с нормальным.
По мне это правильная тенденция, чтобы на вас жаванах тестить фичи и хотя бы их менять, без тестирования и фидбека хуево.
>до уровня шарподаунов
Без понятия как там в шарпе. Я на нем не пишу.
А может быть лучше было бы не вставлять палки в колёса, но и не отменять нихуя?
Если б ты хоть раз коммерческий код для клиентов писал, ты б не задавал таких тупых вопросов.
Погугли пирамиду аргументации прежде чем в серьёзные дискуссии взрослых людей суваться.
Тогда бы ты вообще не получил стринг темплейты.
Да и вообще. Нормальная причина же. Сказали что, хуйня получилась, давайте отменять.
И смотри какую няшу планируют:
https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html
Жди, не трясись. Все будет лет через 5
Теперь осталось только придумать синтаксис для превращения StringTemplate в String
$"foo \{bar}"
"foo \{bar}".toString()
Или вообще неявное преобразование
С такими запросами как раз нейросетки лучше всего справляются.
Прочтение без практики бесполезно.
И как тебе впечатления в общем?
Лично мне вот 16 глава больше всего понравилась. До сих пор частенько перечитываю.
Хотел написать что 16 глава самая норм,имхо ее надо было в самое начало вставить. В целом это было сложно,но определенные знания я почерпнул,хотя я рассчитывал что вся книга будет целиком про кишочки,а оказалось это этакий обзор классов джавы
Кмк в начале 16 гл. уж точно не место, она только запутает неофитов этим happen before. К слову в ней не так много объяснено и очень многое упрощено.
Вот из кишочков до сех пор помню показанные алгоритмы, типа неблокирующего стека и листа. Очень прикольные штуки.
>а оказалось это этакий обзор классов джавы
В ней еще годно классифицируют типикал канкаренси ошибки.
1) Потому что OIDC это стандартизированое расширение OAuth 2.0 для аутентификации, тогда как OAuth 2.0 предназначен для авторизации. Более того большинство компаний уровня гула и фейсбука юзают OAuth 2.0 для аутентификации своим личным нестандартным способом, как ты говоришь.
2) OIDC отличается от OAuth не access токеном а ID токеном.
Тогда что можно сказать про код снизу?
public class QWE
{
public static interface III
{
public int fi(int a, int b);
}
public static III i1= new III(){ public int fi(int a, int b){return a*b;} };
}
Потому что вопрос ебанутый: почему теплое если можно мягкое.
Я тебе ответит на корректную часть вопроса
>Нахуй нужен OpenID Connect,
Потому что OpenID Connect это стандарт, поэтому он нужен. Для стандартного протокола. Например берешь keykloаck и используеш для аутентификации с совместимымы клиентами, а не городишь свои велосипеды.
Велосипедность уже в том что ты хочешь access token для аутентификации использовать. А в нормальных схемах безопасности у токенов есть разграничения скоупов. Для получения минимальной инфы об пользователе в OpenID Connect используется специальный ID token
>Велосипедность уже в том что ты хочешь access token для аутентификации использовать.
Я не то, что хочу, у нас уже на проекте так сделано. В access_token есть id, имя и email юзера. И у нас используется keycloak.
А если юзер поменяет имя или емейл? Че вы с этими токенами делать будете? Я не понимаю нахуя пихать в токены неиммутабельную информацию.
По факту эти клеймы никак не используются (кроме id). Просто непонятно, почему так.
В чем вопрос? Код как код, можно лямбду использовать, вместо анонимного класса.
>не имеют конструкторов
Нахуя им конструкторы, если у них нет состояния? Может тебе абстрактные классы нужны?
В этом и суть, что в коде есть нечто похожее на объект какого-то класса: присутствует оператор new и имя со скобками.
Повторюсь, вопрос-то в чем? Ты это читал? https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
А хуй тя знат, нормальная ли это практика или нет. Это от тебя и твоего проекта тащемто зависит, только ты можешь ответить на этот вопрос. Не все блять на свете гуглится.
Если ты один лабаешь петпроект для себя, спроси себя: те как там вообще - норм на одном инстансе, не лагает? Мать жива? Что с ебалом, нормально? Если нормально - не усложняй, блять!
Если ты под кабаном - пиздуй к кабану и стрясай с него SLA: сколько в чатике у тебя планируется одновременно юзерков, сколько сессий открыто единовременно, как больно прилетит по ебалу за задержку доставки и.т.д., а потом уже прикидывай хуй к ебалу - нормальная ли это будет практика или нет...
А как в целом нормальные люди высчитывают, сколько ресурсов выделять? Вот у меня есть консюмеры, как понять, сколько консюмеров мне нужно и сколько им озу выделять? Я примерно даже не представляю рабочую нагрузку. Из какой пропорции исходить? На локалке тестить и прикидывать? Нагуглить сколько rps держится при таком-то количестве памяти такой-то хуетой? Сложно
Но я напоминаю что мы в джаватреде так что
Вот так с помощью нехитрых манипуляций можно превратить буханку хлеба в троллейбус.
Нуу не знаю анон. Вот у меня заебато это получалось, а тут, фе. Ноль оригинальности. Даже вложенности особой нету! И женериков! Ну вот куда это годится.
Когда тебя уже забанят, вниманиеблядский немощный петух которого в школе в унитаз головой макали. В жизни удовольствия больше нет, что опустился до засирания джава треда унылым говном?
А можно по делу без пуканья? Для меня это не самая часто встречающаяся задача и мне правда интересно
Тебя на собеседовании когда-нибудь спрашивали сколько воздушных шариков можно запихнуть в автобус?
Только в жопу
Через недельку две, пойду к психиатру. Можешь не переживать.
>Когда тебя уже забанят
Имхо, я никак не идентифицирую свои посты, не щитпостю, т.е. стараюсь на тему жавы всегда писать. Считаю ничего не нарушил. Ну если забанят, то ну.. Бывает.
Перечитывый 280 до тех пор, пока не дойдёт, как ты нарушил запрет на вниманиеблядство.
А они имеют на это право? Т.е. каждый кто делал плагины для идеи передал свое право на владение жидбрейнасам?
По поводу че делать.. Заходишь на сайтик плагина, качаешь архивчик, кидаешь в папку плагинов. Готово. Или впн включаешь.
Обновить идею через оф сайт, если это ультимейт без впн не сможешь, конечно есть кое какая лазейка, но вдруг закроют.
Да анон, я вот только-только сидел строчил что помощь больше не нужна, сам допёр на маркетплейс зайти и с впн скачать архив и уже в идеи поставить. Но тебе все равно спасибо за ответ!
По поводу обновы идеи тоже спасибо, сейчас попробую таким образом ее обновить, у меня ультимейт 2024.1.4 взломанный jetbrф, а вроде как уже 2024.1.6 есть
2024.2 последняя уже оказывается
Зачем качать через маркетплейс? Я имел ввиду напрямую на гитхаб плагина зайти, в релизы. Вот оттуда взять файл. Без впн можно.
Даже не подумал об этом, спасибо за наводку тебе, я еще совсем зелень
Нормальная, мы так в проде делаем, полет нормальный.
Лоадтест проведи и посмотри. Но на самом деле это все равно будут очень примерные данные, потому что профиль нагрузки прода на 100% изобразить невозможно. Да и в целом, если вдруг окажется, что к вам завалилось так много пользователей, что редис пукнул (что вряд ли случится), то ты всегда можешь перейти на редис кластер и масштабироваться сколько душе угодно.
2) чем вот же делать графику в java, если не awt/swing?
Чел... хотя бы кабанчика прочитай. Или ты никогда не проходил собес на систем дизайн? Чел...
>сешн сторадж,локал сторадж
Ну это фронтенд на уровне браузера. Достаточно любой фреймворк глянуть как он туда пишет
Метод ремов не работает? Вроде по исходникам удаляет ото всюда откуда можно.
Ничем, гуи умер давным давно.
Да примерно как ты говоришь так и делают. Есть публичные бенчмарки. Некоторые вещи можно самому побенчмаркать. Есть базовые эмпирики по типу "если ты знаешь что тебе предстоит делать пейсбук с миллиардом rps, можешь смело закладываться в асинхронный стек со старта", или те же самые четыре-пять-шесть девяток реданданси. Тащемто это вопрос больше к архитекторам, нежели к разрабам, так что те в другой тред.
Но если впадлу или ты одинокий двачер - всегда есть правило "keep it simple, sука".
Кто такой кабанчик
AWT это база, сынок. На нём всё построено.
очевидный кнут
Сейджвик.
Додстер выложил свой старый кринж на хабр.
Идея норм, непонятно только зачем было все в одном классе писать
Шизофрения
Тоже статейку написать что ли, на гитхабчике каком-нибудь, чисто как памятку для себя...
Через цикл можно.
Как правило, односвязные списки не передают право владения объектом ноды пользователю такого списка. По крайней мере в жабе.
Поэтому тебе просто в цикле надо взывать метод add(...), а вот детали реализации с созданием можешь оставить на себя.
джава всегда будет востребована, но джуны никому нахуй не нужны
Ну на следующем например будет доклад со сравнением фреймворков с тестами и анализ работы памяти в jvm.
>анализ работы памяти в jvm
У вас там местный шипилев обитает? Интересно. Жаль у меня подобного нет
Если пишешь на котле, то лучше то корутины код приятнее будет, ну а так, проблем никаких не встречал писал на вебфлюкс, когда корутин не было, разве что код ебаный, не читабельный
И как дела у джавы нынче с вс кодом? Плагины кто пилит, сам оракл? Спринг юзабелен? Меня очень напрягает завязка на софт жидбрейнс (еще до санкций напрягало).
Ну да. Я в вскод только на хаскеле пишу, ибо жидбрейнсы долбоебы и нишмагли лсп добавить. Но двачую вопрос, какого оно там. Мне жалко терять столько инспекций, они няшные.
Никаких проблем, пишу, гитпушу
Решил тут намедни влезть во всё это. И порвался скорее с инфраструктуры
Хочешь использовать несколько версий JDK и переключаться между ними при необходимости? Соси хуй и от силы есть SDKMAN, который убогий пиздец. Jabba не лучше
Разрабатываешь в корпоративном контуре за прокси? Изволь попердолиться с тем, чтобы накатить серты в cacerts, предварительно как-то раздобыв и выебав всем мозги
А про IDE это что-то.
Стулья: IDEA, VSCode, Eclipse.
IDEA последнюю на РАБотке хрен добудешь с поддержкой Spring (нужна же Ultimate). Да и никак не привыкну
VSCode надо пердолить (опять) и обвешивать плагинами. Тяжко
Eclipse пока не пробовал, но сомневаюсь, что не придётся делать кучу приседаний.
Билд тулы вроде окэй, но напряжно пердолить каждый раз доп.опции, чтобы, например, заскипнуть какой-нибудь из этапов жизненного цикла
Реквестирую подробный гайд, как облегчить себе жизнь на java.
>Хочешь использовать несколько версий JDK и переключаться между ними при необходимости?
sudo update-alternatives --config java
export JAVA_HOME=/path/to/java в .bashrc
А чем вы там на работе занимаетесь? Одним "пердолингом" больше, одним меньше. Или вы может рукой водите, так водите дальше, причему тут версии жавы. Пиздос жаваны бывают глупее пыхарей.
Я не этот чел. Просто мимопроходил и высказал имхо, что ручками подменять патх такое себе.
Ну так скрипт напишите в пять строчек для выбора
использующий
update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Вы программисты или таксисты..
У меня для этого есть direnv. https://direnv.net/
Писать еще скрипты какие-то.. Один раз прописал все экспорты и усе. Правда в жабе это не требуется.
>>79755
Ну и очевидно, это можно подцепить как плагин для вскода https://github.com/direnv/direnv-vscode
Я жеба пограммер, а не девопс. Срать я хотел на "проффесианолизм" в конкретно этой области. Руками писать экспорты при каждом вызове жабы, хаха, делать нехуй совсем что ли.
>Хочешь использовать несколько версий JDK и переключаться между ними при необходимости? Соси хуй и от силы есть SDKMAN, который убогий пиздец. Jabba не лучше
Даун, что мешает просто полный путь к джаве вводить?
https://www.baeldung.com/maven-java-version
Либо я тебя не понял и ты совсем что-то шизоидное с версиями джавы хочешь сделать
>Соси хуй и от силы есть SDKMAN, который убогий пиздец
Зачем на няшу гонишь? Его упрекнуть можно разве что в отсутствующей поддержке винды, не больше.
А вообще, если надо джавы свапать, функционал есть у идейки - она тебе их и скачает, и даст гуй чтоб переключаться.
А нахуя? Просто лишняя головная боль с поддержкой кучи кода.
Вот лучше бы пик добавил, но хуй.
Ну хотя бы утил методы будут удобными, а не какой-то хуйней слева.
А говнокод это потому что.. ?
настолько же насколько и в прошлом
>Ну хотя бы утил методы будут удобными, а не какой-то хуйней слева.
>А говнокод это потому что.. ?
Бугаенки наверни, он тебе объяснит почему утил классы зло.
Он неиронично предлагал заменить метод max() на класс Maxer.
Я слишком внушаемый.. Думаю не стоит мне такое читать.
>метод max() на класс Maxer.
Т.е. имеется ввиду, что надо делать обертки, со своим стейтом, внутри которых есть методы для получения вычислений над ним? Типа пика?
Возможно это и имеет смысл, но пока я вижу проблему, что слишком много оберток, что мб и похуй. А вторая проблема, что потенциально может понадобится N:N адаптеров между такими новыми "утил" библиотеками. Или тоже нахуярить кучу обреток..
Посмотреть бы в общем-то на какой-нибудь пет сделанный по таким принципам, поскольку я не очень понимаю в чем профиты..
Ты предлагаешь ораклам включить весь апач коммонс в свой штат и посадить их на зарплату?
Тебя даже вчерашний шторм не разбудил. Кучу лет уж как вместо java ee - jakarta. И оная кстати вполне себе жива в лице всяких кваркусов и микронавтов.
А что ей будет? Java EE, в отличие от спринга, проектировалась людьми, а не какими то культистскими бесоебами. Помрут контейнеры, падут стандарты, а референс-имплементации каких нибудь сервлетов или JPA будут жить вечно под капотом фреймворков.
>А говнокод это потому что.. ?
Забей. Просто это смещение парадигмы, не все такое любят. Щас время такое что выживают только смешанные парадигмы. Чистое ФП котируется только в академке, чистое ООП - вообще миф.
>>80404
>метод max() на класс Maxer.
>надо делать обертки, со своим стейтом, внутри которых есть методы для получения вычислений над ним?
Бугаенко - феномен своего времени. В 2017м году переложил функциональный подход на джавовые классы, назвал это правильным ООП, написал об этом несколько книг а потом катался по конфам и всех троллил. У него класс Maxer, это как функция Max :: [a] -> a, но вместо функции - класс. Аргументы функции становятся аттрибутами класса. Обязательно финальными аттрибутами - отсутствие сайд-эффектов в классе так же ценно как чистота функции в ФП. Вместо функциональной композиции - объектная матрешка ебанутой вложенности, и.т.п. Короче любо дорого было смотреть как джаваны горели с этого тролля.
Пал жертвой SJWшной сои во главе с Барухом. Good night, sweet prince.
Да,пусть делом займутся,а то версий джавы дохуя а профита ноль
>Пал жертвой SJWшной сои во главе с Барухом. Good night, sweet prince.
В смысле? Он вроде жив, здоров и по прежнему весьма упитан. И продолжает троллить на тему управления командой.
Его отменили и не зовут на конфы с тех пор. Правда с 2022 баребух и сам вроде отменился в РФ.
А так да, канал у него есть, интервью дает, рассказывает какие китайцы дунасеры и не хотят за идею овертаймить и фичалидить.
Неотключаемый AI assistant
Всратый новый UI
Новые баги в каждом релизе
Выпуск бесполезных фич вместо фикса старых багов
Чаю за AI. Такая неудобная хуйня, только мешается, а если предлагает что-то годное, через таб непривычный автокомплит.
Можно посмеяться над безработным пидарасом, выживающим в Амстердаме.
Хотя он даже руку Зеле не жал.
Его jug.ru анально огородил. Да и он сам как то уже не особо программистский контент поставляет. Раньше было лучше.
>>80674
>Правда с 2022 баребух и сам вроде отменился в РФ.
Ну - он по прежнемувстречается в чатах, и при любом упоминании Егора потешно плюется желчью.
По слухам, Егор успел весь программный комитет jug.ru плотно так заебать. Причем даже не по каким то ололополитическим мотивам, как Баруха пропалестинскими тейками, или сою кексизмом. Последней каплей вроде бы стало то, что он тупо вякнул на публику чето инсайдерское, что на публику идти не должно было.
>не хотят за идею овертаймить и фичалидить.
...но разве не именно этим они и занимаются?
Верно ли я понимаю, что происходит завершение работы main?
>Его отменили и не зовут на конфы с тех пор.
Может просто заебал, все таки организаторы хотят чтобы у зрителей было положительное впечатление от доклада, а не полыхающий пердак. Он в 2020 выступил на тимлидконф, от других организаторов, и больше его туда не зовут.
>Правда с 2022 баребух и сам вроде отменился в РФ.
Этот пидор никогда не нравился.
>все таки организаторы хотят чтобы у зрителей было положительное впечатление от доклада, а не полыхающий пердак
Как раз с этим у оргов никогда проблем не было. Егорка своим контентом почти всегда умудрялся собирать полный зал, а сами орги отмечали, что он впринципе годный и хорошо подготовленный выступатель на конфах и его доклады к продакшену готовить было проще всего.
Полыхающие пердаки были у всякой мимокрокской сои с твиттера, которая отказывалась выступать и быть с ним на одной конфе из-за его взглядов.
>1
>создано окно(через Frame и setVisible())
> почему swing?
У него более удачный дизайн. AWT многопоток, а свинг над ним спроектирован через эвентлуп и более понятно, что там и как робит.
>По слухам, Егор успел весь программный комитет jug.ru плотно так заебать. Причем даже не по каким то ололополитическим мотивам, как Баруха пропалестинскими тейками, или сою кексизмом. Последней каплей вроде бы стало то, что он тупо вякнул на публику чето инсайдерское, что на публику идти не должно было.
Егор могуч!
>У него более удачный дизайн. AWT многопоток, а свинг над ним спроектирован через эвентлуп и более понятно, что там и как робит.
Вот только этот ивентлуп почему-то называется java.awt.EventQueue. уж не оттого ли, что AWT тоже через него работает?
Нуу, это не совсем моя мысль.
Подозреваю, что хоть эвентзалупа по сути одна, в авт чисто в теории не обязательно через нее делать апдейты гуя. В свинге в документации четкий запрет на енто, а в JFX и исключение в рантайме может ебнуть.
Мне зп подняли на 20%, а в команду взяли нового джуна. Пока что не ощущаю, но от нейронок зависимость уже выработалась. Хз как я раньше работал.
Могуч - не могуч, но лор у него весьма занимательный.
А сам как думаешь?
1. Кому как - у всех разные требования, проекты, бюджеты, задачи и компетенции.
2. "Джуниор" - это не буквальное место работы, это просто такое выражение.
3. Ты просто java-программист. Не важно, 1 неделя в профессии или 25 лет в профессии.
4. Начинающий должен уметь делать САЙТЫ. Бекенд/фронтэнд - это уже специализация.
5. Начальника не ебёт что ты не знаешь, он сказал сделать сайт, а то что ты не учил фронтэнд - это твоя вина.
6. Если с первых дней уходишь в специализацию, это сделает тебя капризным работником, потому что обучать тебя никто не будет (ебись с этим сам как хочешь), тебе просто дадут задание и скажут вот до такого срока сделай. А то что не обучался для этого, всем абсолютно до пизды. Максимум спросят "ну что, как там сычев??? уже сделал??? чёт ты долго, зря мы тебя наняли..."
Это нейронка. В таком стиле ответы на вопросы вкатышей автоматически постятся в треде любых других языков. ML дауны из мейла вк развлекаются.
Пойди сам в банк и узнаешь. Есть те, кто берут. И есть те, кто не берут. По-твоему есть только один вариант - либо да, либо нет. А вариантов когда предположим сбер не берёт без военника, а тиньков берёт - не существует?
Я просто для примера сказал. Названия банков рандомные. Это всё надо вживую надо узнавать непосредственно на месте, а не в интернете.
Без военника уже два года никуда не берут. Знакомому скуфу с приписным пришлось пойти получать билет потому что как он делал раньше, пообещать занести доки позже, уже не работает.
Нихуя.
Вживую как раз тебе сходу все всё по закону будут просить и прогревать, и тока в инете тебе подскажут что тут можно припиздеть и может прокатить, тут можно надавить такой то статьей и тд
Не берут. В сбере там специальный человек уже после всех собесов проверяет твой военник и дает бумажку БРАТЬ ТЕБЯ ИЛИ НЕТ. Там еще написано (рекомендован к найму). Рофлил с этой хуйни
Я откосил по дурке в 20 году. Сбер, мкб, втб, рсхб сливают во время проверки от сб. С тиньком и альфой все нормальноЮ были оферы. Кроме банков после отправки анкеты для сб никакие компании не сливались.
>А какого хуя?
Приняли новые законы для работодателей и ебут если не соблюдать.
https://school.kontur.ru/publications/1818
Чел, я реально тот анон, который год назад вкатился в сбер. Сначала меня устроили через bell integrator, а сейчас перевели в сбер. И когда меня переводили, то там реально сидела женщина, которая выписала мне эту рекомендательную бумажку. + на созвоне с HR она меня спрашивала, есть ли у меня военник.
Вопрос про то, работают ли потоки java за счёт переключения контекста на уровне ОС/ядра или потоки java чисто внутреннее явление.
Причем тут переключение контекста?
Есть платформенные треды - они 1:1 к тредам ос. Есть виртуальные, они N:M. Есть M тредов ос, на них мапппится N тредов жавы. Как правило N > M.
Мне нужно как раз это и узнать.
1) какие треды в java?
2) если есть оба вида, то как их выбрать(какие флаги надо)?
Что тебе надо узнать? Я же уже написал.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Thread.html#ofPlatform()
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Thread.html#ofVirtual()
Вот на, читай.
Лахтаговно, вон из джаватреда.
>Сбер, мкб, втб, рсхб сливают во время проверки от сб
Ну как будто ничего и не теряешь, работал в 2 из 4, никому не посоветую, лютый кал.
Да где угодно, джава практически везде есть.
> я не хочу служить но и работать хочу
https://www.gosuslugi.ru/armydelay
Так то в аккредитованных конторах официальная бронь и от призыва на срочку и от мобки.
Нюанс - нужен непрерывный стаж от 11 мес в аккредитованных конторах, либо еще не прошел год после получения вышки.
Если ты попадаешь под призыв (нет военника), и при этом не вчерашний студент и не опытный анальник из аккредитованных контор - работодатель смотрит на тебя как пикрелейтед.
Пчел, бронь - это когда тебя ни при каких обстоятельствах не призовут в армию. Такая в айти есть очень мало у кого, и это не кодеры а что то вроде сисадминов в датацентрах и ключевых узлах связи.
Айтишникам дается отсрочка. Это значит что их просто будут призывать не в первых волнах, а когда уже прижмет.
Опять же в военное время по закону можно мобилизовать трудовые ресурсы. Будешь вместо крудов за соротыгу софт для дронов пилить. Не выполнил КПИ - уволили и на фронт.
И большой вопрос кто важнее в тылу - слесарь на таковом заводе или крудосервисный микродебил.
Офк, ты думал, это шутки? Работы и так нет, рынок перенасыщен и у твоих конкурентов нет справки из дурдома. Нахер тогда брать тебя? Я бы не взял. Никто бы не взял
Как они эту справку получат вообще, это же врачебная тайна, тем более для откоса хватит и лайтового рл. Ты точно не лахта? Может в айти еще и вообще всех откосивших не берут, ведь они больны, так или иначе.
Я думал конкурентное преимущество это твои навыки, умения, скорость обучения, частично опыт. Но справка?
Не умеет в хттп2 и ссл и написана через жопу с утечкой ресурсов. Как говорит мой ментор - "it's java duude:)))))"
Обычно в СБ сидят бывшие мусора/фсбшники, которые могут получить через связи любые сведения.
Ну это я так фантазирую, не знаю как там оно на самом деле.
Можешь погуглить вакансии/резюме сотрудников СБ. Обычно там будет фигурировать работа в органах, по понятным причинам
>>84229
Ну т.е. в работе где обычнвм делом является выгорание, депрессия, тебе ни в коем случае нельзя лечится у психиатра, ведь это справка? Которую могут получить из-за того, что это рфия и тайна в этой стране смешное слово? Какая же чушь, боже, что я сделал в прошлой жизни, что я родился тут..
Не забывай что ты живешь в ауешном паханате где все ставленники правительства это бывшие опгшники, а жизнь регулируется понятиями
Дебил, где ты тут слово дурка увидал? Психиатр. Не у психолуха же лечить, лол.
>Я бы держался подальше от людей
А я бы от нормисов, которые нихуя свою шизу не лечат притворяясь нормальными. Сколов тому пример. Еще куча новостей была с айтишниками, которые молоточками боньк боньк.
>>84303
Я надеюсь, что когда-нибудь смогу сбежать...
> Как они эту справку получат вообще, это же врачебная тайна, тем более для откоса хватит и лайтового рл. Ты точно не лахта? Может в айти еще и вообще всех откосивших не берут, ведь они больны, так или иначе.
А зачем ты вообще задаёшь вопрос, если на один из вариантов ответа начинаешь агриться, что это неправда и форс лахты? Чтобы тебя успокоили?
Я тебе по своему опыту говорю, со справкой сливают после проверки. Диагноз невроз, ничего тяжёлого
Дальше сам думай.
>>Сколов тому пример.
Ну так он же явно ебанат был. Такое впечатление что все кто наполеона изучают - ебанутыми маньяками становятся.
>>А я бы от нормисов, которые нихуя свою шизу не лечат притворяясь нормальными
В дурке не лечат шизу, там делают шизов менее опасными для общества, дают колеса или изолируют.
Так шилдт - это туториал джавы и документция по сути же. Если тебе это не понравилось, то типа... А че ты хочешь фундаментальнее? Почитай спеку тогда. Еще есть эффектив жава от блохи и книга с поездами от скуфца.
А чиво смешного? В 21 жаве перестали быть превьюшкой. То, что кто-то там ноет про синхронайзеды значения особого не имеет.
Мне еще недавно вообще разонравился ad-hoc полиморфизм, конкретно фича сводимости к наиболее общему типу. Это пиздец какое ограничение и очень мешает. Я хочу четкое разделение между конкретным типом и абстрактным, это смешение стало таким привычным, будто это норма...
Ну это-то понятно, но проблема остается.
Вот скажем у меня апишка, которая на каком-то этапе хочет выбрать определенный конкретный тип и будет использовать его в дальнейшем. Что-то типа Api<T extends Number>. Но если пользователь намеренно впишет Api<Number>, то ему будут доступны любые конкретные типы чисел. Но я хочу, чтобы допустим можно было вписать все листья "дерева" типа(Integer, Long...), но не его корень(Number, Object). Надо попробовать обобщить все свои осколочные знания по типам, жавы, может какая-то идея в процессе придет...
Если ты попробуешь сделать что-то подобное на работе—тебе сломают ноги и загонят гвозди под ногти
У тебя куда то смешались нахуй кони-люди. Что ты собрался вообще вписывать в <T extends Number>?
Со стороны звучит так, будто ты дженериками пытаешься решать проблему, отличную от той, что решают обобщенным программированием.
Да все просто достаточно, по крайней мере с моей т.з. Вот смотри на пик. Любой параметр типа, по сути переменная для типа, потому мы в принципее можем передать этот самый тип функции и посмотреть, что выйдет в итоге.
Вот сначала сделаем функцию api, где один параметр типа один. Потом пробуем передать этот самый тип. Сначала Int, потом Integer. А потом Num и ой, пососем хуйца на этом этапе, поскольку есть четкая разница в виде kind между можно сказать интерфейсами и их имплементациями.
А вот в жабе мы вполне все это можем провернуть и превратить параметр типа в какую-то непонятную хуиту и скажем в месте, где я не хотел, чтобы были одновременно и Double и Integer я это вполне получу. Пока не знаю как с этим боротся, надо подумать, тем более я не спал давно.
>>86157
Да, это решение, в какой-то степени, но я-то хотел функцию, которая работает для всех существующих конкретных типов чисел, а не только для Int. Мне придется каждый раз дополнять это через перегрузку методов какую-нибудь.
Все, допер как сделать. Если повесить генерик на интерфейс, причем генерик самое себя, то тк имплементации в общем-то не существует, то и невозможно будет обобщить до чего-то.
Т.е. как бы мы наследуем, но дженерики не могут никак это использовать. Каеф.
> нашей любимой жабы
Ловите шиза.
> Сам я смог найти либо ебаный литкод, либо курсы от яндекса
Хуле там искать? Ты что вообще практировать хочешь?
Алгоритмодрочильню? Так чем тебя литкод и литкод-подобные платформы не устраивают?
Разработку? Дрочи свои петпроекты.
>А есть какие-нибудь фундаментальные книги по джаве, где разбирается каждый пук, но при этом написанные не Шилдтом? Я 10 лет назад из-за него так и не стал вкатываться в джаву, вкатился в другой язык, щас вот решил потыкать джаву по фану, снова скачал Шилдта и понял, что всё равно его высеры принципиально понятнее не стали.
Нахера тебе каждый пук, если тебе просто потыкать по фану?
Бери любую книгу курс и начинай учить, захочется деталей как работает ХХХ - читай доку, исходники, статьи в интернете.
Те нахуй выспаться надо чел, у тебя крыша едет.
>А потом Num и ой, пососем хуйца на этом этапе, поскольку есть четкая разница в виде kind между можно сказать интерфейсами и их имплементациями.
Ты нахуй ебу дал проводить такие аналогии. Ты вообще в курсе что Num - тайпкласс епта, и что само выражение :t @Num смысла не имеет? Нет такого типа. По той же причине ты не сможешь обьявить функцию типа Num -> Num -> Num -> Num, а вместо этого должен городить нечто вроде (Num a) => a -> a -> a -> a. Потому что это те не какой то там тип данных который ты можешь пихать как тебе заблагорассудится, это сущность на порядок выше.
И это хаскель. В джаве аналогов тайпклассам тупо не существует. Джавовые интерфейсы даже близко не про это. Поэтому брось это глупое занятие которое ты здесь >>85737
затеял, и используй перегрузку методов как порядочный джава-свиненыш.
> у тебя крыша едет
Это дефолт
>Num - тайпкласс
>Нет такого типа
Эм.. Но это тип... Просто его kind не совпал. Или по твоему вот [] - не тип, а вот [Int] совсем другое дело..
>Джавовые интерфейсы даже близко не про это
А по мне близко. Главное отличие, что в жабе нет kind-ов. Всё..
>Поэтому брось
Рррря, нихачу. Тем более я вроде сделал, че хотел уже. Но надо все таки записать какие-нибудь мысли обобщения по женерикам, ибо картинки в этих тредах со временем умирают(
>Или по твоему вот [] - не тип, а вот [Int] совсем другое дело..
[] как раз не тайпкласс, в отличие от Num. Поэтому к нему базара нет.
Набери :info [] и :info Num, и сравни вывод.
>А по мне близко. Главное отличие, что в жабе нет kind-ов. Всё.
Нихуя себе - "все". А тебе мало что ли?
В джаве и интерфейс и класс - это типы, а наследование или имплементация интерфейса компилятором всегда расценнивается как сабтайпинг, из-за чего вся твоя изначальная постановка вопроса просто рушится нахуй. Если аргумент метода у тебя - тип интерфейса, все без исключения его имплементации согласно сабтайпингу являются легальными типами для подстановки туда. Вот хоть ты тресни.
В хаскеле же тайпкласс - это не тип в привычном понимании. Ты не можешь обьявить функцию от Num (Num -> Num). Ты можешь обьявить разве что функцию от типа, поддерживающего Num (Num a => a -> a). Тайпкласс скорее сам - как функция, только такая, которая оперирует типами.
>сабтайпинг
Ну вот про что и речь была в моем самом первом посту. Что идет смешение нескольких полиморфизмов. Это конкретно ad-hoc, а есть также параметрический в виде генериков. И вот получается хуйня какая-то. Когда ты делаешь вроде бы сигнатуру вида "a -> a -> a", думаешь, что к тебе придет одинаковый тип во всех трех случаях, но можешь получить разные типы в итоге: "Ineger -> Double -> Float" ведь все отсабтайпилось в "Number -> Number -> Number". Ну вот я и пытался по крайней мере сделать так, чтобы оно не сабтайпилось в наиболее общий тип..
>Тайпкласс скорее сам - как функция
Ну наверное... Получается ошибся, це не тип, эхх. Хотя мне что-то трудновато провести четкую линию между кайндом и тайпклассом в этом случае. По идее кайнд выше, тип над типами, все дела. Тем более, что у тайпкласса есть видовая принадлежность - Constraint. Но тут непонятки возникают, вроде и то и другое по каким-то свойством выделяют группы типов.. Сложно, ещё книжечки в планы добавим.
Ну это уже проблемы реализации. Там все куда проще. Навесил sealed, прошелся паттерн матчингом - гатова.
>В целом это действительно какого то рода решение
Няшно. Хотя мне порой грустно смотреть на свои прошлые решение, какое-то неприятное чувство, что становлюсь только глупее со временем.
Ну если силед с паттерн матчингом, ближайший аналог в хаскеле - data-типы, типа всяких Maybe. Но тогда тебе и ебля с дженериками не особо нужна - работай знай от базового типа, и дело с концом.
Ямл и жсон имеют совершенно разные задачи.
>Те к питонятам, это у них там пиТорч и все веселье.
Думаешь, если перекатываться в AI/ML - то это 100% надо ещё на питон переучиваться, без вариантов?
Ведь java, как и всякие питоны, поддерживает использование dll/so, что позволяет сделать достаточно быструю работу.
Да библиотек дофига, тот же deeplearning4j. А почему нет большого охвата - не знаю. Так что присоединяюсь к вопросу.
> А почему нет большого охвата - не знаю.
Мл дауны не просто так получили своё имя. Питухон славится своей пригодностью для дебилов (что не правда, нужно как раз иметь недюжинные мозги чтобы следить за всем за чем следит компилятор в джаве, но дебилы его любят из-за того что хелло ворлд писать там проще), поэтому и привлёк млщиков.
Сейчас в айти основной показатель это конкуренция. Срыночек не сработал (да сколько-ж можно-то! мне в шругнувшем атланте сказали другое!), зарплаты везде 300к, но где-то конкуренция 1 на 100, а где-то 1 на 1000.
мать может и не будет, а вот ты.. сам подумай, вся твоя бессмысленная злоба в мою сторону, служит одной цели - привлечь моё внимание. но зачем из раза в раз его привлекать? я на самом деле хз, но думаю это как с дерганьем косичек: просто проблемы с выражением симпатии.
Потому что считают эту инициативу коммерчески невыгодной?
Нахуя им? Время упущено. Писать убийцу пиТорча в 2024м - "успех" примерно такого же порядка, каким был "конкорд" для сони.
Хотя после вальхаллы и новой нативщины может и высрут ченить, кто их знает.
Че ты так горишь каждый раз? Критикуешь - предлагай другие темы. Что еще в этом треде делать - шарпеев гонять, да слушать нытье вкатунов? Этот челик хотя бы потешный в своих загонах и заблуждениях, в отличие от тебя.
Или тебя так смешно корежит потому, что ты не шаришь в хаскеле, но хочешь вставить свое ахуенно важное мнение? Bruh, у меня для тебя плохие новости тогда.
Мимо
Тебе не стоит пытаться в семёнство.
Приведу пример:
ZIO.foreachParN(4)(names) { name =>
ZIO.bracket(openFile(name))(closeFile(_).orDie)(parseWeatherData)
}
.flatMap(analyzeWeatherData)
Эта штука читает, парсит и анализирует некий список файлов в 4 потока. При этом, если в процессе всего этого возникает ошибка, всё аккуратно завершается с гарантированным закрытием всех файлов. И всё это потокобезопасно. (Представьте объём кода, который делает аналогичную вещь на чистой джаве.)
Короче, сложно так сразу объяснить, насколько ZIO облегчает жизнь. Но, может, кто-то из здешних обитателей уже знает про ZIO.
Почему не то? Ты объясни хоть, какую конкретно задачу решает это ZIO. Просто снижает объем кода и все? Ну ахуеть преимущество, тебе б в питон.
Какой ти смысленый ума ума спалсил файлик ума ума и дазе зяклыл за собой ну иди сюда умнитька похвалю
> Эта штука читает, парсит и анализирует некий список файлов в 4 потока
И делает это дольше чем любой другой язык. Ебучая сКАЛа только полсекунды запускаться будет.
Это ты не знаешь, что такое абстракция, раз тебе для открытия файликов нужен эксклюзивный инструмент. Покорёжился с шарпоолигофрена.
Чем он тебя так уязвил?
Удобный сахар вызывает зависимость, поэтому в бэке котлин постепенно наращивает позиции, благо с жабой он прекрасно уживается прямо в одном проекте.
И это уже несколько лет так, если еще не сталкивался - вопрос времени.
Если сам целенаправленно не ищешь и если не андроид девелопер - околонулевая.
А почему в вашей зио нечистые функции можно использовать в чистых? Или я чет не понимаю...
Чем тебя try with resources нативный не устраивает? Да и вообще под капотом там транзакционность обеспечивается? Вместо 5 строк, лень 10 написать, ну и ещё 3-5 на кэшпулы при желании? Зато не тащить в проект бесполезную либу уменьшая время и вес сборки
Они все чистые и возвращают совокупное описание функциональных эффектов вместо выполнения самих эффектов.
В ZIO ты сначала строишь "программу" из функциональных эффектов (путём вызова всяких ZIO-"операторов", по факту, функций). И только в самом конце, когда эта программа построена, у неё обработаны все ошибки и для неё предоставлены все зависимости (всё это гарантируется статической типизацией языка - и это одна из главных фишек), ты эту программу отдаёшь на выполнение.
Короче, если во всё это вникнуть, штука оказывается очень полезная, поскольку позволяет без особого напряга писать надёжные, масштабируемые приложения. Но, похоже, не на джаве.
>Они все чистые
У тебя там открытие/закрытие файла, управление потоками, обработка исключений. Чет вообще не вижу чистоты, если честно. Там такой трансоформер монад страшный по идее должен быть... Ты типа его спрятал, показав ~1% кода?
Да и сама скала impure, типа я вообще глянул, pure языков раз два и обчелся, мех.
>Чем тебя try with resources нативный не устраивает?
Оно меня не то, что не устраивает. Просто в ZIO, насколько я вижу, реализовано много всего полезного - тут тебе и railway-oriented programming (приятно, когда есть happy path и почти нету control flow), тут тебе и DI, тут тебе и non-blocking concurrency и ещё много чего, и всё в одной либе без посторонних зависимостей.
>Да и вообще под капотом там транзакционность обеспечивается?
Читай про Fibers и STM по ссылке ниже.
https://www.baeldung.com/scala/zio-intro
Там кое-что написано про ZIO, если кому интересно.
>У тебя там открытие/закрытие файла
Тот пример про файлы я из одного видоса стянул, поэтому могу только предполагать что там имелось в виду. Скорее всего, никакие файлы там в ф-ях openFile/closeFile не открываются и не закрываются, а эти функции просто используют какой-то "нечистый" сервис для открытия/закрытия файлов в качестве зависимости. Но сами ф-и openFile/closeFile - без сайд эффектов и просто возвращают описание того, как они используют этот нечистый сервис. Что-то в этом роде.
Т.е. ты смотрел видосик, загорелся идеей и прибежал в тредикю хвастаться, мол смотрите какой хидден гем?
> без сайд эффектов и просто возвращают описание того
Ну действительно, открывают и открывают файлы, какой же это сайд эффект. Ну и в любом случае смешивать pure код с нечистым хуйня какая-то. Обычно же максимально сокращают количество IO и душек в коде, примерно как с unsafe в коде. А тут по сути хуяк и все в большую монаду ZIO погрузили и работаем с этим. Странный подход в любом случае.
>Т.е. ты смотрел видосик, загорелся идеей и прибежал в тредикю хвастаться, мол смотрите какой хидден гем?
Ну, на самом деле, я - миддл+ фронтэнд + BFF и уже где-то полгода пишу бэкэнды на Effect (аналог ZIO для Typescript), и очень этим Effect-ом доволен.
Но, в целом, фронтэнд меня подзаебал, а самая популярная по вакансиям в бэк у нас - джава. Вот я и интересуюсь, нет ли в джаве чего знакомого, что бы позволило свести боль при написании приложений к минимуму.
>Ну и в любом случае смешивать pure код с нечистым хуйня какая-то.
На самом деле нет. Этот подход называется Functional Core, Imperative Shell. И он хорошо работает. Говорю из личного, пусть и небольшого, опыта.
Ядро с логикой (слои с логикой для Entities и логикой приложения) состоит из чистых, легко тестируемых функций, некоторые из которых возвращают описания функциональных эффектов, формируя тем самым "программу" (никакие эффекты при этом не выполняются). А на границе приложения (в самом внешнем слое) перед выполнением этой "программы" инжектируются всякие грязные зависимости (ввод-вывод и прочее), которые, опять же, легко замокать для интеграционных тестов.
Короче, всё это, похоже, не для здешних анонов.
Если ты отложишь сайд эффект до какого-то момента, он не перестанет быть таковым.. Ты же мне пытаешься втереть какую-то дичь все накидывая и накидывая баззвордов. Бесит.
И да, это не для жавистов, зря ты сюда пришел.
>Если ты отложишь сайд эффект до какого-то момента, он не перестанет быть таковым.
Ну так фишка ZIO/Effect - в том числе в этой отложенности. ZIO/Effect позволяют тебе убрать код, непосредственно вызывающий сайд эффекты (в т. ч. асинхронные), из кода с логикой, тем самым делая код с логикой чистым и легко тестируемым.
Посмотри что ли видосик про ZIO.
https://www.youtube.com/watch?v=mkSHhsJXjdc
Может, наступит просветление.
>накидывая и накидывая баззвордов
То, что для тебя - баззворды, для других - архитектурные подходы, используемые изо дня в день. Что тебя смутило, я не пойму?
Бля, мне вот в жаба треде неиронично абсолютно похуй на скалу и что там под капотом реализовано в отдельно взятой библиотеке, чтобы заходить ради твоей шизофрении и читать что же там на баелдунге, пока всё что ты описал реализовывается буквально за полчаса - час не спеша, для этого уже нативно буквально всё есть и нужно просто собрать в одном месте
>свести боль при написании приложений к минимуму
И где тут боль? Пока описанное тобой - это сахарный диабет, зайди в загончик с сисярпистами, позоонаблюдая
>подход называется Functional Core, Imperative Shell. И он хорошо работает.
Ровно до момента пока не придёт кабан кабаныч с непреодолимым желанием сделать вещь, которая в архитектуру никак не вписывается
>>87803
>ZIO/Effect позволяют тебе убрать код, непосредственно вызывающий сайд эффекты (в т. ч. асинхронные), из кода с логикой, тем самым делая код с логикой чистым и легко тестируемым.
До момента пока не сломается что-то в подключенной библиотеке лулв или не потребуется что-то дополнительно, либо внезапно окажется, что под капотом какая-нибудь сессия закрывается прям по ходу выполнения и т.д. и т.п.
Короче всё твоё нытьё ничего на реальном бэковском проекте не стоит, там задачи гораздо сложнее стоят
>Ядро с логикой (слои с логикой для Entities и логикой приложения) состоит из чистых, легко тестируемых функций, некоторые из которых возвращают описания функциональных эффектов, формируя тем самым "программу" (никакие эффекты при этом не выполняются). А на границе приложения (в самом внешнем слое) перед выполнением этой "программы" инжектируются всякие грязные зависимости (ввод-вывод и прочее), которые, опять же, легко замокать для интеграционных тестов.
Не вижу ничего, чего нельзя было бы повторить обычным спрингом.
В любом случае, "миддл+" уже не должен бегать по интернетам с обосранной жопой и кричать, что без библиотеки Х у него коды не пишутся. За версту воняет непрофессионализмом.
>Если ты отложишь сайд эффект до какого-то момента, он не перестанет быть таковым.
Расслабься. Это чисто функциональная история, она везде выглядит одинаково. Суть не в том, чтобы сайд эффектов вообще не было - это тупо невозможно, банально потому что сам комплюктер - один сплошной сайд эффект с мутабельными диском, памятью, сетью. Никто не говорит что сайд эффектов быть вообще не должно.
Суть в том, чтобы максимально отделить сайд эффекты от логики. Когда ты откладываешь сайд эффекты до самого упора, выясняется что управлять ими становится на порядок проще.
Да, в джаве по историческим причинам так не принято, хотя не то чтобы невозможно. Но потихоньку функциональные фичи просачиваются и в джаву. Те же стримы - по сути своей с источником данных они не делают нихуя ровно до тех пор, пока ты не дернешь терминальный оператор. Это история про то же самое.
Мимо, не оправдываю ZIвуна - скорее это очередной промытка на хайпе пришел повыпендриваться.
Не слушай этих долбоебов, но всё же если хочешь скалу - то иди в какой-нибудь Тинь на скалу
>Чем он тебя так уязвил?
Ненавижу динамическую типизацию + сахар НЕ упрощает разработку, а только усложняет.
>5
Ебало сложно имаджинировать.
>и если не андроид девелопер
Ну там котлин меньшая из проблем.
>Ненавижу динамическую типизацию
Хуйню несешь. В котлине статическая типизация. Что тебя вообще навело так подобную мысль? Пиздани, что еще в хаскеле она динамическая, ведь там вообще можно типы явным образом не писать. Прям как в жс.
>сахар НЕ упрощает разработку, а только усложняет.
Хуйню несешь. В 17 жаве завезли дохуя полезного сахара.
главная твоя проблема в твоем плохом знании и неуверенности