>>3540291 Какой смысл? Один пример ничего не докажет, да и ты всегда на все будешь говорить врети. Тем более спрашивать это в треде, где мало кто пишет на языке где много сахара. Иди в котлин тред, если интересно.
>>3540291 На джаве - создал объект и заполнил данными. Всё логично. На котлине вызвал очередную непонятную функцию val user = User().apply { name = "Pidor" age = 30 } Ещё лучше блять val user = User("Pidor", 30).also { println("User created: $it") } Геттеры и сеттеры под капотом, ну спасибо ебать user.name user.name = "Pidor blya" Ой, а откуда метод? Может это какой-то стандартный метод String? Нихуя. Это любитель скотлина где-то там его насрал. fun String.capitalize(): String { ... } myString.capitalize()
>>3540458 Тебе сколько лет? Нормальный код, все понятно. apply можно не использовать, передавай аргументы сразу в конструктор. С экстеншенами надо аккуратно, но так же можно засрать джава проект статическими методами, так что так себе доеб
>>3540684 так это даже не фича, это просто функция, которая принимает лямбду. Котлин хорош тем, что в нем кейвордов очень мало, пожалуй только suspend добавляется к джаве, а больше ничего на ум и не приходит.
>>3540797 >ваши паттерны Паттерн всегда где-либо будет. Явно или неявно - другой вопрос.
>геттеры-сеттеры Частично соглашусь, что можно писать код без геттеров и сеттеров. И в теории такой код может стать быстрее хотя бы по той причине, что изменение публичной ссылки напрямую(без вызова геттера/сеттера) не требует затрат на вызов метода.
>>3541063 >И в теории такой код может стать быстрее хотя бы по той причине, что изменение публичной ссылки напрямую(без вызова геттера/сеттера) не требует затрат на вызов метода Только Егорка топит за то, чтобы все поля в классе объявлять final, чтобы их вообще изменить нельзя было после создания.
>>3541063 > такой код может стать быстрее Да-да. Губами быстрее, ведь jvm не умеет инлайнить методы. Невероятные блять иновации. И типичная экономия на спичках. Почему у каждого второго жависта, руки блятб чешутся, чето пооптимизировать
Асинхронщину изучать надо? Сложная штука, чёрт побери. А реактивщина - вообще какая-то хуйня непонятная. В реактивщине отдельный тред делает только кусочек своей работы типа? Стрек-трейс состоит типа из пайплайнов или как?
>А реактивщина - вообще какая-то хуйня непонятная. Если вкрадце - реактивщина == асинхронщина + backpressure. Эдакий умный listener, который может сказать эмиттеру "горшочек - не вари", и тот - не будет.
>>3541493 Особо смысла нет, только если тебе интересно. Эта штука была раньше популярна в андроиде (RxJava), до корутин из котлина. Ничего сложного там нет, нужна такая же база, как и для написания обычного многопоточного кода. Но вся сложность в функциональном стиле - куча разных операторов, которые полностью никто не знает и юзают только маленькое множество этих операторов.
На бэке есть реактивная популярная либа Reactor, которая тесно связана с Spring WebFlux, но проектов, где такое используется очень мало. Рациональнее такое учить только тогда, когда попадешь на такой проект.
Виртуальные потоки/котлин корутины/горутины из котлина - это +- все одно и то же. Но главный плюс в них - это простота, потому что код выглядит как обычный код, а не лапша из реактивных операторов.
В снг на джаве в 99% пишут блокирующие сервисы, к ним вся это история с асинхронщиной практически неприминима
>>3541520 Спасибо за развёрнутый ответ. Думаю тогда отложу пока эту затею из изучением реактивщины, т.к. времени на это нужно не мало, а использовать его я вряд ли где-то буду. Ну или пройдусь по базе, чтобы было представление хотя бы.
>>3541605 А че, все non-blocking алгосы - это автоматом асинки? Я думал это строго спизженная из мира фп парадигма. Не очень удобно, когда один и тот же термин используется для разных вещей.
>>3541652 Это вообще про другое. Неблокирующие алгоритмы - это когда у тебя есть две версии данных - старая и новая - а потом ты через атомик делаешь свап указателя и дальше все работают с новыми данными. В классических алгоритмах кто-то один берет блокирвовку, остальные стоят и ждут под дверью туалета. Асинки тут вообще не при чем, асинки - это про экономию трех копеек на потоках, по сути просто модная хуита без какой-то реальной пользы.
>>3541715 Точно, решение проблемы 10к. А эти неблокриующие алгоритмы, их и только их можно использовать например в корутинах. Типа блокировка все разрушит. Поскольку там своя, крутая асинк блокировка - await. Которая позволяет что-то типа switch-context, но в рамках вм. Так, а реактивщина тут тогда что?
Хочу написать свой простой бэкэнд клона твиттера с микросервисами. Тут подошел бы и монолит, но сейчас модно делать микросервисы. Как можно спроектировать систему? Я хочу сделать так. Будет центральный сервис для работы с твитами, там follow, лайки. Микросервис авторизации с jwt токенами. Микросервис мультимедиа для работы с картинками (например, аватарки пользователей). У каждого микросервиса своя база данных, как утверждается в одном микросервисном паттерне. Через очередь RabbitMQ информация о пользователях и картинках переходит в центральный микросервис, так как надо связать твиты с юзерами и реализовать follow.
Пойдет такая система? Как можно улучшить?
Фреймворк для работы с БД будет, наверное, spring data jpa, а не MyBatis, потому что будут простые сущности со связями
Тут будет сложно, потому что доступ к ресурсам (картинки) должен быть при помощи jwt токена (только для авторизованных пользователей) и надо, чтобы сервис авторизации выдавал токены, которые может проверять другой сервис
>>3543511 >Микросервис авторизации Есть готовые. >Микросервис мультимедиа Также есть готовые. Зачем писать аналог amazon s3? >Через очередь RabbitMQ Зачем здеся очередь?
>>3540172 >>3540176 Короче чекнул я эту блокировку доменов жидбрейнсов. Енто дает возможность впихивать любой ключ, который был отозван после его выпуска. Таким образом можно использовать поюзанные юзерами ключи, но ограничение в том, что их надо будет искать каждый раз где-то. Т.е. должен быть человек, который их купил и слил соответсвенно. Не очень удобная хуйня.
Поэтому я таки еще поискал и нашел реальные исходники этого малваря. То был форк. Плюс также нашел плагины. А то меня всегда смущало, что там не один жарник, а целых пять и хуй пойми что они все делают. Насколько я теперь могу понять главный из них - это power.jar. Он подменяет сертификат что ли. Т.е. сменяет доверие с жидбрейнсов на то, что нагенерил ты, ну или сайты. Дальше мне было интересно, в теории, ведь этот малварь просто может не запустится без интернета, вдруг он подменил сервер проверки на свой и будет ровно также долбится до победного, пока не подтвердит, что все норм. Но судя по всему ему похуй, нормально работает в полностью изолированной сети (пик).
Я еще думал сделать вайт лист по доменам, но лишь понял что я пиздец не шарю в теории сетей. Это 7 лвл по сути, ты можешь ресолв днса заблочить, но если ты уже знаешь ip до домена, то на 3 уровне нет блокировки. И пакетик легко пролетит. И вот тут хуй знает как фильтровать, типа че распаковывать пакет вплоть до http и смотреть че там в хедере? Но тебе даст? В итоге забил, проще белые ip сделать, чем велосипед уровня ркн писать. Вот - https://pastebin.com/gWVakps4
И решил знания по сетям подтянуть, хз зачем, это зона девопсинга, но мне интересно чет стало. В итоге пару сайтов неплохих нашел, мб кому-то тоже интересно будет. http://www.tcpipguide.com/ http://linux-ip.net/
>>3543753 8.8.8.8 еще. Да и не факт что у таких больших сайтов ip один.
Я думал еще попробовать впихнуть небольшой сервер, aka nginx, который сидел бы на https://plugins.jetbrains.com/ и преобразовывал бы все обращения к себе в обращения в https://downloads.marketplace.jetbrains.com/ при условии, что спереди есть file, иначе просто обращался бы к внешнему plugin. Тяк можно будет без впнов качать плагины прям внутри жидеи. Ну по идее.
>>3543859 В идее можно указать прокси. Если он применяется для всех вызовов, в том числе и проверок лицензии что маловероятно можно все сделать через него.
>>3543895 А зачем собственно, если у меня ide в контейнере? Я могу на уровне ос настроить. Да и даже без контейнера как-то спокойнее/надежнее на уровне ос все сделать, чем доверять уровню приложений. У меня больше сомнений вызывает, а будет ли это работать и как лучше организовать все енти редиректы. Плюс сертификаты для https надо бы сделать.
>>3543511 >Тут подошел бы и монолит, но сейчас модно делать микросервисы.
Если ты это делаешь лишь затем, чтобы потом ссылку в резюме пихать, то здесь можно и закончить. Потому что на вопрос:
>Пойдет такая система? Как можно улучшить?
Тебе никто адекватно не ответит.
В этом вся бадяга с петоводингом микропенисов. Петоводить их - тупо бессмысленно, разве что ради того, чтоб апишки всяких штуковин пощупать (но для этого и проектировать особо ничего не нужно, равно как и в резюме постить бессмысленно). Ну еще разве что в качестве зачотного задания в унике или на курсах - но тогда тебе с твоим вопросом - к преподу.
У васяна на мамкином пособии все равно не наскребется ни бюджетов ни железа на то, чтобы их охуенная архитектура раскрылась и показала себя в действии, ни леммингов в нагрузку, под которой архитектура оправдала и окупила бы себя. Поэтому такие петы и не котируются никем - хуй ли толку от того, что васян вкорячил меж двух процессов кафку и попукивает туда какими то жсонами, если с тем же успехом эти два процесса у себя на компе он мог бы схлопнуть в один, кафку между ними выкинуть нахуй, и получить прирост по отзывчивости и уменьшение потребления ресурсов на триста процентов, с сохранением всех функциональных фич?
А между тем правильность архитектуры именно от таких вещей на практике и зависит. Пропускная способность. Футпринт. Количество девяток аптайма. Стоимость обслуживания, сопровождения. Вот это вот все.
В силу обстоятельств перекатываюсь с C# на джаву. На руках есть крупный бекендовый проект, который требуют взять в поддержку. Есть вопросы
Зачем нужен спринг? С виду какой-то мусор десятилетней давности, к тому же необновляемый, Как понять вообще, как это работает? Как будто у меня случайные куски кода запускаются, хвостов вообще не найти.
Почему так много xml-кода и аннотаций? Нельзя что-ли на джаве писать?
Есть шансы, что checked exceptions исправят или хотя бы введут структуры на стеке?
Есть шансы, что async/await завезут? На каждый http вызов гору кода писать надо?
Как устроены дженерики? Что такое стирание типов?
Нахуя вы транзакции открываете интерцептерами? Вы совсем ебанулись?
Это норм, что половина кода на джаве, а половина ка котлине? Как собирать проект правильно, у меня собирается градлом, затем надо другую часть собирать мавеном
>>3541519 >На бэке есть реактивная популярная либа Reactor, которая тесно связана с Spring WebFlux, но проектов, где такое используется очень мало. >Рациональнее такое учить только тогда, когда попадешь на такой проект. Я полтора года работал на проекте с вебфлаксом, и вообще ничего про рекативщину не изучал. Просто оборачивал ответы сервиса в Mono и хуй с ним.
Решил перекатиться в жабу. Это просто пиздец. Нахуя вам 100 систем сборки, каждя из которых работает через одно место? В этом даже разобраться невозможно
>>3545916 >>3546681 Так и быть, раскрою карты - вся эта сложность и нелогичность жава-экосистемы создана абсолютно искусственная. На жабе пишут серьезный банковский софт и чтобы откровенные дебилы не смогли попасть в компанию и набедокурить придумали спринги, грэдлы и прочие XML-конфигурации. Глупо было бы думать, что это всё нужно для написания типичных микрачей с rest-ручками, записью в бд и пуками в кафку. В середине 10-х пытались даже сделать ещё более жесткую фильтрацию внедряя Scala, но эпидемия ковида оказала серьезное воздействие на ментальные способности населения и пришлось возвращаться обратно на джаву.
>>3546752 Технически, это все еще одна система сборки. Просто в очередной раз кто-то все переусложнил, это не вина градла, а вина разрабов. Ровно также можно нахуевертить и на шарпе и где угодно еще.
>>3546767 >Легаси какое-то ебаное? вроде нет, просто у нас разные проекты на разных версиях котлина, некоторые обновить невозможно. Поэтому весь котлин собирается своими скриптами.
Джава проекты мавеном собираются, плюс на всё это есть сборочный оркестратор, который может симулировать запуск моков, чтобы конкретный проект в отладке запустить.
Такая же хуйня. кроме старожил никто не может проект собрать. Код пишется через хитрый паттерн, в который чтобы войти, нужно его самому написать. Уволить меня невозможно, так как без меня хуй кто код разберёт иразвалится просто нахуй. А вы так не делаете?
>>3546728 >Джереми писал, что если каждый десятый проект переписывают с джавы на сишарп, то обратного пути уже нет. Доказательств этого, как обычно, никто не привёл.
>>3546728 >Джереми писал, что если каждый десятый проект переписывают с джавы на сишарп, то обратного пути уже нет. Доказательств этого, как обычно, никто не привёл.
>чтобы откровенные дебилы не смогли попасть в компанию и набедокурить придумали спринги, грэдлы и прочие XML-конфигурации
Ага. Квадратно-гнездовая хуйня, которая изначально проектировалась и внедрялась для того, чтобы хайрить не дорогущих и редких академиков, а всякое лоускилльное пост-ЕГЭ-шное чмо, способное только на зубрежку. Спринг как барьер против дебилов - придумал тоже...
>В середине 10-х пытались даже сделать ещё более жесткую фильтрацию внедряя Scala, но эпидемия ковида оказала серьезное воздействие на ментальные способности населения и пришлось возвращаться обратно на джаву.
А че уж не на джаваскрипт, лол?
Скала сдохла по очень простой причине - потому что вышла тройка, несовместимая с двойкой. Все. Примерно с выходом тройки весь публичный дискус вокруг скалы и сходит на ноль. Такой трюк мог прокатить с питоном 15 лет назад, у которого порог входа ниже плинтуса. Но не с функциональным языком, которому дали небольшой шанс войти в кровавый энтерпрайз, и который этот шанс проебал.
>>3547516 Какой нах ф-шарп... Окстись, шарпей, в каждой жопе затычка. На скалу хоть немного, но вакансии были. На эту поделку вакансий никогда не было и нет по сей день, хоть сам язык и неплох.
>>3547309 Все движется в сторону ФП. В сторону ФП следовало двигаться еще в нулевых, когда многопоточка стала мейнстримом. Но хули делать - инертность и необучаемость самой прогрессивной профессии на свете, которая вдовесок требует от своих специалистов быстрой и постоянной переобучаемости, не знает дна.
>>3548220 Я думал это в основном потому, что фич именно для ооп особо-то и не придумаешь: часть недоступна из-за идеологии, а часть из-за обратной совместимости, другая очень сложно внедряется. А вот фп целая парадигма, которую можно потихоньку подпиливать и себе внедрять. Просто странно считать, что фп прям во всем лучше ооп и последнее просто тупиковая ветвь развития.
>>3548220 Оно начало двигаться еще до твоего рождения, да все никак. Единственную полезную фичу из ФП - замыкания - давно реализовали во всех языках, остальное дрочение никому не нужно.
Да кого когда либо волновала идеология, пф. Все современные языки - мультипарадигмальная солянка. Чистого ООП нет нигде, ибо нахуй не нужно.
Дело даже не в ФП и ООП. Холивар ФП/ООП просто всем привычен, потому что парадигмы на слуху. ИМХО, этот холивар - просто частный случай более общего холивара - "императивное vs декларативное программирование". И общий холивар ИМХО гораздо интереснее частного.
Пока проблем с concurrency не существовало, а многопоточку дрокали больше в академической среде, нежели в проде, императивка была целиком и полностью ок. Не ок она стала тогда, когда оказалось что одна глобальная переменная, пошаренная меж двух независимо исполняющихся потоков одного процесса с одном адресным пространством - это источник проблем, который в реалиях императивной разработки решается только через жопу, мемори-модели, самодисциплину разрабов и божью помощь. Декларативные подходы (включая тот же ФП) ту же проблему решают на порядки проще, но ценой отказа от устоявшихся практик прикладной разработки.
Последнее, видимо, оказалось ключевым шоустоппером на тот момент. Тратить бабло на переучивание своих крепостных с нуля капиталюги никогда не будут - лучше заплатят за мемори модели. Так родилась и расцвела джава.
>Просто странно считать, что фп прям во всем лучше ооп и последнее просто тупиковая ветвь развития.
Сам этот холивар туп по своей форме. Разница меж ФП и ООП на самом деле лишь в том, что используется в качестве first-class citizen. Все. Остальное - лирика и реалии на местах.
Что же касается более общего холивара - всю дорогу разработка двигалась в сторону все более и более высокоуровневых подходов. От ассемблера к фортрану и си, от сей к плюсам, от плюсов к джаве, и даже в джаве превалируеит спринг, который, хоть и тяжело язык повернуть чтоб назвать его так, но декларативен. Декларативка - это просто следующий шаг в этой эволюции. Все само туда придет рано или поздно.
>>3548259 >Да кого когда либо волновала идеология Ну архитекторов джавы. У них очень много решений именно на основе идеалогии. Типа нет перегрузки операторов, нет именнованных параметров и тд и тп. Да даже сама вот эта всепронизывающая обратная совместимость часть идеологии жабы. Ты не прав, я хуй знает, но мне кажется если ты почитаешь пару жепов и последишь хотя бы за развитием языка, то станет понятно, что там очень много вот таких вот решений. >ту же проблему решают на порядки проще Ты хоть знаешь как именно они её решают? Ну просто IO её скидывают и все. А там все та же мемори модель и прочее. Гениальное решение, ничего не скажешь. Ну может как с parallel стримами ты можешь распаралелить чистые функции ну и проблему 10к решить. >всю дорогу разработка двигалась в сторону все более и более высокоуровневых подходов. Я не знаю, если смотреть в историю, то фп родилось примерно тогда же, когда появилась машина тьюринга. Тут нет развития, что мол вот, эта следующая ступень или что-то подобное. Фп всегда было просто паралельным путем.
>>3548273 >Типа нет перегрузки операторов, нет именнованных параметров и тд и тп
Да приебались вам всем эти вшивые перегрузки операторов, господи... Идеология гришь? Да нихуя. Знаешь почему на самом деле в джаве нет перегрузок в-попу-раторов? Потому что разрабы тех времен сполна нахлебались этого говна в плюсах, и не захотели хлебать его дальше в джаве, вот и вся идеология. Джава во многом создавалась с оглядкой на опыт плюсов. И кто шарит, не станет их осуждать.
>Ну просто IO её скидывают и все. А там все та же мемори модель и прочее.
Пиздец ты душный. А ты каких чудес то ожидал?
Ну расскажи как ты бы делал, раз тебе такое неинтересно.
>Ну может как с parallel стримами ты можешь распаралелить чистые функции ну и проблему 10к решить.
Как ее решают остальные? Обычно - через асинхронку, наебнув дополнительный уровень абстракции в виде зеленой многопоточности, асинк/эвейтов или еще какой асинхронной лапши. Но в жосткой императивке такие мувы всегда имели побочки: асинк-эвейты "красят" функции, а асинхронная лапша - это трудноотлаживаемая параша по сути своей.
А тем временем декларативные подходы уже by-design сводятся именно к этому - к тому чтоб "наебнуть миллион слоев абстракции" никогда не было проблемой для разраба. Поэтому под декларативкой ты и не встретишь такую проблему. Do-нотации похуй, какие вычисления в цепочку связывать - синхронные или асинхронные.
>Я не знаю, если смотреть в историю, то фп родилось примерно тогда же, когда появилась машина тьюринга
Разделяй кровавый энтерпрайз и науку. Так то и многопоточка появилась задолго до нулевых. Просто она особо не нужна была никому до появления многоядерных процов.
>>3548313 >не захотели хлебать его дальше в джаве Это и есть идеология. Что вот, наша жавочка не потерпит эти ваши старые практики. Но и новые тоже, хуй вам, а не сахар. >А ты каких чудес то ожидал? Нет, ты просто так вкусно описываешь, что вот, в фп такииие решения. Что диву даешься, смотришь как там на деле, ну литерали жаба, только структурного канкаренси нет в жабке пока еще. А если еще посмотреть на историю, то JMM и вовсе самая первая из подобных моделей, получается жаба впереди всех вообще в этом плане. Невероятно. > никогда не было проблемой для разраба Если бы еще абстракции не протекали... >Разделяй кровавый энтерпрайз и науку. имхо, фп практически нет в энтерпрайзе. Зато вот именно оно двигает науку, по всяким теориям типов и прочей поеботе, которую потом языки типа жабы забирают себе как готовое решение.
Хера притянул за уши. Ты б еще Гойца фашистом обозвал. Жесть.
>Но и новые тоже, хуй вам, а не сахар.
В джаву без пяти минут паттерн матчинг завезли - чего тебе еще надо? Вечно один бугурт с двачей. И те же двачеры потом еще жалуются что не берут их никуда. Правильно, хули, работодатели пессимистов не любят.
>Если бы еще абстракции не протекали...
И к чему это было? В императивке они как раз и имеют тенденцию течь как суки. Что так то ожидаемо - многие абстрактные концепции на императивку изначально ложатся криво.
>Зато вот именно оно двигает науку, по всяким теориям типов и прочей поеботе, которую потом языки типа жабы забирают себе как готовое решение
Теперь тебя куда то в идеологию повело - капиталистическую пропаганду вон начал цитировать. Ты уж определись - мы что обсуждаем то? Идеологию, историю, или парадигмы?
>>3548377 >фашистом обозвал. Жесть. Эээ, ну может неудачный подбор термина, ну я думаю ты понял, что я имел ввиду. >И к чему это было? А ты ну.. Писал когда-нибудь на фп языке-то? Вот допустим возьмем самый абстрактный из абстрактных. Я вот когда еще начинал пробовать делать на нем всякое обнаружил интересную вещь - я не могу оценить насколько перфомансен мой код. Я даже больше скажу, я не могу сказать, а вот это вот чудо вообще tailrec для ghc или нет? И вот знаешь как именно оценивается производительность в хаскелле и как именно оптимизируются программы? Правильно, заходим в гит ghc и смотрим исходники компилятора и вот под него и его оптимизации пишем программы, если нам нужен перфоманс. Более того, из-за ленивости там обнаруживаются проблемы с thunk. Тоже та еще поебота, которую приходится решать черти как и очень, очень трудно отслеживать. Так вот, мы говорим про область, которая доавляют в это еще больше пиздеца - многопоточку. Она существует исключительно ради перфоманса. Я просто блять не представляю, как ты будешь оценивать вот все это абстрактное чудо, если когда-нибудь будешь писать. Но да, абстракции в фп не протекают, главное в это верить, броу. >капиталистическую пропаганду Не понял. >чего тебе еще надо Я просто констатирую факт, что не завозят фичи не только потому, что они устарели, но и новые в том числе, что мол они временем не проверены, а вот это будет костылем и вообще у нас есть более заебатое общее решение (как было с интерполяцией строк), поэтому ждите.
Ну мы его в основном для скриптов используем и если надо накидать прототип. Удобно, что собирается тем же компилятором и не надо ебаться с градлом и прочей поеботой
>>3548381 >Вот допустим возьмем самый абстрактный из абстрактных. Я вот когда еще начинал пробовать делать на нем всякое обнаружил интересную вещь - я не могу оценить насколько перфомансен мой код.
Пошел с темы на тему скакать. Выше ты чето насчет протекания абстракций затирал, а сейчас каким то образом на производительность вышел.
По теме - да, у декларативки есть такой побочный эффект. Ну так всегда так было. Всегда при переходе с низшего уровня разработки на высший ты терял толику контроля над тем, что ты делаешь с железом. Так было с сями при переходе с ассемблера, так было с джавой при переходе с сей. И всегда во все времена был аргумент, схожий вот с этим вот твоим "я хз че мне там мой компилятор/рантайм нагенерил, а вдруг он нагенерил мне говно, не верю".
Я как то на собесе в нулевых, будучи тогда еще пиздюком-стажером, со своим ментором сходил на первый собес в роли интервьюера. И там был дед, который забавно рассказывал, как он героически соревновался на ассемблере с сишным компилятором, и по итогу проебал ему и сдался. И не он один так делал - в стародавние времена многие так развлекались. Но компилятор все равно победил.
>Я просто блять не представляю, как ты будешь оценивать вот все это абстрактное чудо, если когда-нибудь будешь писать.
Твои проблемы. На меня то че пенять?
>Я просто констатирую факт, что не завозят фичи не только потому, что они устарели, но и новые в том числе
Да расслабься уже. Я почти на 100% уверен что в конечном итоге вы выклянчите у гойца эти многострадальные операторы. Завез же он питоняшам короткий мейн, в конце концов. Станете ли вы после этого меньше ныть и бугуртить? Скорее всего нет.
>>3547895 Я сам шарпомуха. Я уже шесть работ сменил с начала карьеры, и нигде не было ни одной строчки на фшарпе. Даже, прости г-ди, вижуал бейсик встречался, а фшарпа нигде не было совсем.
>>3548273 >>Да кого когда либо волновала идеология >Ну архитекторов джавы. У них очень много решений именно на основе идеалогии. Типа нет перегрузки операторов, нет именнованных параметров и тд и тп. Так тут вопрос двое не в перегрузке операторов, а вообще в их определении. Почему я могу через плюс сложить два числа, а две матрицы не могу? Это тупо, нельзя ставить идеологию во главу угла. Именованные параметры вообще по идее должны быть идеологически одним из столпов ООП, ведь методы это не функции, где аргументы порядком определяются, это вызов команды с данными, а данные сами как объект. У объекта же нет порядка полей и методов.
>>3549281 Адекватный лид такое говно не пропустит на ревью. А плюс б - это всегда сложение двух чисел и только, ты читаешь код и сразу понимаешь, что происходит. В плюсах наелись этих ебаных операторов, хватит. По этой же причине в сишарпе нет макросов, чтобы малолетние долбоебы не высирали свой синтаксис.
>>3549233 Насколько я понимаю, они не хотят вводить слишком инвазивные и общие решения, которые радикально изменят кодовые базы. Типа вот начнут использовать тот же оператор сдвига для in/out https://en.cppreference.com/w/cpp/io/cout.html и все, конец света случится. И поэтому они вот пишут ( https://openjdk.org/jeps/401 ): >In the future, this programming model will support new Java Platform APIs, such as classes that encode different kinds of integers and floating-point values, and new Java language features, such as user-defined conversions and mathematical operators for domain values. Но также, они не хотят вводить решения, которые слишком костыльные и не вписываются в существующую кодовую базу, а также решающие всего одну задачу, т.е. ad-hoc или сахар иными словами. Вот например ( https://mail.openjdk.org/pipermail/amber-spec-experts/2024-April/004106.html ): >In the course of using this feature in the `jextract` project, we did learn quite a few things we didn’t already know, and this was conclusive enough that it has motivated us to adjust our approach in this feature. Specifically, the role of processors is “outsized” to the value they offer, and, after further exploration, we now believe it is possible to achieve the goals of the feature without an explicit “processor” abstraction at all! This is a very positive development. Воот, как-то так. >>3548781 Ну я хз, по моему тот же sql проще оптимизировать, чем фп языки. >вы выклянчите Он же не сидит итт, не думаю.
>>3549334 >Адекватный лид такое говно не пропустит на ревью. На джаве не пропустит, конечно. Это будет ошибка компиляции, азаза. >А плюс б - это всегда сложение двух чисел и только, А строк? Напомню, в математике есть операция сложения строк, только она означает "или", а конкатенация — это умножение. >ты читаешь код и сразу понимаешь, что происходит. Ох ты ж блин, у тебя как будто у разных классов не бывает методов с одним и тем же названием. Просто делай сложение для типов, для которых очевидно, что оно означает. > В плюсах наелись этих ебаных операторов, хватит. Я больше 12 лет пишу на шарпе, и только один раз видел ебанутое использование операторов — в клиенте эластик сёрча. Всё. Зато неподдерживаемый говнокод без каких-либо перегрузок операторов я встречаю регулярно. Ну реально, ради качества кода нужно было запрещать совсем другие вещи. > По этой же причине в сишарпе нет макросов, чтобы малолетние долбоебы не высирали свой синтаксис. Блин, там опенсорсный компилятор. Форкаешь и перехуячиваешь синтаксис. Да и инструментов кодогенерации в дотнете полно. Можно просто полный пиздец наворотить прям в рантайме, и кстати, один такой пример я видел.
>>3549344 >Ты 12 лет пишешь на сишарпе и не знаешь, что строки надо складывать через StringBuilder? Ты из епама, что ли? Две строки быстрее и эффективнее складывать через плюс. >>Просто делай сложение для типов, для которых очевидно, что оно означает. >А потом получается джаваскрипт, где тоже все "очевидно". Нет, не получается. Ещё раз повторю, что дурацкое использование операторов я видел только один раз, во всех остальных случаях значение использования всех операторов было совершенно очевидным. Никто не делает оператор умножения массива интов и булеана.
>>3549345 >Никто не делает оператор умножения массива интов и булеана. Умножить вектор на скаляр - это валидная операция, кастануть булеан к инту 0/1 тоже, как и инт к булеану в ифах. Ну а че удобно же. В итоге получается джаваскрипт, где a + b может давать что угодно.
>>3549350 Слушай, а почему для конкатенации строк и сложения примитивов используется один и тот же оператор? Будь последовательным и введи для конкатенации например ++. Как тебе идея?
>>3550120 >Почему на Comparable не завязали операции сравнения?
очевидно, чтобы использование такого вызова найти было невозможно.
Долбоёбы джависты, не могут отдельные методы писать, им обязательно захуевертить всё в интерфейс Invokable, ValueProvider, Mapper, Mediator, и прочую поеботу, чтобы потом умного из себя строить
>>3549350 >>Никто не делает оператор умножения массива интов и булеана. >Умножить вектор на скаляр - это валидная операция, Да. Но вот произведения векторов уже два, поэтому нельзя. > кастануть булеан к инту 0/1 тоже, как и инт к булеану в ифах. Нет. Нельзя имплицитно конвертировать булеаны в числа и обратно. Это принципиально разные типы. > Ну а че удобно же. В итоге получается джаваскрипт, где a + b может давать что угодно. Проблема джаваскрипта как раз в неявной конвертации всего во всё по не очень корректным правилам. Такое разрешать нельзя. Ну или надо как в перле, где конкатенация строк через точку, а сложение как раз только для чисел. Хотя нет, не надо.
>>3550120 А там где ты это нашел разве не написано? Наверняка там какая-нибудь чушь, про то, что воот в comarable возможно 0, поэтому это poset, а вот наш ordered - это total order. Совершенно другое.
>>3541519 А теперь следи за руками - почему на эти корутины всем пох Кто работал на большом проекте с реактивщиной, тот знает, что это неподдерживаемое говно становится - его нельзя читать, его нельзя расширять, его нельзя дебажить, и сколько туда народу не вкидывай, он только хуже становится. Но тут происходит самое интересное - реактивщина не нужна в 99,999% проектов. Смысл ее появления был в том, что мы не могли масштабироваться и надо было выжимать максимум ресурсов из многоядерного проца (что и происходит на мобилах сейчас). Но у нас во-первых есть уже армы по 200 ядер и во-вторых горизонтально масштабироваться с балансерами можно как угодно. Да, 100 concurrent потоков не вытянет дохлый сервак, но ты одной кнопкой делаешь 10 серваков по 10 потоков и не ебешь себе мозги этими колбеками. Если прям очень надо, то теперь у тебя есть вирутальные потоки - сурпрайз сурпрайз, почему его сделали обычным императивным кодом
>>3551904 Виртуальные треды тоже надо уметь готовить, как и корутины. Если ни кому не нужен перформанс, почему сейчас го на лютом хайпе, там горутины и nio из коробки
>>3551919 Мм, твое мнение имеет место быть, только во всех бигкеках, где я работал, выбить доп ресурсы себе - это пиздец огромная задача на месяцы. Потому что когда у тебя один твой пет проект, то изи поднять хоть 10 сервисов, это копейки. А когда у тебя десятки тысяч сервисов и у каждой команды майндсет, как у тебя, то это выйдет в круглую сумму. Бизнес умеет считать деньги получше тебя. Плюс железки щас подорожали из-за параллельного импорта и всех этих приколов.
>>3551924 1. написать толковый код с многопоточкой, потом отревьюить, потом оттестировать - на это времени больше уйдёт и соответственно обойдётся дороже 2. по деньгам будет однохуйственно т.к. тарифицируется утилизация cpu. если один инстанс будет усираться на 100% и 10 на 10% то это плюс минус одни и те же деньги
>>3552063 Ты самый умный, а вокруг дураки и ничего не понимают, проходили.
Лишние треды - это лишняя память в первую очередь. Лучше утилизировать по максимуму, потому что если у тебя куча реплик, то их ещё надо поддерживать системе деплоя, на это тоже тратятся ресурсы. Смотри шире.
Сейчас асинхронщина с помощью корутин и горутин пишется очень просто, можно даже не вникать, как работает под капотом и всё будет работать четко, поэтому го и на хайпе - нанимаешь 1000 мидлов и они пишут максимально примитивный код, который ебет по перформансу блокирующие скуфоджава решения в очко, при этом нет лапши из реактивных операторов
>>3552183 реплики (инстансы) регулируются не деплоем, а в кубере на раз с помощью какой-нибудь хуйни.
ну у нас как вот - ночью нагрузка околонулевая - один инстанс. в 9 часов утра - штук 15. автоматом скейлится горизонтально. всё наглядно, всё видно охуенно даже самому тупому девопсу. а вот запрограммировать такую логику на гошечке конечно можно, но оно не будет так наглядно да и тестировать сложновато.
>>3552189 Кубер - это и есть система деплоя. Понятное дело, что всё настраивается какими-то чартами. Больше инстансов - больше работы для системы деплоя (мониторинг, дискавери и т.д.) Вот сейчас у вас в час пик поднимается 15 инстансов с блокирующим подходом. С неблокирующим подходом вам бы условно хватило 3-5. А если бы у вас был голый пхп, где каждый хттп реквест - это не просто отдельный поток, но и отдельный процесс, то думай сам. Вот в чём и вся разница. Хз с чем ты споришь, это очевидные вещи.
Понятное дело, что переписывать на корутины или вообще на го нет особого смысла, если бизнес все устраивает. На го переписывали как раз таки пхп проекты
>>3552217 Браток, у нас Quarkus, у нас всё летает. Поднималось бы 3-5 на горутинах (корутинах), но какой ценой? У нас многопоточка внутри инстанса + разные инстансы. Получается 2 уровня вложенности, если можно так сказать. Обычной девопсине это слишком сложно будет такое, да и типовому крудошлёпу тоже будет сложно такое поддерживать.
Ну это ИМХО всё конечно, пока консенсус у нас такой. Твоё мнение тоже уважаю.
>>3552183 >максимально примитивный код, который ебет по перформансу блокирующие скуфоджава решения в очко Это в теории. А на практике эти твои мидлы накрутили опыт и насрали горутинами так, что сервер надо рестартовать раз в сутки, а то память утекает нахуй. В итоге код на блокирующих вызовах работает быстрее, потому что ядро писали не дураки.
>>3552347 Чёт вспомнилось как майки насрали этими асинками и у них калькулятор не работал, лол. https://youtu.be/Z0KvEzgNzDc Ну главное помнить, что знать ничего не надо, а работает твоё говно или нет, проблема юзера
>>3552369 Я тоже думал, что это хрень какая-то, но вон проверил. Как он говорил, возможно там в отдельный тред запихивается таска и если она длится больше скажем 10 секунд, то все, делается вывод, что этот график невозможен и финито ля комедия. Вопрос возникает почему же такой по всем бенчмаркам крутой язык рисует график на порядки медленее дефолтного жс? Возможно проблема не в инструментах, а в руках тех, кто ими пользуется, хмхм. Хотя с другой стороны, это те, кто создали этот язык, эту платформу (uwp), кто как не они знают лучше, как им пользоваться?
>>3554677 Тоже нет. Если бы государства так легко можно было уничтожить... Все будет также как прежде, просто поймут, что байка про ядерку хрень и ядерное сдерживание перестанет действовать.
>>3554477 ну, геймдев это не микросервисы. по факту просто разбирайся, как деплоить свою хуйню в облаке через какой-нибудь CI, а там и микросервисы поймёшь
>>3554671 Наоборот, дс не тронут ну никак) потому что там бабки, и все это понимают, как бы там кто не относился, но торговля идет с Москвой, а дальше уже как то там куда нибудь. Пезнут по какому нибудь приграничью, и то подумают. Паритет работает, и проверять есть ли ядерка ил нет, никто не захочет
Я делаю LRU кэш, у меня есть список объектов в java HashMap, доступ к которым по ключу у меня почти всегда за O(1), так же эти же объекты хранятся в LinkedList, мне нужно взять этот объект из HashMap и передвинуть его с середины LinkedList в начало LinkedList, если бы у меня был самописный LinkedList я бы просто взял и поменял next, но как это сделать во встроенном в java LinkedList?
>>3555170 Вопрос в том, можешь ли ты добраться до элемента в линкед листе за O(1). Т.е. технически тебе надо было бы хранить в хэшмапе еще линку на ноду, тогда это было бы осуществимо. Иначе, допустим если бы ты проходился итератором по этому листу, то можно было бы ремовнуть https://docs.oracle.com/javase/8/docs/api/java/util/ListIterator.html#remove-- , а потом добавить вперед элемент.
По моему проще хуй на это забить и использовать банальный ArrayList и хранить индекс. Что ты там сэкономишь на линкед листе не совсем ясно.
>>3555390 Удаление всегда O(1). Как она вообще может быть линейной? Добавление тоже O(1): > The add operation runs in amortized constant time Просто там хитрят, но энивей.
>>3555394 >Удаление всегда O(1) Удали мне элемент из середины массива за константу >The add operation runs in amortized constant time Это из-за того, что у тебя удваивается массив, поэтому каждый элемент при удвоении массива ты вставляешь два раза (в старый массив и новый). То есть вставка n элементов в массив с удвоением = 2*n = O(n) >LinkedHashSet Там используется как раз таки двухсвязный список, а не массив
>>3555399 >Там используется как раз таки двухсвязный список, а не массив Так подходит или нет?
Я просто думаю, что ты хуйней занимаешься, делать кэши в языке, где есть gc какая-то хрень. Ну переведешь ты объекты из молодого поколения в старое, теперь будет требоваться fullgc и stw. Ну, заебись че.
>Удали мне элемент из середины массива за константу Ну ладно, ты прав. Думал там в теории, можно как с выколотыми точками, но это что-то к деревьям уже ближе и ребалансировке. >Это из-за того, что у тебя удваивается массив Ну и? У тебя он вообще планирует удваиваться-то?
>>3555403 Хм, ну извени. Люблю тупить в мелочах. А вообще, насколько я помню, в этом LinkedHashMap не только связный список, но и массив есть. Учитывая, что она наследник HashMap..
>>3555418 Ну массив там как раз таки для реализации обычной хэшмапы, да, но значение - это не просто значение, которое ты туда положил, а нода линкедлиста с after и before указателями и самим значением, ты так и писал
Посмотрел, как в джэве реализован LinkedHashMap, там есть LinkedHashMap.Entry, который наследуется от HashMap.Node, получается LinkedHashMap.Entry это как бы двумерный связный список, там 3 указателя: after, before - это для порядка вставки next - это следующий элемент в рамках бакета Они решили сэкономить на ссылках и объектах, но из-за этого LinkedHashMap наследуется от HashMap и там прям код жестко связный, хотя LinkedHashMap мог бы просто хранить инстанс HashMap и только управлять связным списком для поддержки порядка вставки
>>3555571 >и там прям код жестко связный Тебе-то от этого ни горячо ни холодно должно быть. Ты же не собираешься творить какую-то грязь и лезть в приватные методы..
К нам в айти отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные шарпогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал: - Это же Абстрактная фабрика! На чём ты кодил до этого? - На Джаве. - Жабапидор! - в один голос заорали все 20 человек. - Жабапидор! Жабапидор! Жабапидор! Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать жабапидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев: - Жабапидор! В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и жабапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох жабапидор даже дело заводить не стали.
>>3554477 Бамп вопросу что ли. Я просто когда читаю материалы по разработке на спринге, то это в 99% случаев будут микросервисы. Как-будто на монолиты вообще уже всем насрать. Меня немного смущает момент, что у меня в голове уже какое-никакое понимание есть, что такое эти ваши микросервисы, а про монолиты нормальные я не знаю нихуя. А ведь это тоже отдельный мирок по-сути. Или я вообще не прав, что я у себя в голове их настолько кардинально разделяю и границу куда более размыта, чем мне кажется?
>>3558260 Чего ты хотел - хайп по микропенисам стоял с десятилетие подряд, и вот только-только сошел на нет. А сейчас монолиты ИМХО наоборот переживают ренессанс - тот же спрингокульт щас жостко хайпует с темы под названием "модулит (modulith)". Имечко то какое выдумали, ебаный рот...
>А ведь это тоже отдельный мирок по-сути
По сути, программная инженерия подохла мучительной смертью, а на ее трупе пирует недоинженерия в лице программистов на ямле (которых в конечном итоге убьют промптовики). Поэтому и говорить о разработке некому. А между тем каждый из микропенисов - так или иначе, но своего рода монолит.
>функциональный код оказался быстрее кода с использованием списков, но медленнее кода с использованием массивов, еще и памяти жрет больше всех It's over. Millions must use OOP.
>>3558288 Монолиты умерли, чел... Везде на собесах теперь спрашивают про паттерны микросервисов, про DDD, про ограниченные контексты и всю эту муть. Ну и конечно же про кафку и асинхронное взаимодействие. Сейчас еще Temporal много где начали использовать и его тоже спрашивают на собесах.
Модульные монолиты в теории может и хороши в некоторых кейсах, но на деле все рано или поздно превращается в классический монолит с сильной связанностью кода и приходится нанимать целую команду, которая будет его распиливать на нормальные микросервисы.
>>3558288 >программная инженерия подохла мучительной смертью, а на ее трупе пирует недоинженерия в лице программистов на ямле Это уже какая-то шиза, чел...
>>3558260 >>3554477 Если ты до этого вообще вебом/бекендом не занимался, а пилил например всякие игрушки или вообще десктоп приложения на swing поддерживал, то начинай с изучения того, как работает монолит, как работают базы данных, транзакции, уровни изоляции, деплой, observability, трейсы, логи, вся хуйня. Это прям фундамент, особенно все что связано с sql и базами данных. В целом это и есть основа бекенд разработки нынче. Просто напиши монолит с базой, логами, трейсами и мониторингом. И задеплой это в докере/кубере в каком-нибудь облаке или VPS.
Если ты это все уже знаешь на хорошем уровне и проделывал не раз, то переходи к микросервисам и распределенным системам в целом. Там много всяких подводных камней, особенно во всем, что касается отказоустойчивости.
ребят, это пиздец нередко мониторю java по всяким рейтингам и, несмотря на то, что язык мне нравится, стопаюсь в его изучении из-за ебучих рейтингов например, тиобе показывает, что java щас ваще нахуй на 4м месте и за последние ~6 месяцев упала на 1.2% в рейтинге как отстраниться от этой хуйни, если меня пугает, что я щас изучу язык и прогадаю с ним, не найдя даже джоб оффер
да и вообще, стоит ли обращать на такую залупу как "рейтиг" внимание? ибо pypl index от github показывает джаву на втором месте до сих пор, даже несмотря на откат -1.5 % за год
>>3557845 >Борисов А он какое-то отношение к разработке еще имеет? Мне кажется он последние лет 10 только языком чесал и зарабатывал деньги как клоун на конференциях. Хотя безусловно спринг потрошитель в свое время у него хороший получился.
>>3559079 Сам язык не особо ценен, выбирай любой популярный в проде (разве что насчет С++ я бы был осторожен) и изучай ООП, паттерны проектирования кода, базы данных, распределенные системы, микросервисы, девопс итд итп. А язык это дело десятое, потом если что легко перескочишь на питон/голанк/раст или что там популярно будет. В нормальных местах никогда строго на один язык не завязываются.
А так на джаве огромное количество всякого помойного легаси во всем мире написано и нужны гребцы, которые будут поддерживать все это еще много лет или даже десятилетий.
А есть возможность того, что джава ударит по трендам и выйдет в топ 3, а то и топ 1, исходя из улучшений в новых версиях?
Возможно ли такое, что добавят что-то, что еще сильнее упростит джаву, чтоб всё больше людей выбирало ее для изучения из-за простоты, как выбирали раньше питон?
Что скуфаны, готовы на го переписовать все ваше протухшее говно или еще нет Без рофла, 4 года опыта, пособесился и ахуел от просевших зп, 200к галера позвала на собес, требования - строить хайлоад, на собесе ебали вопросами, чуть ли не ракету надо строить из говна и палок, 200 к бля, до сих пор в ахуе
>>3559212 2 собеса за неделю налутал обернул свой опыт джавы в го и почекал рынок По джаве у меня если собес в месяц есть, то считай успех Ну и личное, на го мне приятнее писать и собесы легче потому что нет ни спринга этого обоссаного ни скуфоебанатов которые считают, что если ты не знаешь как резолвить транзакцию в транзакции или как Security Context передать между потоками, то ты не настоящий разраб, а лох.
>>3559215 >собесы легче потому что нет ни спринга этого обоссаного ни скуфоебанатов которые считают, что если ты не знаешь как резолвить транзакцию в транзакции или как Security Context передать между потоками, то ты не настоящий разраб, а лох Ну и в голанке собесы разные бывают. Могут до усеру задрочить каким-нибудь concurrency и потом попустить тебя на знании кишочков горутин или планировщика, про которые они вчера прочитали. В целом это не специфика голанка, а вообще всех собесов. Насчет спринга в целом соглашусь. Я рад, что в голанке его нет и проекты бустрапятся с нуля и никаких фреймфорков в принципе не существует.
>>3559219 Был пока только на 1 собесе, второй на следующей неделе, оба скринига прошел, по вечерам около месяца игрался, написал пару микропенисов, нагрузил их и дал в кафку 3000 mps~ фоном (эмуляция + батчи). Настроил графану и прометус, миграции (что бы было что сказать на собесе). Ну и фоном теории немного, там на самом деле учить особо не чего, каналы да модель рутин, посмотреть как дефер работает и к слайсу привыкнуть, все.
>>3559218 Мне в начале карьеры удосужилось поработать на легаси джава проекте, там был роутинг либа и либа для sql, все. Я тогда плевался и хотел на спринг к норм пацанам, ныл много. Как иронично сложилось, но с опытом почему-то пришло понимание, что спринг хуета, а тот проект был не таким уж и плохим
>>3559073 >Везде на собесах теперь спрашивают про паттерны микросервисов, про DDD, про ограниченные контексты и всю эту муть.
Ой, да-да-да. А еще спрашивают про алгосы и конкарренси. При этом на парктике это нифига не значит, что ты будешь работать с чем то сложнее реквест-тредпула на своих крудах заблеванных. Гейткип собесов сначала осиль, а потом уже и говори за то, как монолиты мертвы, лол.
>Модульные монолиты в теории может и хороши в некоторых кейсах
Хуйня, на самом деле. Костыль для квадратно гнездовых культистов, травмированных микросервисными подходами.
>>3559340 А кто тебе сказал, что если спрашивают что-то, то это обязательно должно использоваться в работе? Это фильтрация, лучше взять более умного кандидата, который много знает и увлечен программированием. Выбор сейчас очень большой
>>3559346 Ум != эрудиция Я допустим увлечен прогой и сейчас изучаю тулзы биг даты (процессинг, хранение, построение труб для моделей) + изучаю фп на примере скала и схема по приколу Работаю и после работы пишу два пета Только вот ебучей орк на том конце собеса спросит меня какую-то хуету которую вычитал он перед сном и отфильтрует меня, как не достаточного крутого спеца
>>3559346 Ну ты этот гейткип явно не тянешь, если свой тезис о ненужности монолитов сначала подкрепляешь своим нерелевантным опытом прохождения собесов, а теперь, поняв что насрал в штаны, потужно меняешь тему в сторону какой то высосанной из пальца анальной эрудиции.
Вообще говоря, ты как то слишком близко к сердцу принимаешь отказ по собесу. Нет хороших и плохих разрабов. На самом деле ты им просто банально не понравился. Вот и все.
>>3559348 Ну то есть метишь в млопс? Тогда надо аплаится в определенные команды. Понятное дело, что обычным продуктовым командам это вовсе не нужно и они гоняют просто по кишочкам и литкод
>>3559361 Я не он, я мимо проходил и забыл об этом написать, но да тоже было не приятных отказов в последнее время, связанных с тем, что я забил хуй на кишки спринга и изучаю то, что мне хочется и то что я считаю перспективнее веб спринга хуеты
>>3559362 Ну у меня на текущей работе, пол года назад, появилось много задач связанных с реал тайм обработкой, etl потоками и немного чинил трубы kafka -> flink -> модель банка (но у модели я ничего не трогал). Все это на джабке. Я поизучал рынок веба, охуел от сюра, потыкал го, почеcал репу и подумал, что надо прыгатть в дата инженера, но с уклоном в инфру и облака, с последующим дообучением до ml opsa и далее в ml engeenra. Хуй знает наскок этот трек жизнеспособен, но мой (далеко не самый умный мозг) сгенерил мне такие стратегические цели, с учетом преспектив на будущее. Половину стека я знаю (пол года ебусь с даталейками и прочей хуетой), ебучего питона почти совсем не знаю, вот сейчас по тихоньку задрочу до ночи после работы.
Подскажите. Не понимаю в чем проблема и почему при запросе на недоступный эндпоинт у меня создается сессия в редис https://pastebin.com/9KAyH4y7 Вот SecurityFilterChain. Он уже превратился в какое-то мессиво из вызванных методов. Сначала нормально все по доке было, а потом я начал сходить с ума из-за этой сессии. При обновлении страницы у меня на фронте делается запросе на /api/user/me, если не авторизован он выкидывает код 401(это настроено в фильтре), но почему-то создается сессия.
>>3559611 Нет UserDetailsService берет юзеров из бд https://pastebin.com/2TgTeZid >>3559601 Ну запрос до туда не доходит. Оно же сюда упирается ".anyRequest().authenticated()" Сессию я создаю руками в сервисе. Кладу SecurityContext в соответствующий репозиторий и как оно до туда доберется если это происходит только при регистрации и логине https://pastebin.com/0KqYkNyh
>>3559183 200к это мало что ли? Не говоря уже о том, что тебе и меньше могут предложить, это не повод туда устраиваться. Ещё какой-нибудь фуллстек каловый небось.
>>3559676 Друг, ты цены видел, а налоги растущие? 200к в современных реалиях это не большая сумма (ботинки блять хорошие зимние уже 20-30к стоят, лол), я бы понял - просто за 200к сидеть пукать джсоном под руководством лида и не парится, а там нужно строить системы хайлоад и брать отвественность как будто ты тим лид
>>3559649 >Ну запрос до туда не доходит. Оно же сюда упирается ".anyRequest().authenticated()" >Сессию я создаю руками в сервисе
Спустись на уровень нише. Поставь бряк внутри вызова своего реддис-клиента, которым ты сессию создаешь. Дебажить можно не только свой код, но и код либ.
>>3559183 И че ты этим хошь сказать? На гоу на хайлод без рокет сайнса за душой устроился за 100500-наносек-секунду чтоли? Сказал "А" - говори "Б", а то звучишь как понадусеровый какой то.
>>3559843 Да ахуенно, заебись почему-то создаётся сессия Я не шиз там реально вызывается createSession в репозитории Redis, они что ахуели. Я второй вечер с ума схожу
>>3560336 Итог: ".sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))" Решило проблему и теперь сессии создаю только я. Никаких случайных вызовов и полный контроль сессий от меня лично.
>>3556936 >> Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох жабапидор даже дело заводить не стали. Но это была не смерть, это было очищение. И он воскрес, и пришел в офис. И когда его увидели коллеги, они ему рукоплескали и выкрикивали: "Ваистину сишарпе". И все были счастливы и рады. И никто не вспоминал, что каждого из них так же унижали, насиловали, избивали, плевали в рот, как каждого пьяный Степаныч их забивал с особой жестокостью. Все они были счастливы. Все они были непомнящими. Все они забыли. Все они были грешниками. Все они несли этот крест, который тяжелел с каждым днем и лишь таблетки позволяли им забыть, о то что сами были пидорами никчемными и предали бога отказавшись от Java.
>>3559810 >я бы понял - просто за 200к сидеть пукать джсоном под руководством лида и не парится, а там нужно строить системы хайлоад и брать отвественность как будто ты тим лид Так все стройки хайлоада уже закончены. Как минимум в России. Роста больше нет, в стране рецессия в гражданской экономике, компании затягивают пояса. Поэтому строить хайлоад больше нет смысла, это просто путь в банкротство. Туда, где хайлоад уже есть, просто нанимают людей на поддержку проекта. Или если люди уже есть, то никого не нанимают, просто оставляют людей поддерживать проект до лучших времен. А там как повезет. Не известно, когда закончится рецессия. На западе вроде как постепенно рынки оживают местами (но и там ждут рецессию очень многие), в России рецессия уже началась. Тот же Сбер и прочие - сейчас перешли в режим выживания - режут косты, штаты, толпами отправляют джавистов на мороз итд итп. Разумеется в таких условиях никто не разбрасывается деньгами. Нет смысла нанимать какого-нибудь сеньку за 400к на хайлоад проект, когда ту же самую работу можно поручить делать мидлу за 150к, все равно большой разработки не планируется, только починка багов и минорные обновления. Собственно если раньше был дефицит толковых сенек, и им готовы были платить те самые 400к, то сейчас этот дефицит закончился. Не потому что все стали толковыми, а просто потому что сама потребность в толковых отпала.
Вкатываюсь в тред. 8 лет опыта на PHP. Залетела подруга, поэтому вкатываюсь в джаву-ентерпрайз, буду писать монолиты для европейских банков. Пока что все, что делал это хелоуворлд окошко кучу лет назад. Какой фреймворк смотреть что делать помогите аааа
>>3563037 Так сиди дальше на пхп коды пиши, зачем тебе джава? И вообще ты в какой локации находишься, что для европейских банков собрался что-то писать?
>>3563044 В Европах и нахожусь. Джава это стабильное рабочее место, а не компании-однодневки или фриланс. Есть конечно рынок и на пыху, но на джаве можно сидеть на попе и не переживать о будущем.
>>3562591 Ты не прав. Сейчас очень хотят того же сеньку пиздатого, который будет все делать вплоть до общения с бизнесом вместо аналитика, а платить ему хотят как мидлу.
>>3559215 Пока только вкатился в джаву, работаю крутанув уже пару месяцев мидлом, вроде норм. Стоит ли постепенно гошечку учить и перекат делать? Или шило на мыло?
>>3564328 Расскажи как крутанул? Я просто не одупляю, это надо выдумать легенду, выдумать как решал какие задачи, прикинуться что реально все это делал и шаришь Но как это возможно, шаг влево вправо и ты поплыл Особенно когда реально без опыта только (не считая пет проектов) и на junior еле тянешь
>>3564629 Скорее всего интервьювер идиот или ему похуй максимально. В норм компании, где от 3 тех секции минимум, шанс так залететь очень маленький, а в рога и копыта можно, но там и зепка соответствующая
>>3564897 Можно подумать - на заре интернета поиск по сети был на хайпе.
Забавно было бы найти в анналах истории свидетельства внедрения метрик использования поисковиков сотрудниками компаний, вплоть до KPI и массовых сокращений "непрогрессивных сотрудников".
Видимо - такой бред мог дойти только до современных нейрофашистов.
>>3564629 крутишь 3.5+ лет опыта Резюме делается на новые контактные данные Описание опыта - два предложения про проект -> список задач от самых сложных до самых базовых -> стек проекта Ссылка на твой новый телеграмм в шапке и в разделе "О себе"
Я правильно понимаю, что gradle и maven ищут исходники файлов по так называемому принципу convention over configuration? То есть имеется дефолтный путь src/main/java, а уже по groudId, например, com.example, и исходники ищутся в src/main/java/com/example/*.java?
>>3569817 >То есть имеется дефолтный путь src/main/java Да, если не конфигурировать специально, то будет искать там.
>а уже по groudId, например, com.example, и исходники ищутся в src/main/java/com/example/*.java? Нет. Всё что находится в src/main/java относится к артефакту текущего pom-а, неважно какие там package-и.
Не хочу писать на питоне код (не терплю динамическую типизацию), но нужно потому что там есть пакеты, которые делают нужную мне магию с ML моделями.
Я сначала пошел искать какой-то коммуникатор между java и python, чтобы можно было без напряга вызывать методы python скрипта в java коде с сохранением состояния python скрипта. То есть как будто бы просто создаешь объект и дергаешь его методы когда нужно.
JEP, JType, J4Py, Jython - всё галимая херня. В каждом из них есть свои недостатки, которые делят на ноль их полезность, но не будем об этом.
Подумав достаточное количество времени о проблеме мне пришло озарение, что можно написать сервер, который будет по HTTP общаться с Java кодом, а внутри сервера будут дергаться нужные мне питоновские методы. По сути любой код можно изолировать за фасадом HTTP.
Перед тем как начать писать питон-сервер, хотел спросить - у вас такой проблемы не было? Удалось ли как-то элегатно решить?
>>3571061 > Нет, GraalPy — это не просто мост, это полноценная реализация Python на платформе GraalVM. То есть это интерпретатор Python, альтернативный CPython, который может запускать Python-код. > Ключевое отличие от "моста": > GraalPy — это полноценный Python runtime, который выполняет Python код, со своим интерпретатором и возможностью JIT-компиляции > Мосты (как JPype, Py4J) — это библиотеки, которые позволяют вызывать Java из обычного CPython
Вот эта часть про то, что это отдельно реализованный рантайм питона вызывает сомнения. Во-первых, потянут ли поддержку в будущем? Jython не потянул переход с Python 2 на Python 3. Во-вторых, как будто Oracle может в любой момент сказать, что GraalPy теперь работает только в GraalVM потому что непонятно зачем им поддерживать его для чего-то другого кроме ими разработанной VM.
>>3572027 Работал в похожей конторе, до того как это стало модно. Там на джаве часть которая отвечает за визуализацию. Работа с железном на С++.
>>3572072 >Такое надо на плюсах писать, тут важен лоулатенси, джава пососет с заглотом Как там в 2007? Доллары покупай на всю котлету! А у нас в 2025 доллар по 80. Зато джава работает быстро и ГЦ паузы миллисекундные.
>>3571049 >JEP, JType, J4Py, Jython - всё галимая херня. В каждом из них есть свои недостатки, которые делят на ноль их полезность, но не будем об этом. Хер его знает, чем тебе JEP не угодил. Просто запускается CPython внутри JVM и всё. Максимальная совместимость со всеми питоновскими библиотеками. Поддержка последних версий питона. В конце концов можно запускать CPython через ProcessBuilder и работать через stdout/stdin.
>>3572134 > Зато джава работает быстро Джунец, спок. Быстро - это относительно. Для ентерпрайза хватает с головой. Там где нужен лоулатенси, то джава сосет. Пример: хфт, любая трейдинговая платфрома, никто в здравом уме не делает это на джаве. Можешь посмотреть доклады елизарова со времен девексперт, челы выбрали джаву и превартили код в говнище. Понятное дело, что для ненагруженных сервисов джавы с головой, но не для трейдингового кора
>>3572168 Выдохни. Речь шла об одном, конкретном кейсе. Визуализация карты с беспилотниками и отдачи команд. Никакого HFT там нет, не переживай.
>Можешь посмотреть доклады елизарова со времен девексперт, челы выбрали джаву и превартили код в говнище. Я работал в DB и мы как раз писали трейдинговую платформу. И звали в Райффайзен заниматься тем же самым. Я сам писал подобный код. Но в реальности его совсем не много в общем объеме. Основная масса кода не стоит на критикал пас и это обычный джава код.
>>3571049 Зависит от требования по производительности. Если их нет - пиши как нравится, если есть - попробуй GPRC через локальные сокеты, по идее должно быть быстрее, биндинги под питон и джаву есть
>>3559183 >Что скуфаны, готовы на го переписовать все ваше протухшее говно или еще нет Конечно, ведь кризис и нехватка денег на рынке это именно та ситуация когда бизнес хочет ввалить миллионы в работу с нулевым бизнес вэлью.
>>3572232 Так я об этом и говорю, ты мой пост читал? Там такое говнище код, но зато на джаве и с "безопасной" память, хотя с их хаками, чтобы это хоть как-то держало лицо про безопасность можно забыть. Я просто еще немного глубже в это погружен, работал там 3 месяца, но сбежал с испыталки, контора на момент 2020 года очень слабая была, прям советская такая, стремное чувство, пмы были тупоголовое быдло, но там как я понял прям от проекта сильно зависит, я как раз попал на нагруженное легаси-говно.
>>3572237 >DB хз что это >звали в Райффайзен крутой, уважуха > Основная масса кода не стоит на критикал пас и это обычный джава код Я про это и писал. Просто в 2000х джава была на лютом хайпе и наней начинали писать вообще все, не думая о последствиях. Теперь уже ничего не переписать, очевидно. И приходится изъебываться, чтобы это все работало стабильно и относительно быстро в существующих реалиях (и тратить на это куча бабок), когда есть более молодые упрыгие конкуренты, где стэк выбран поподходящее и дышится им свободнее
>>3572315 Нет хороших и плохих языков, в идеале надо знать все языки и разбираться в их кишочках, чтобы правильно сделать выбор для нового проекта, оценить плюсы, минусы и риски. Но в компаниях обычно есть устоявшийся стэк, и всё новое просто стартуют на нем на похуях. В банках - джава. Банки помоднее и современный финтех- котлин. В ритейлах у нас всё на го сейчас. Сейчас у меня два основных языка, где я прям хорошо шарю - джава+котлин и го. По мелочи джс и тс. Кажется, что это самая сытая связка на данный момент. Был ещё опыт на плюсах, но давно не практиковал их
>>3572156 > чем тебе JEP не угодил Нет поддержки от корпораций. Опен-соурс живующий на чистом энтузиазме участников. Шанс того, что через год/два/три он превратится в архивный проект и весь код придется переписывать значительно выше 0. Я не готов так рисковать. >>3572256 Я в итоге на FastAPI сделал локальный сервер с нужными мне нейронками и дергаю их из жаба кода. По производительности требований нет, просто чтобы работало пока что задача.
>>3572415 Галерный раб, спок. Ты бы еще гордился работой в епаме или люксофте.
У тебя троллинг такой скуфский - наезжать на меня и пересказывать содержание моих же постов? Конечно можно сливать бабки бизнесу на переписывание или подобную хуйню, нам то от этого только плюс, как разрабам.
Но мы то про другое. Если люди сразу правильно выбрали инструмент под конкретную задачу, то ничего бы переписывать не пришлось бы
>>3572433 >Галерный раб, спок. >Ты бы еще гордился работой в епаме или люксофте. Хлебушек, не проецируй свои комплексы на других. Я просто написал про свой опыт написания трейдинговых платформ на джаве. Где ты там увидел хвастовство, не ебу, в любом случае это твои проблемы.
>>3572533 >Зачем? Микросервисы проще масштабировать. Проще разрабатывать: у тебя одна команда пилит микросервис, не надо ни с кем согласовывать "когда все вмёржат и начнём тестирование", тестировать надо меньше а значит быстрее. В конце концов проще переписать если что.
>>3572820 >Микросервисы проще масштабировать. Что масштабировать? Размазать на несколько хостов, потому что упираешься в процессор? Можно и с "монолитом" так сделать, кажется для этого даже слово какое-то модное придумали. Плюс меньший оверхед от отсутствия докеров, кафок и прочего медленного жирного дерьма. >"когда все вмёржат и начнём тестирование" Почему изменения в одном конце системы обязаны зааффектить другой? И почему у копросервисов не может быть общих зависимостей, которые наебнут все "независимые" копросервисы, если там что-то сломают?
>>3573033 Иногда твоему заказчику тупо похуй. Ну вот привык он msi-инсталлером раскатывать твой софт на серверное и клиентские места, и в гробу видел хайрить штат девопсов чтобы возиться с твоими контейнерами. И хоть ты тресни.
И тогда начинается интересное. Оказывается, что современниками тупо утрачен скилл проектирования монолитов. Это полный пиздец.
>>3573033 >В случае с монолитом ты делаешь х2 для 128Гб монстра У тебя он в одном процессе живёт? Я, естественно, исхожу из того, что у любой серьёзной сложной системы, с докерами или без, скорее всего предусмотрена какая-то модульность и ты можешь поднять только нужные тебе воркеры на другом хосте. Контейнеризировать каждый процесс для этого не требуется.
>bare metal Прям уж таки bare metal, лол. >они даже тесты конфигов писали >проверка что порты уникальные, проблема Если у тебя IQ выше 80 (а иначе тебя бы вряд ли наняли работать программистом) - ты, скорее всего, сможешь правильно заполнить конфиг. Если вдруг конфиг на 9000 строк, что маловероятно - можно нехитрой комбинацией grep, awk, uniq и wc за 30 секунд убедиться, что ты нигде не обосрался. Зачем это покрывать автотестами - хуй знает, видимо, всему виной патологическая тяга джавапидоров к бюрократии и максимизации количества кода.
>Не обязаны, но шансы больше. >выкатили сервис А и всё упало, проблема в нем. Включили фичу А в "монолите" и всё упало, проблема в ней. Чаще всего такое не пройдёт QA, но в тех редких случаях, когда оно утекает в релиз, микросервисы решают проблему примерно никак. Ну, возможно, микросервис чуууть сложнее написать настолько отвратительно, чтобы наебнуть весь проект (хотя зависит от проекта), но мы всё-таки исходим из того, что целенаправленно нанимать клинических олигофренов на работу программистами никто не станет. >и им надо согласовывать релизы. Только если там что-то очень масштабное или код реально адское спагетти.
>>3573055 Монолит упадет с эксепшеном и ты сразу увидишь проблему. Пройдешься по стектрейсу и разберешься. В микросервисах сообщение просто зависнет где-то в очереди очередей, потом хуй поймешь, почему платеж не прошел. Это настолько типичная проблема, что опытные придумали патерн сага и не используют очереди вообще, да только где ж их взять опытных.
>>3573148 О чём я и говорю - микросервисы на порядок усложняют систему без каких-либо ощутимых преимуществ.
Вернее, одно есть - можно очень быстро нанять таксистов, которые выучили одну отвёртку на курсе "джава/питухон/джаваскрипт/etc за 30 дней" и кое-как умеют перекладывать джсон на модном фреймворке. С монолитом, в значительной степени написанном на смеси емакс лиспа и брейнфака в прошлом тысячелетии утрирую, очевидно, людей хуй найдёшь за любые деньги. Но это преимущество точно не техническое и даже не процессное, а сугубо кабанское, чтобы выкинуть этих ебучих анальников на мороз, если настроение плохое будет - всё равно новых нанять за 3 дня можно. Наверное, только для этого копросервисы и насаждались, другого объяснения у меня нет.
>>3573148 >придумали патерн сага и не используют очереди вообще Сага реализовывается через брокеры, дядя) И оркестрешн сага, и хореограф - все реализуются через брокеры, чтобы не терять ивенты, если какие то сервисы лежат. В этом и суть, если у тебя лежит монолит, то нихуя не работает. Если у тебя лежим какой-то пенис, то аптайм брокеров стремится к 100%, поэтому ты не теряешь данные/события, они персиситентно сохраняются
>>3573158 >людей хуй найдёшь за любые деньги Большинство хотят работать на новых технологиях и развиваться, чтобы съебнуть на место посытнее, где эти знания будут релевантными, а не пыхтеть над смесью емакс лиспа и брейнфака.
Так что это в две стороны работает. Кабану конечно это выгоднее, поэтому го и хайпанул.
Сейчас на рынок вывалилось большое кол-во 40летних-скуфов походу вот с таких копро-проектов. Это жалкое зрелище.
>>3572820 >Проще разрабатывать: у тебя одна команда пилит микросервис Так у тебя на каждый микросервис ворох обвязки обязательно идёт >не надо ни с кем согласовывать Ну так это потом вместе работать не будет, если ни с кем не согласовывать >>3573033 >В случае с монолитом ты делаешь х2 для 128Гб монстра, а в случае микропенисов х2 для 2Гб контейнера. а) Почему ты решил что масштабированию подлежит только 1 микросервис, а не весь зоопаркк со всем его оверхедом б) Почему ты не можешь просто вынести масштабируемыую часть из монолита, когда и ЕСЛИ тебе это нужно? В большинстве случаев это вообще не нужно.
>>3573033 >В случае с монолитом ты делаешь х2 для 128Гб монстра, а в случае микропенисов х2 для 2Гб контейнера. Ты только ещё не учитываешь что стоимость железа в сотни и тысячи раз ниже стоимости труда разработчиков. С экономической точки зрения это не имеет смысла - ты выбираешь более трудоёмкий вариант, потому что так на хабре сказали.
Местные двачерские нигилисты, вам же похуй на очевидные преимущества любого подхода, главное быть не "как все".
Eсли у тебя 1к разрабов, то нереально их загнать в одну репо вашего монолита, эта репа превратится в шлюху и мусорку.
И никакой памяти в мире не хватит, чтобы этот копролит адекватно работал, если проект реально большой. Разделять там на воркере и хуе моем - это по сути те же микропенеисы и выйдут, если смотреть с перспективы девопса.
Конечно же и там, и там есть плюсы и минусы. И вообще разработка реально сложного продукта - это набор компромиссов, которые разработчики делают постоянно
>>3573475 И будут мини команды, которые будут работать только над своими сабмодулями со своими релизными циклами и уметь деплоить монолит таким образом, чтобы только воркеры, которые они разрабатывают, запускались на интсансах, которые они подняли и они могли их точечно масштабировать? Хмм, ну да, реально норм!
>>3573418 >И никакой памяти в мире не хватит, чтобы этот копролит адекватно работал, если проект реально большой. Серьезное заявление, проверять мы его конечно не будем >Разделять там на воркере и хуе моем - это по сути те же микропенеисы и выйдут, если смотреть с перспективы девопса. Так мы смотрим с перспективы костов и разработки, причём здесь девопс? >Eсли у тебя 1к разрабов, то нереально их загнать в одну репо вашего монолита, эта репа превратится в шлюху и мусорку. Ты можешь разрезать монолиты на репозитории, в этом нет никаких проблем, сейчас это стали называть "модулиты", но вообще это банальная разработка в виде либ >И будут мини команды, которые будут работать только над своими сабмодулями со своими релизными циклами и уметь деплоить монолит таким образом, чтобы только воркеры, которые они разрабатывают, запускались на интсансах, которые они подняли и они могли их точечно масштабировать? А почему собственно у тебя должны быть разные релизные циклы внутри одного продукта, этим вопросом ты не задавался? Нужно ли вообще их точечно масштабировать? Почему нельзя вынести и отмасштабировать только то что нужно? (т.е. ничего).
>>3573506 >И будут мини команды, которые будут работать только над своими сабмодулями со своими релизными циклами По поводу релизных циклов - в любом сборщике есть версионирование зависимостей, так что это вполне можно контролировать варсиями либ.
>>3573510 В чем тогда разница от сервисов? Каждая команда пилит свои либы, и есть какой-то монолит, который все эти либы агрегирует? Ну хз, мне кажется, проще чтобы команда сама отвечала за деплой своих частей, это более гибко и меньше потенциальных проблем и сразу понятно, кто что сломал и кому чинить
>>3573538 В том что у тебя нет оверхеда на ввод/вывод, сериализацию/десериализацию, нет "рассинхронизации контрактов", для чего одно время ввели contract testing, потому что это хэндлится компилятором. Меньше подов нужно поднимать, меньше лицензий запрашивать (а цены на лицензии могу быть весьма жесткими). Меньше оверхед значит каждый под может обработать больше теми же ресурсами. Вертикальное скалирование гораздо проще, кодовая база гораздо проще, потому что нет микросервисных обвязок. В целом всё проще там где ничего сложного не нужно.
>>3573557 >>3573555 > там где ничего сложного не нужно С этим согласен, но бывают сложные проекты. У меня сейчас в пик обработка 1к сообщений в секунду и размер каждого около 100мб и есть еще n таких же доменов нагруженных в моем продукте. Самое простое и правильное в моем конкретном случае - вынести это куда то независимым юнитом.
Я понял тебя, у тебя жопа рвется с того, что люди вместо того, чтобы дернуть метод внутри jvm, ходят по хттп/грпц в другой сервис. Ну че, ищи проекты посерьезнее и интереснее, там у тебя кругозор станет шире и поймешь, что нет хороших и плохих решений, а есть только компромиссы.
А разговоры вида технология/подход_нейм - говно!! Надо другая_технология/подход_нейм - это удел джунцов
>>3573561 Так я это и написал - делать сложно только там где это необходимо. Ты вот например перфтестил свою обработку сообщений в многопоточке одним подом, с каким-нибудь work-stealing pool'ом? Или как джунец ебнул сразу правоверные микросервисы, потому что так надо?
>>3573574 Мы в память упираемся, там по хипдампам понятно в чем дело. 4 интсанса, каждый в два поток, 8 кафка парцицей.
При чем тут ворк стил (форк джоин) пулы? Если у тебя обработка не саспендится на io или еще что-то, то толку от ворк стила нет. Или еще кейс для ворк-стила - какие то хитрые математические вычисления и асинк архитектура. Ты просто кейвордами хуяришься что ли?
>>3573158 >>3573148 мужчины я вижу один плюс микропенисов вот есть приложение и при нажатии кнопки "сформировать отчёт" всё приложение ЛАГАЕТ и мы без задней мысли выносим модуль отчётов в МИКРОСЕРВИС отчётов и выигрываем от этого, т.к. теперь лагает только МИКРОСЕРВИС отчётов, а остальное приложение этого не замечает я прав или чё то не так?
>>3573612 лаги - это активная аллокация памяти и гц, скорее всего, в таком случае вынес поможет. Нагрузка размажется. Но тут еще сразу следующие вопросы, как забирать данные для отчета? Скорее всего CQRS и прихранивать в бд сервиса отчета и строить по кнопке или строить на лету, как только новые данные приходят. Короче вот в чем и прикол, сервисы решают одну проблему, но заставляют думать об архитектуре и гарантиях
>>3573581 >Если у тебя обработка не саспендится на io или еще что-то, то толку от ворк стила нет. Не понял, ты же сам писал про обработку 1к сообщений по 100 мб в секунду. У вас чтение гигабайта в секунду из айо не саспендит обработку чтоли?
>>3573612 Это верно до тех пор, пока всё твоё "приложение" - по сути гигантский cgi-скрипт прямиком из девяностых (что откровенно маловероятно). Между этим и "один процесс - один контейнер" существует ещё огромное множество вариантов, как сделать не говно. Покормил жирнича.
>>3573671 >Покормил жирнича. не, у меня vaadin монолит сделанный откровенно хуёво, лидов нет, процессов нет соответственно я даже не знаю как должен выглядеть нормальный код, просто хуячу иногда спрашивая у 23-летних коллег не совсем ли откровенный пиздец я пишу
>>3573706 >не совсем ли откровенный пиздец я пишу Если в коде можно разобраться, легко адаптировать под постоянно меняющиеся хотелки кабана и масштабировать под растущую нагрузку, а правка двух строчек не требует ручного ретеста всего приложения - то что ещё нужно? Всякие кристально чистые архитектуры и прочий смузи драйвен девелопмент призваны в первую очередь обеспечивать выполнение этих условий.
>>3573669 для этой задачи вообще тредпулы не нужны, кафка в роли буфера + два бизи лупа на инстансе, которые 24/7 вычитывают пачками из кафки и что-то делают с данными Данные процесятся и скидываются в базку, в теории можно что-то сделать на этом треде, пока мы ждем скидывание в базу, но опять же много чего сделать нельзя, потому что оффсет не закомичен еще, а значит следующую пачку сообщений не получится взять. Плюс из-за того что эта кафка, то особо не попараллелишь обработку событий из одной партиции из-за коммита оффсета, надо будет сложную логику ретраев и дедлеттеров городить, а прибавка около 0 к трупуту будет
Планирую перекат в бэк с андроида после 8 лет там. Когда начинал, "красоту" видел в ui формах, написав несколько "толстых" фронтовых клиентов понял, что больше тянет именно к бизнес логике. останавлиет немного падение по доходам. Реально ли ща вообще 450-500к в банке лутать на беке будучи рядовым разрабом высокого грейда на жабе (ну надеюсь все таки котлине)? Тимлидство ебал в рот
>>3573793 Да есть подозрение что и на Андроиде я не то чтобы нужен... Есть ощущение что, на беке можно дольше развиваться. И там понятно за что платить челу 10 годами опыта больше чем челу с 3 годами. И поэтому я думал что там и ЗП на дистанции должны быть повыше.
>>3573809 300к рублей до вычета налогов это считай потолок для обычного сеньки-бекендера. Выше только менеджмент. 400-500к это уже банки и явно не простое перекладывание джейсонов, а еще и тимлидство.
>>3573743 >>3573793 Перекатился 4 года назад с андроида на бэк, сейчас пишу бэкенд на котлине с корутинами и nio серверах. Очень рад, что съебнул с андроид говнища, это реально для глупеньких. Верстаешь ресайклвью, айтемы и кнопки, делаешь запросы и всё. Ну изменения стейта обрабатываешь как то ещё. Очень примитивно. С технической точки зрения спустя 3-4 года работы мне развиваться некуда было, а это я еще застал появление котлина, многомодольной архитектуры и mvi всяких хайповых на тот момент, но всё это настолько примитивные вещи, а я тогда думал что это пиздец наука. Сейчас понимаю, что это просто детские игрушки.
На бэке тоже конечно есть проекты очень простые. Но тут хотя бы можно найти что то сложное и интересное, а на мобилке просто нет шансов таких. И с технической стороны можно развиваться и изучать новое: разные бд, реплики и стратегии, брокеры, алгоритмы косистент хэшинг и консенсунса, шардирование, кэши распределенные, те же монолиты/микросервисы, оркестрация, девопс. Короче есть куда капнуть.
Мне даже в 21 году было достаточно сложно сменить стэк, потратил несколько месяцев на изучение нового и столько же на сами собесы. А это 21 год - самое изи время для трудоустройства, дефицит и хайп ит был лютый, брали любого дятла с курсов. Сейчас это кратно сложнее, потому что на рынке и так дохуя мидлов/сенек. Нахуя брать чела совершенно из другой области? Вопрос хороший. Конечно если у тебя есть желание и упертость, то рано или поздно тебе повезет и тебя возьмут куда то, но это может занять действительно долго сейчас. У меня это желание было огромным, я просто не мог продолжать делать приложения, это был ад для меня. Сейчас я рядовой сенька с получкой 450-500, так что это вполне реальный уровень, о зарплатах в андроиде давно ничего не слышал, скок там щас?
>>3573581 >Мы в память упираемся, там по хипдампам понятно в чем дело. А вы целиком мапите 100 метровые сообщения на джава объекты перед обработкой? Не используете потоковую десериализацию, что-то вроде https://jsoniter.com/ ? Это бы просто объяснило перерасход памяти и низкую скорость обработки.
>>3573847 Да в текущей конфигурации у нас нет проблем, даже запас есть. Прикол этого парсера, если честно не понял. Если у меня приходит огромный джсон и мне нужно только пару полей из него, то окей. А если мне нужны все поля? И на них завязана логика процессинга, то какой профит?
>>3573853 Ну если все поля, то как минимум ты не загружаешь их все сразу в память, а итерируешься по ним, таким образом у тебя в идеале резкий пик потребления размазывается, потому что данные заходят и выходят из области видимости и соответственно раньше доступны для ГЦ и всякого экскейп анализа. И соответственно максимум потребления снижается.
Еще если у тебя например есть миллион объектов одной структуры (какой-то массив), то стандартный парсер создаст тебе буквально миллион объектов. Этот создаст 1 объект и будет обновлять в нём данные миллион раз в процессе итерации по массиву. Минус создание и очистка миллиона объектов.
Но в основном конечно предполагается что тебе нужны далеко не все поля, что и является самым частым случаем. Со 100 мегабайтными сообщениями мне вообще сложно представить чтобы вся логика была завязана на все 100 мегабайт данных, если только ты не просто копируешь все содержимое в базу (но смысл тогда от такого сервиса?).
>>3572433 >Если люди сразу правильно выбрали инструмент под конкретную задачу >Просто в 2000х джава была на лютом хайпе и наней начинали писать вообще все, не думая о последствиях
Ахахах. А вот ежели бы сели и подумали в начале двухтысячных о последствиях, то выбрали бы.... Што? Плюсы? Или лол-гоу, которого на тот момент даже в зачатках не существовало? Питончик, проекты на котором и по сей день хуево ведутся командами больше двух человек? Или шарп, который по своему развитию на момент начала 2000х был просто жалкой калькой с джавы?
Вкатунишке с дивана то конечно виднее, что следовало выбирать в начале 2000х. Ору.
>>3573418 >Eсли у тебя 1к разрабов, то нереально их загнать в одну репо вашего монолита, эта репа превратится в шлюху и мусорку.
Опенсорцы и не в таких масштабах живут. И чето опенсорцы архитектурно - вообще в большинстве своем не про микросервисы. Сплошь монолитные-модульные либы, тулы, фреймворки.
Просто люди правильно декомпозировать софт не умеют, вот и все. Ищут спасения в микросервисах, и то находят не всегда (термин "распределенный монолит" не с пустого места взялся).
>>3575838 Бро, у меня щас вообще бэкенд на сях, апишки - самописные бинарные поверх голого TCP/UDP, разумеется хуево документированные. Клиент - на свинге с кучей нативных биндингов на всякое - не все из этого даже гуглится. Проекту второй десяток.
И ничего, кайфую. Главное чтоб тебя любили, премию платили, метриками не душили (как фашиствующие бигтехи). А стек - дело наживное.
>>3575904 Но как же faang, как же новые технологии чтобы эмигрировать... Даже спринга нет, сервелетные кишки и шизоидные алгоритмы тех кто уволился ещё пять лет назад, десятки модулей, проект собирается локально 15 минут и стартует 20. Как же больно, какие там премии и галерный раб
Одно радует, говорят что в следующем году новые сокращения везде будут, может сократят с копролегасиговномонолита и уйду работать за еду в платформаофд и прочие датномики где зп меньше чем у продавца пятёрочки, но буду это для себя оправдывать тем что другой работы нет
>>3573418 >Eсли у тебя 1к разрабов, то нереально их загнать в одну репо вашего монолита, эта репа превратится в шлюху и мусорку. Не путай монорепу с монолитом. Можно работать в монорепе, но иметь микросервисную архитектуру.
>>3573043 Не видел ни одного монолита который бы "проектировали", как правило это всё постепенно растёт. И распил это как раз попытка справиться с возрастающей сложностью дальнейшей разработки.
>>3573055 >У тебя он в одном процессе живёт? >Я, естественно, исхожу из того, что у любой серьёзной сложной системы, с докерами или без, скорее всего предусмотрена какая-то модульность и ты можешь поднять только нужные тебе воркеры на другом хосте. Контейнеризировать каждый процесс для этого не требуется. Монолит который живёт в нескольких процессах?
>Прям уж таки bare metal, лол. Да, IBM-овские серваки. Даже знали в каком ДЦ стоят, было 2 ДЦ на Лондон и Нью-Йорк, в остальных локациях по одному ДЦ.
>Если у тебя IQ выше 80 (а иначе тебя бы вряд ли наняли работать программистом) - ты, скорее всего, сможешь правильно заполнить конфиг. Если вдруг конфиг на 9000 строк, что маловероятно - можно нехитрой комбинацией grep, awk, uniq и wc за 30 секунд убедиться, что ты нигде не обосрался. Зачем это покрывать автотестами - хуй знает, видимо, всему виной патологическая тяга джавапидоров к бюрократии и максимизации количества кода. Если бы у тебя был IQ просто был, то ты бы знал что человек слаб и ошибается. Особенно когда надо проверить сотни строк однотипных конфигов. К тому же грепать это в разы дольше чем автотест при билде.
>Чаще всего такое не пройдёт QA Это если есть это QA и покрытие хорошее.
>микросервисы решают проблему примерно никак. Решают: во первых изоляция проблемы в маленьком сервисе с разнесенными релизами, во вторых canary.
>>3575963 >Монолит который живёт в нескольких процессах? А почему нет? Тебя убеждения удерживают вынести что-то в отдельный процесс когда нужно? Всё дело в том, что в большинстве случае это не нужно.
>выкатили сервис А и всё упало, проблема в нем. >микросервисы решают проблему примерно никак. >решают нет чел, микросервисы -это полностью независимые друг от друг компоненты, они специально должны проектироваться так, чтобы если что-то упало, то всё остальное работало. Если у тебя от ошибки в микросервисе всё падает - то это просто разрезанный на куски монолит потому что "так надо", который почему-то называется "микросервисной архитектурой"
>>3575963 >Монолит который живёт в нескольких процессах? Я так понимаю, между гигантским CGI-скриптом, который зачем-то одновременно пишет 1000 человек, и зоопарком докеров никаких градиентов не существует?
>Если бы у тебя был IQ просто был, Ты же специально проигнорировал большую часть абзаца, чтобы дать себе повод для пассивной агрессии, а то ЗАТЕРПИШЬ и будешь как НИПАЦАН? >К тому же грепать это в разы дольше Только если ты спермоблядь и не можешь жить без мышевозных гуёв. Сами утилиты довольно шустрые, сотни строк пережуют моментально.
>Это если есть это QA и покрытие хорошее. Так это не проблема "монолита", это проблема отсутствия нормального тестирования. Как копросервисы её решают?
Бля, чел, те чтоб эмигрировать сегодня, как будто бы проще просто выйти на красную площадь с чистым листком, присесть на швабру чуток, а потом бежать искать политического убежища, пресмыкаясь на коленях у западных господ и строя из себя жертву. Нахуя это все нужно и каким боком здесь джава и твоя галера - вопрос факультативный, учитывая что врядли ты им нужен что со спрингом, что без, когда им проще закупить у нвидии аппаратных мощностей для хостинга нейронки сопоставимой по скиллам.
>>3575960 Я застал одного архитектора, который свежачком кинулся распиливать наш монолит на микросервисы. А потом оказалось что клиенты этого решения в гробу видели и облачка, куда он хотел деплоиться (им принципиален был on-premise в их личной DMZ), и оверхеды от кучки микропенисов вместо одного процесса. В итоге проебали полтора года, этого арха по итогу просто уволили нахуй, а на руках вместо монолита, который хоть и был написан говенно, но хотя бы был оптимизирован хорошо, мы остались с хуево спроектированным микропенисным говном, которое потом несколько раз репутационно отстреливало.
Щас рефачим этот бардак просто на модули, чисто следуя здравому смыслу: уменьшаем связность там где надо, устраняем боттлнеки, обновляем стек. Вроде худо бедно ситуация выправляется.
>>3576248 Архитектор за бизнес решения не отвечает, а изменение способа использования продукта это бизнес решение. У вас видимо какая-то ебала вместо организации. >>3576377 > надо работать над продуктом, а не для заказчиков Сразу видно человека, который не думает о бизнес вэлью.
>>3576607 > надо думать только о своем вэлью И какое твоё вэлью в том, чтобы продукт был никому не нужен из реальных пользователей, которые платят деньги? Продукт умрет, ты потеряешь работу, где плюсы?
>>3576611 У тебя понятие продукт, заказчик и клиент неправильное, могу сделать вывод, что ты всю жизнь проработал на галерах типа епам, люксофт, дойиче банк и т д. Дальше тебе разжевывать не собираюсь, сам давай
>>3576603 >У вас видимо какая-то ебала вместо организации.
Есть такое, разброд и шатание наблюдается. Тот арх был просто чрезмерно инициативен, на коротной ноге с начальством пытался лоббировать всю эту кутерьму.
>>3576631 Смысл тебе щас тут че то рассказывать, если та скажешь врееееети. Двачеры жы тупорылые, могут только говном кидаться и главное отстаивать свою позицию до конца, даже если она объективно неправильная, спор ради спора
ИЩУ АНОНА который объяснял почему uuid как PRIMARY KEY - это плохо, проебал твой пост, ты про индексы расписывал ну или мимопроходящие расскажите, почему serial лучше как primary key?
>>3576628 У нас так один разраб лоббировал переход с джава на го. Пролоббировал. Как? А хуй его знает, начальство-долбоебы и все их решения абсолютно непрозрачны. Скорость разработки упала раза в три, потому что разрабам приходиться постоянно переключаться между существующими жаба проектами и новыми го проектами. Разраб после этого уволился уйдя в другую компанию, оставив счастливых коллег с говностеком.
>>3576656 Так он красава, хотел получить опыт на го (связка джава + го самая сытая сейчас, по себе знаю), ушел наверное на х1.5-2 с охуеной экспертизой и опытом. Ну а вы плачьте, хуле
>>3576651 Лучше в каком случае? Для индексация serial лучше потому что число. uid в какой базе Sql а конкретнее, если это постгрескал там это спец тип он больше байт занимает по нему индексация хуже и поиск, но лучше чем по строке. А если это постгрескал то какой он версии и какой версии ты uid будешь использовать? А ты уверен что твой говно проект перешагнет бигсериал? А менеджеру и остальным по кайфу будет в урле видеть uid вместо числа? мимо легаси страдалец, раб сервелетов
>>3576237 Ты деприссивно настроен, я чувствую упадническое настроение в твоём посте. Все едут, некоторые теряют в зп, но это временно, мне кажется на дистанции в лет 5 по зп в другой стране вырасти шансов больше. Я вот не вижу тут другого варианта кроме как 500-600к гросс причём тимлидом, где 80% времени надо будет ходить на планерки, причём они всегда в офисе, это уже не первый мой проект и рукля на удаленке я ещё не видел. Да это хорошие деньги, но это как будто карьерный потолок и тупик, потому что даже не уволишься, на такую позицию обычно берут из команды в которой работал года 3
>>3576747 500-600 гросс это сейчас просто сенька, на руки 450-500, хз о чём ты. Куча компаний готовы это дать, если ты скилловый и офк если просишь столько. Лид это 600+ на руки
Учил с 22 года джаву работая сис.админом. Настал 25 год, понимаю что вкат совсем мертв, при это инфраструктура наоборот актуальна, позадрачиться по ней и апнуться проще, на бумаге, и опыт есть и хуева тонна собесов за спиной. Но в джаву тоже вьебал времени, и хотел перекатится именно в нее, но опыта в настоящих рабочих процессах нихуя. Реально ли с джавой дальше пытаться устроиться крутанув и с подготовкой ментора, или совсем жопа?
>>3576636 Ну так а че чушь несешь? Проект без клиента - эрзац, никому не нужный петик без цели, ценности и смысла. Если для тебя такая очевидная истина не очевидна, есть сомнения насчет того, что ты не вкатун ноль лет коммерческого опыта.
>Двачеры жы тупорылые
Ну а ты, получается, еще тупее, если сначала сам в залупу залез, а теперь сливаешь. Навел тень на плетень, клоун. Добро пожаловать на двач, тут тебе самое место.
>>3576865 >Проект без клиента Где я это писал? У тебя все ограничивается галерной моделью бизнеса, раб. Поработай в нормальных компаниях, потом продолжим диалог, тупица
>>3576000 Независимыми могут быть лишь те компоненты, которые внезапно ничего друг о друге не знают. Сервер во Владивостоке упал, а сервер в Калиниграде работает, потому что архитектор старой школы сделал шардирование по городам, а не высрал гигасервис заказов и мегасервис доставок.
>>3577043 Ну это собственно и есть один из самых явных обсёров микросервисного бреда. Обычно в этом случае начинается виляние жопой на тему того, что значит "независимые". >>3577060 Всё верно, поэтому по канону все микросервисы изолируются друг от друга брокерами сообщений, т.е. по канону они должны знать только об очереди.
>>3577251 >Всё верно, поэтому по канону все микросервисы изолируются друг от друга брокерами сообщений, т.е. по канону они должны знать только об очереди.
Ага. И вот здесь мамкиных архитекторов обычно пробивает на каргокульт. Мало просто пересадить модули на брокеры чтобы они стали изолированными. Они все равно останутся связанными через схемы мессаджей - поменялась схема у отправителя, приемник ее больше не поймет. Реальная изоляция через брокер включает в себя еще и мессаг схемы с версионингом, миграциями и прочей обратной совместимостью, а это дополнительная возня. Попутно еще ебись сагами под хореографию с eventual consistency, ломай голову куда разгребать DLQ и прочие брокерные приколы, порог входа в который щас вынуждены преодолевать охуевающие вкатунцы. И все это - там, где в монолите можно было просто вкорячить интерфейс для инверсии зависимости.
Мимо. Без негатива к микросервисам как таковым, но потешаясь над теми, кто верит что микросервисы нужны в первую очередь для изоляции.
Как спрингмены объясняют vue-хуе, что юзер авторизован? В смысле, как вуе, должен понять что юзер авторизован, основываясь на какой куке или как, что юзер уже автризован? Вот юзер авторизовался и что, как вуе должен запонимть что он авторизован? Как это делается на проде в мэинстриме у спрингменов? Только не надо всякие костыли предлагать. Нужно заверенное паттернами решение.
Насколько реально вкатиться в жабу? Вакансий нихуя в городе нет, в дсы я не перееду в ближайшее время, плюс довольно популярен у студентиков и в целом порог входа энтерпрайз - требуют много, по сравнению с веб-макакингом
Есть ли варики пробиться на стажировки? Или просто найти удаленку? Мне советовали раньше не смотреть на локальный рынок, а сразу на удаленку, ну и выбирать жабу за перспективы и стабильность, никуда не денется и будут нужны, самый популярный яп после жаваскрипта хули
>>3577592 Не знаю, смотри на количество вакансий и количество соискателей. Раньше hh и хабр публиковали такие данные. Нам в компанию, исключительно как личный пример, не только жаба программисты не нужны, нам вообще программисты больше не нужны. Третий год сокращения.
>>3577592 >Насколько реально вкатиться в жабу? Реально >Вакансий нихуя в городе нет Какой город или область хотя бы? >Или просто найти удаленку? На апворке можно что-то найти
>>3577629 Ну я смотрел, на жабу одно из лучших соотношений, но не более того, просто я не знаю где искать вообще вакухи и потяну ли конкуренцию, на удаленке тем более >>3577672 >Какой город или область хотя бы? Владивосток >На апворке можно что-то найти И прям с 0 опыта? Я скорее думал про какую-то удаленку за еду хотя бы, пушта здесь почти ничего такого нет
Зато пыха + жс (ну пайтон еще) - вагон и маленькая тележка. Можно пойти туда, чтобы опыт получить и крутануть, пытаться уже в жабу перейти, но хз, я слышал только что ввязавшись в пыху - на ней и застрянешь, это как 1с
>>3578200 >И прям с 0 опыта? Так там есть заказы на готовый продукт, а не на почасовую. Можешь сделать - делай. Кому опыт интересен? >я слышал только что ввязавшись в пыху - на ней и застрянешь, это как 1с Застряёшь в любой технологии, это из-за причуд ХРов, а не из-за технологии
И при чем тут спринг? Гугли HTTP, Rest и способы аутэнтифицароваться в нем. Спринг "обьясняет" твоему фронту на вуе это ровно так же, как делал бы это любой другой бэкенд-фреймворк на любом другом стеке любому другому фронтенду, на чем бы оба ни были писаны.
>Только не надо всякие костыли предлагать. Нужно заверенное паттернами решение.
На такие вопросы попугай научился отвечать "зависит от требований", и сразу апнулся до архитектора.
>>3578524 >И при чем тут спринг? При том что это жаба тред.
>Гугли.. как делал бы это любой другой бэкенд-фреймворк на любом другом стеке любому другому фронтенду.. Ты так же мог бы пойти любой другой тред и навалить там такой же не нужный текст.
>>3578550 >Гугли Oauth flows. При чем тут оаус? Мне нужно просто SPA на жс, объяснить, что юзер уже залогинен, чтобы СПА не показывал форму логина. Как это делается в связке спринга и спа? Вот в чем вопрос был. Есть бэк: спрингбут + рест + сессии. Есть фронт на вуе. Фронт логиниться на бэк через рест-апи, потом юзер закрывает браузер. Потом открывает. Как вуе понять, что юзер уже логинился. Как это делается в СПА? Что-то в локальном хранилище храниться, кука какая-то особая или еще как-то? Если что, на фронт могу поставить Far и WinRar, это не проблема. Сам подход.. паттерн шаблона интересует
>>3578631 Да нет никакого шаблона. Все решают это кто во что горазд, потому что это не какая-то архиважная и архисложная задача. Просто делаешь отдельный эндпойнт, который возвращает тебе информацию о пользователе и шлёшь запрос при загрузке страницы. Возвращаешь 401, если пользователь не аутентифицирован, чтобы форму логина показать.
>>3578667 >Просто делаешь отдельный эндпойнт, который возвращает тебе информацию о пользователе и шлёшь запрос при загрузке страницы. Возвращаешь 401, если пользователь не аутентифицирован, чтобы форму логина показать.
Спасибо, анон. Этот именно то что я хотел услышать. gptRar кстати так же ответил.
>>3578668 >Выйди - зайди нормально. Фронт просто на 11 винде.
>>3578684 >Введение >Потоки, лямбда-выражения, комбинаторы, коллекторы хех, мда, вводят по самые гланды >Часть 7. XML >Тема 21. Введение в XML >Тема 22. Описание и проверка структуры XML >Тема 23. Apache Ant >Тема 24. XPath >Тема 25. XSLT это прямо уже суровейший нафталин, особенно Ант блять
типичная строго протокольно-академическя хуйня, приспособленная не для того чтобы научить, а чтобы отчитаться
>>3578957 Это юзлесс в качестве введения обучающего пособия. Причём там почему-то сильно разные уровни, при том что это advanced введение, в одну кучу свалено ввод-вывод, что вроде для бегиннера и рефлекшон, что вроде как уже сильно адвансед. Потом идёт раздел "потоки", при том что в профессиональной сфере "потоками" называют threads (многопоточность), а не streams. Что разумеется только добавит путаницы в голову студента, и непонимания в общении с коллегами.
Ты автор?
>>3578943 Много где это прямо ОЧЕНЬ сильно заявление. Конечно же нет, но он ещё встречается. Причем что самое забавное что он встречается в тех конторах, куда скорее всего студент не пойдёт, а куда поёдет там давно джейсон и грэдл, ну максимум мавен. XPath и XSLT это прямо вообще СУПЕР вымирающие звери. Я так понимаю Ант туда впихнут из-за конфигов на хмл, иначе вообще непонятно что система сборки кода делает в разделе про хмл
>>3578968 >С другой стороны знать, что такое существует полезно. Это не дихотомия, это разные уровни владения. Нужно примерно понимать какие у тебя есть варианты, но это не значить что всех их нужно знать до уровня применения, потому что это юзлесс
>>3578970 >Много где это прямо ОЧЕНЬ сильно заявление В контексте языка, в треде которого мы постим, нет. Всякие интеграции с сервисами, которые написаны на джаве, используют XML активно, их нет смысла менять, так как там всё "просто" работает. И как раз студенты туда пойдут очень охотно за опытом. XPath используется достаточно активно, чтобы ему обучать, XSLT может и помирает, тут не знаю. Отдельно можно упомянуть, что майкрософт когда-то понапихала XML в свои продукты, из-за чего для парсинга тех же новых офисных форматов придётся парсить XML. И в других местах тоже вылезет.
>>3578982 >В контексте языка, в треде которого мы постим, нет. Всякие интеграции с сервисами, которые написаны на джаве, используют XML активно Понятно. Ну я вот сейчас проверил по hh.ru, из 1216 вакансий хмл нужен в 83х. Так что да, думаю ты прав.
Кто-то знает у озона и точка банк удаленка только по РФ или по всему миру? Может кто-то наведёт на список компаний с удаленкой по всему миру? а то грумсно в +8 в дс в темноте сидеть 6 месяцев в году
>>3541519 Корутины на котлине - это не простота. Может жава новые лёгкие потоки и простота, но котлин корутины - нихера. Есть статья в глобальной сети интернет - почему отлов исключений в котлин - это не простота. Почитай, интересно.
Привет, как себя сейчас джава чувствует на рынке Пытаюсь без накрутки с 2годами и парой месяцев реального опыта в хайлоаде (но с точки зрения объема данных, а не количества запросов) найти новый проект, так как их старого вырос, как по зп так и по скилам. И уже некоторое время не могу это сделать. Как-будто на собесах ищут мидл+/сеньер по цене мидла и что бы еще и стек и задачи полностью совпали с их ожиданиями, даже если в 1ой либе (которая учиться за вечер) мистчам то кандидат летит в урну. Уже подумываю об выкате из джавы если честно,потому что дальше сидеть на моем проект это карьерынй суицид
>>3579293 Я работаю на проекте для аналитиков, который в реал тайме обрабатывает сообщения. (стримы kafka flink), у нас нет фронта и почти нет контроллеров (пишем только для сервис ту сервис редко). Для себя пишу еще на го кое-что и паршу кое-что на питоне (потому что удобно) Но это же не уровень собесов и в любом случае хрюша ждет резюме где написано что я ахуенно владею другим стеком и решал кучи задач на нем в прод.
>>3579297 Напиши хрюше нейронке то, что она хочет видеть. >Но это же не уровень собесов Готовься к собесам. И вообще не знать синтаксис очередного императивного языка, который изучается за 3 дня вместе с нужными библиотеками, гораздо хуже, чем не разбираться в предметной области, с которой тебе предстоит работать, но знать синтаксис - такой распиздяй на самом деле гораздо дольше будет въезжать в работу и скорее всего вылетит с испытательного. Если только мы не говорим про элементарное крудошлёпство, где ожидаемые от кандидата компетенции действительно исчерпываются знанием ПЕХОПЕ и СИМФОНИ (или джава и спринг, похуй, нужное подчеркнуть).
>>3579305 Ну кароч тогда самый оптимальный путь это сделать 2-3 резюме на го, джаеб и питухоне (на каждый стек по резюме) В каждом докрутить до 3х лет минимум (ибо фильтра hr все дела) И брутфорсить собесы, одновременно качая скилзы, так как после первых пары собесов будет точно понятно, что рынок от меня хочет
Эт я наверно ебантуый, хотелось честно как-нибудь, но видимо пока ни как
>>3541493 > А зачем, если есть виртуальные потоки? Так это и есть асинхронщина. Ты буквально спросил зачем нужен автомобиль если есть машина. >>3541519 > Но главный плюс в них - это простота, потому что код выглядит как обычный код, а не лапша из реактивных операторов. Простота? Ну, на уровне хеллоу ворлда может быть. В реальности как ты и написал выше делаешь тоже самое что и при работе с обычной многопоточкой. Также нужно синхронизировать данные между корутинами, также нужно держать в каком-то списке жобы, так же нужно не забывать обрабатывать сигнал отмены выполнения. Каждый раз когда я вижу "простой" код на корутинах в ревью я понимаю что найду кучу багов.
>>3579267 >>3579310 Я имел ввиду простота по сравнению с реактивщиной. Понятное дело, что писать тупой блокирующий код намного проще, любая обезьяна сможет. Но nio и асинхронщина дает бенефиты
>>3579323 Оно даёт бенефиты только в очень специфических условиях, а именно когда у программы огромные затыки на IO и ты ничего с этим не можешь сделать кроме как ждать - не можешь оптимизировать запрос к базе, запросы к другим сервисам и т.д. Этот хайп вокруг нишевого решения привёл к тому что люди просто ленятся оптимизировать, и это типо нормально - у нас же асинхронщина! а не тупой синхронный код.
>>3579597 >а именно когда у программы огромные затыки на IO да, весь ентерпрайз упирается в io >просто ленятся оптимизировать как ты оптимизируешь нагрузку 10-15к рпс на интсанс, где каждый реквест ходит в кэш/бд/еще куда то по сети? Если сделаешь на nio сервере, то ты очень много будешь экономить на памяти (обычные треды жрут очень много памяти и если мы говорим еще в рамках лоу латенси, то опускание до кернел спейса - дорогое). А так у тебя будет фиксированный мэин пулл + io воркеры.
Конечно это сложнее блокирующего подхода, но если у вас такие ребята в команде, которым сложно и они не вывозят по скилам, то да, для вас лучше докупить машин, поднять доп инстансы и справиться таким образом с рпс. Надо знать вводные данные, чтобы принять решение
>>3579634 >как ты оптимизируешь нагрузку 10-15к рпс на интсанс ну например уберу тысячи микросервисов и соответственно необходимость в куче ИО/сериализации? это же типичная ситуация когда сами же создали проблему и потом сами же героически решаем 10-15к рпс, это не то что бы какая-то выдающаяся нагрузка для монолита
>>3579634 >где каждый реквест ходит в кэш/бд/еще куда то по сети? Можно так же реквесты к БД оптимизировать руками, в подавляющем большинстве случае проблема в неповоротливом ORM, которое генерирует трёхэтажные запросы
>>3579652 Мы вообще не про микросервисы и монолиты, тут это не влияет ни как.
10-15к только на один инстанс, а не на весь сервис. Тысячи сервисов нет. Есть 10-15 команд, которые разрабатывают свои продукты. Иногда продуктам надо шарить данные для определенных юз кейсов.
Но я тебя понял. То есть проще пересторить организацию компании, загнать все продукты в один в монолит, придумать новую систему развертывания и организации кода. Да, уйдет десяток http вызовов, который имел долю 0.5% от общего io, добавится связность продуктов, доменные модели будет намного проще перемешать. А раз в твоей компании работают челики которым "сложно" nio, то они точно навертят такое говнище в монолите, что вы ахуеете
Какие вы додики, кто спорит про монолит не монолит, я в ахуе. NIO это не про микросервисы вообще. У тебя так же монолит может захлебываться от потоков и переход на асинк ему поможет. Но щас ты продолжишь спорить с очевидными вещами, давай
>>3579674 >Да, уйдет десяток http вызовов, который имел долю 0.5% от общего io мощный коупинг, где у тебя кроме http связок и базы еще затык на IO? >То есть проще пересторить организацию компании Какая организация компании, нужно просто выбросить ебаные микросервисы, почему у вас организация компании привязана к софтверной архитектуре? Вы каждый раз когда архитектуру меняете - компанию перекраиваете?
>>3579841 >где у тебя кроме http связок и базы еще затык на IO клиентcкие реквесты, сокеты, база, распределенные кэши, брокеры >Какая организация компании, нужно просто выбросить ебаные микросервисы Чел, если ты работаешь в шаурмечной над админкой, где команда из 5 человек, то о чем мне с тобой разговаривать? У тебя все сводится к микросервисам, иди лечись
>>3579873 Ну, он тебе так и сказал, в больших системах с кучей сетевых вызовов. А она большая с кучей сетевых вызовов потому что все раздроблено на микросервисы. Что с помпой решается асинхронщиной - сами создали проблему, сами и решили. Ты сначала научись читать и думать без гопоты, тогда можно будет в разработку идти.
>>3579887 Тебе уже даже ллм с нейтральным промотом пояснила, что ты хуйца соснул, зачем ты копротивляешься, попуск?
Из твоих рассуждений очевидно, что ты работал только в мелких говноконторах над админками, где один реквест пер час и мб иногда отчетик собрать надо было. И из инфры только майсикюэль. Мб ты еще и бывший пэхэпэшник, лол? Плюс у тебя все сводится к тейку: "ЭЭ мм, ну микросервисы говно, лишние реквесты эээ уу" Вообще 0 понимания как организована работа в бигтехе и какие сложности это несет
>>3579898 >Вот видишь, ты сам предлагаешь пилить монолит на микросервисы. Это не микросервисы, а воркеры по сути. В прошлом проекте архитектор настолько охуел что уже распиленные микросервисы еще распилил на воркеры, потому что криворукий уебан. Один тащил HTTP, а три других нагрузку.
>>3579674 > Да, уйдет десяток http вызовов, который имел долю 0.5% от общего io Мы делали бота для whatsapp который работал через их очень странный API. Наше решение (то ради чего бот вызывался) отрабатывало за 100 мс. Запрос к серверу whatsapp отрабатывался за 4000 мс.
Подозреваю, что аналогичные приколы и с микросервисной архитектурой когда два микросервиса могут быть закинуты на физические серверы на разных концах планеты и пока они друг другу будут пинболить запросы пользователь уснёт.
Первый компилируется, а второй нет. Хотя что в одном, что и в другом случае, будет происходить проверка instanceof и в случае его истинности создание шаблонной переменной. В чем подвох?
>>3581304 Умножение ты имел ввиду? Что в первом, что во втором варианте зайти в тело if можно только если x instanceof Integer i выдаст true, то есть переменная i будет в любом случае объявлена и инициализирована независимо от использования && или &, это необходимое условие чтобы зайти в тело if. Но почему то во втором варианте компилятор ругается, хотя & еще более строгий оператор, потому что он проверяет оба логических выражения в любом случае независимо от того выдаст ли false левое логическое выражение или нет.
>>3581497 Ну та же гугловская нейронка не помогла, она мне выдала фразу в стиле "потому что потому", но проверить является ли ответ нейронки очередным бредом или не является не представляется возможным. Благо нашел рандомный тред на стэке в котором люди сами не понимают почему так и всё действительно сводится к ответу "потому что потому". Ну ладно.
>>3581557 Я нигде не писал, что & что-то сравнивает, в данном случае это просто логический бинарный оператор который возвращает true если оба выражения слева и справа истинны.
>>3581621 >забайтил вас Да не забайтил, я потом на скрине в следующем посте все переменные на Integer исправил, потому что с Number автораспаковка и приведение не работает и там в обоих случаях будет ошибка, да. Но с Integer-ами первый варик компилится, а второй уже нет. Гуглил, но там точных причин такого поведения не называют, есть лишь предположения, потому что так-то оно из чисто логических соображений должно компилится по идее.
>>3581638 >и сказано что && обязателен потому что вначале надо сматчить, потом уже использовать
В чем проблема использования &? В моём примере также: в условии if сначала матчится, а начинает использоваться только в теле if. Всё логично? Вполне. Сначала создаём и инициализируем переменную, а затем используем.
>& не сравнивает, а вычисляет новое значение Ну да. & строго вычисляет оба выражения слева и справа. Результат этих выражений либо true, либо false. Если оба выражения true, то блок if становится истинным и происходит работа блока кода if.
>>3581665 Ну вот полная версия всего этого фрагмента с && и & из версии 22 года. Если учитывать весь этот контекст, то Шилдт осознанно верит в эту шизу. Он, например, пишет:
>This fragment compiles because the if block will execute only when both sides of the && are true. Thus, the use of iObj in the if block is valid. However, a compilation error will result if you tried to use the & rather than the &&, as shown here:
И потом ниже он пишет еще вот это: >In this case, the compiler cannot know whether or not iObj will be in scope in the if block because the right side of the & will not necessarily be evaluated.
То есть Шилдт оправдывает компиляцию с && и некомпиляцию с & тем, что при && блок кода в if выполнится если оба логических выражения истины. Но, опять таки, & также требует чтобы оба выражения были истины. Разницы вообще нет, но у него она есть, как будто & этого не требует. И затем, про & он еще добавляет ту мысль, что & не гарантирует выполнение правого выражения, но как раз таки & и работает так, что она в строгом порядке вычисляет и левое и правое выражение.
Ну то есть вообще какая-то мегашиза. У него там тупо всё перевернуто с ног на голову.
>>3581727 Ну да, на стэке тоже говорят, что под капотом что-то специфически работает, но это довольно любопытно почему у Шилдта до сих пор написана такая шиза в книге. Но да ладно
>>3581728 Просто надо писать на котлине, где есть смарткасты, которые все эти кейсы решают на изи. Конечно джетбрейнс пидорасы, но язык хороший, жду когда его в апаче фаундейшн передадут/продадут
Чего такого интересного можно заимплементить на джаве? Вот вроде хочется прекратиться из aqa в разработку, но чёт что одно что другое такая духотища и че блять поменяется
>>3581741 Я в курсе, поэтому и говорю вряд ли. Хотя, вообще-то, может и не вряд ли, для foreach же вроде именно трансформация и используется, значит такие приколюхи в компиляторе есть.
>>3581751 Я один раз читал, что & может пригодиться для случая, когда надо сделать конструкцию с if, при которой будут выполнены(вызваны оба метода/выяисленны оба выражения) оба условия. К примеру, нужно обращаться по сети к двум штукам и получать ответ(зачем - уже не так важно), который переводится в boolean и далее если оба результата в виде boolean будут true, то делать какую-то фигню: ToServA a=new ToServA(); ToServB b= new ToServB; if(a.doQuery()&b.doQuery()) {...}
Таким образом будут сделаны два запроса, а не один, если бы там был &&.
>>3581753 >Я один раз читал, что & может пригодиться для случая, когда надо сделать конструкцию с if, при которой будут выполнены(вызваны оба метода/выяисленны оба выражения) оба условия. Что является антипаттерном. Если нужно гарантировано выполнить оба бранча, надо явно вычислить значения, а потом уже делать логические операции. В документации оператор & вообще указывается как битовый, а не логический хотя с boolean он работает https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html
>>3581706 >>3582014 >В документации оператор & вообще указывается как битовый, а не логический хотя с boolean он работает Совсем забыл! В JVM specification boolean отсутствует есть, но очень ограничено для массивов и полей класса а в байткоде все операции идут с int. Т.е. & работает с boolean потому что никакого boolean нет, а есть int. Т.е. для && реализована отдельная логика, а для & тот же код который работает с бытовыми операциями.
>>3582288 благодарю, знать указатели/стек/кучу как минимум точно надо, пойду ковырять бтв, пришёл к вам похвастаться, подняли зп!!!!, вместо 45к получаю 87к теперь!
>>3582300 Земля пухом, коллега Год назад удалось съебунть с похожего проекта (правда увяз теперь в легаси банковском говне и не выбраться из-за ноу хаера) Какждый раз когда слышу - vaadin, холодный пот выступает
>>3582306 ну вот в планах залутать 1.5 года опыта и уже что-то думать в идеале перекатываться на ГО но 1.5 года это вообще не мидл у нас ещё и никого старше нас нет, сидят 3 ебала, из которых у двух 2 года опыта, на этом всё короче, кодовая база в ахуе наверное
>>3582300 >>3582306 Вот вопрос, у вас на этих гречневых проектах сидели деды(опционально, которые изначально это и написали)(типа мидлы-сеньки с двумя-тремя годами за деньги программирования)? И другой вопрос, как потом расписывать это говно в резюме, это же считай, что рнн в плане навыков, только деньги получал.
>>3582316 вообще да, на вопрос "чем занимался эти полгода, опиши самую интересную задачу" хуй отвечу скорее всего проект описать смогу может ещё, а вот интересную задачу - точно нет это печально шопиздец, придётся выдумывать
>>3582312 У меня сидел сенька 6 лет опыта только на этом проекте, получал мало, но почти в соло написал проект и врос в него яйцами, тип стал не заменимым, ему по тихноньку апали зп раз в пол года и он дуносил месяцами Он же все это и написал >>3582316 Я продержался год, потом крутанул год и устроился в галеру в банк, задачи либо придумывал либо барл у этого сеньки и пиздел что мои, устроился на 190к но прогадал и попал в такое болото, что жалею, что не поискал на месяц два побольше Лютое говно ток без ваадина И начался ноу хаер, так и сижу тут без апа зп и без апа скилов (тупо пару однотипных задач из раза в раз деалю)
Выучил го и попробовал себя в нем, прошел недавно все тех этапы в биг кек, а на финале обосрался как раз на вопросах про самые длинные сложные задачи, рассказал старую джуновскую, а натот грейд на который шел ее мало было А новых сложных я не делал, лол
>>3582872 Хз, все так же вкатывались через говноработки, только теперь это "да ну, чего я пойду как в макдональдсе получать/да я на доставке больше сделаю", а тогда шли, вот собственно и вся разница. Причём что самое забавное уже тогда говорили что ИТ всё и вкатиться невозможно. А через несколько лет ты узнавал что ВОТ ТОГДА была лафа, а теперь ИТ всё и вкатиться невозможно. И так каждые несколько лет.
>>3582900 >самое забавное уже тогда говорили что ИТ всё и вкатиться невозможно Я так в 2011 дропнул вкат, лол, помню точно python 3.2 качал тогда, это 2011 год, начало. Читал ту самую dive into python вроде бы. В итоге несколько лет проебал на бесперспективных дноработах. Если не кабанистый, не продажник, без вышки, то кроме программирования ничего и не остается. Ещё есть рабочие специальности, но на то время это вообще не рассматривалось. Это сейчас можно на условный полиметал вкатиться, и то там вышку требуют, а тогда подобные места были как в той пасте сварщика гарика-релакса, по крайней мере в массовом сознании и моём тоже.
>>3582327 >устроился в галеру в банк >прогадал и попал в такое болото, что жалею, что не поискал на месяц два побольше >Лютое говно Таааак а название банка случайно не связано с названием компании по добыче природных ресурсов, коллега? помогите, чем угодно, но лучше спрингом...
Сап аноны! Насколько тяжело и долго свичнуться с pyrhon на java? Я мидл бекенд, тут очень попросили хорошие люди помочь с поддержкой проекта на стеке java, spring boot, postgresql, синтаксис учил, в целом код читаю и понимаю что там написано, но опыт разработки есть только на python, на джаве опыта разработки нет. Почему не отказался, потому что хорошие знакомые попросили, объем работ небольшой, есть возможность просто потом сесть на поддержку и лутать ежемесячную небольшую плату изредка правя баги. На что обратить внимание? Буду рад вашим советам аноны, с меня как обычно два литра крепкого нихуя!
>>3583070 Если ранее ты когда-то видел c++, то перейти на java будет легко.
Другое дело, что в java очень многое, что есть в c++, отсутствует. Более того: нет тебе слияния массивов, работа со списками требует предварительно описать то, какого типа списки будут, лябда выражения как отдельный вид издевательств.
Но есть один плюс: не будет бед из-за того, что неверное число отступов или отступы разных знаков.
>>3583112 >Если ранее ты когда-то видел c++, то перейти на java будет легко. вообще ничем не поможет, будет только мешать, абсолютно разные парадигмы мышления должны быть
>>3583124 Шаблоны(дженерики) действительно ужасные в java. А ещё надо сказать вот что: java это очень урезанный c++: ни множественного наследования, ни возможности приводить ссылку к любому типу... Хотя в java есть целый пакет для рефлексии, но при любых более-менее значимых финтах ушами виртуальная машина выдает ошибку м все.
А что для record-ов (хотя бы) удобных литералов не завезли? public record User(String id, String firstName, String lastName) {} ... var user = new User("Vasya", "Pupkin", "123"); // ой
Чего-то вроде такого нет? var user = new User { firstName: "Vasya", lastName: "Pupkin", id: "123" };
Какие есть костыли кроме билдеров и обёрточных типов для ситуации, крогда у record-а много полей одинакового типа?
В банках очень грустно, я большую часть времени трачу на переписки, инфру, борьбу с отвалившимся легаси, борьбу с конфигами, ожиданием отвисания ВРМ, а на код немного. Чувствую как отупел и тупею дальше, забывая то что знал. А другой работы нет, вот так, приходишь сеньором, а уходишь джунлм, добро пожаловать в банк!
>>3583403 Чел какие рекорды, хорошо если java 11 в банке есть, а на 17 там будет тройка микро пенисов с парой контролёров, тебе на этот рекорд похуй будет, это для laba1
>>3583112 >Другое дело, что в java очень многое, что есть в c++, отсутствует. Так в этом и и плюс, что меньше ебёшь себе мозги всякими r-value reference-ами, имплисит move конструкторами, и ошибками инстациирования шаблонов в рантайме. Какой вменяемый человек скажет "да, давайте побольше такого!"? >Более того: нет тебе слияния массивов Array.concat(arr1, arr2)? >работа со списками требует предварительно описать то, какого типа списки будут Нет, если тебе не нужна помощь статической типизации - просто объявляй Object[] >лябда выражения как отдельный вид издевательств. Необходимость указывать КАК и КАКИЕ параметры захватывает из контекста лямбда в с++, это я так понимаю ДРУГОЕ, верно? Совсем не издевательство.
>>3583403 >Какие есть костыли кроме билдеров и обёрточных типов для ситуации, крогда у record-а много полей одинакового типа? Груви def s2 = [age: 36, name: 'mrhaki'] as Sample Просто сделай отдельным модулем, и пиши все что требует сахара туда. По сахару груви даже круче котлина.
>>3583070 По хорошему это дело нескольких месяцев, в принципе переходить с языка на язык в мейнстримных ЯП не сложно, когда у тебя есть опыт хоть какой-то.
>>3583407 да не нихуя. я за 8 лет перекатывал стеки регулярно. часто подгорает срачельник и приходится учиться ну и эти ежегодные проверки грейда впрочем мне сеньер+ хватает. дальше там надо выступления делать и статьи писать а мне западло. как и в тимлиды или техлиды идти. рот ебал за лишний полтос жопу рвать
>>3583407 Полтора года в банке, недавно был собес и я забыл как писать sql запросы, потому что мне sql приносит аналитик. Доступы отваливаюcя, гига idea отваливается Билды отваливаются
>>3583610 Не понял как связан навык написания sql и просмотр плана запроса? Я делаю, но это не спасло ситуацию и на собесе я обосрался, просто потому что давно не писал sql
>>3583623 Spark + jdbc, говорит тебе о чем-нибудь такая связка
Ты на вопрос то не ответил, как связаны редкие оптимизации и навык, который забылся Запросы пишутся jooq`образным образом (если тебе это о чем-нибудь говорит)
>>3583713 JdbcTemplate, много больших запросов у нас, где надо думать над джоинами, индексами и т д. SQL охуенный язык для этого, лучше ничего не придумали. Зачем его оборачивать в какой то dsl урезанный хз, пользы в этом не вижу
>>3583773 >JdbcTemplate пиздец как путаюсь в этих всех spring data spring jpa jdbc jdbctemplate hibernate hibernate native query что когда применять хуй поймёшь
>>3583773 С переходом к импортозамещенному постгресу это лучшее решение для спринга. Раньше на базанейм изза кривых jdbc драйверов которые хуево работали с метаданными для резальтсетов приходилось вообще голый ждбц юзать.
Дада прям в автоклозаблах из хикаридатасорса дергать конекшен, препарить стейтмент, маппить параметры а потом обрабатывать резальтсеты.
>>3583993 Это конечно деанон по базанейм. Но у одной базанейм настолько ебаные ждбц драйвера, даже для 4 ждбц, что они тупо в метаданных резальтсетов виесто алиасов из запроса хуярили реальные колумн неймы нахуй. И ждбц темплейт в роумаппере никуя не видел нужных колонок.
У постгреса ждбц друвира норм. Прям можно кайфовать
>>3583988 Там есть поддержка хотя бы популярных оконных функций? Если и есть, то через дсл это будет выглядеть ужасно. sql - охуенный мощный язык, зачем его оборачивать в какой-то дсл? Дсл для макак, которым голый sql сложнаааа. Но или если запросы чисто вставить и достать.
>>3584093 Потому взял захотел и обернул Как же меня заебали уебки в любом из тредов в любой из тематик, которые берут что-то и говорят, что если кто-то так же не делает, то он лох Я беру свой маленький член и засовываю каждому из самоутверждающихся додиков за щеку Просто потому что так хочу ВСЕ
>>3584118 Профит от дсл то какой? Мне и моей команде дсл усложняет логику тем, что добавляется бесполезная прослойка. Если ты используешь что-то просто потому что тебе это нравится и без какого либо обоснования, то ок
>>3584093 >Там есть поддержка хотя бы популярных оконных функций? >Если и есть, то...
Звучишь так, будто сам в своих доводах не уверен, и проверить не удосужился. Зато понты то как расчехлил - "дсль для макак". Аки Жириновский, исекайнувшийся в кодера в 2025м.
Че тебе еще сказать. Спасибо что не хубернейт, хули.
>>3582306 Вот чем вам не нравится Vaadin, объясните? Я не тролль. По мне так удобно для быстрого написания админок и т.п. И ещё сложные формы удобно весьма.