Это копия, сохраненная 11 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1. LOOM [★★★★☆]
new Thread(runnable).startVirtualThread();
2. Structured Concurrency [★★★★☆]
Response handle() throws ExecutionException, InterruptedException {
----try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
--------Future<String> user = scope.fork(() -> findUser());
--------Future<Integer> order = scope.fork(() -> fetchOrder());
--------scope.join();
--------scope.throwIfFailed();
--------return new Response(user.resultNow(), order.resultNow());
----}
}
3. Linux/RISC-V Port [★★☆☆☆]
Теперь жабу можно запустить ещё на одной никому не нужной архитектуре.
4. Record Patterns [★★☆☆☆]
if (o instanceof Point(int x, int y)) {
----System.out.println(x+y);
}
5. VECTOR API [★☆☆☆☆]
float[] a = new float[] {0.1F, 0.2F, 0.3F, 0.4F};
float[] b = new float[] {0.5F, 0.6F, 0.7F, 0.8F};
FloatVector va = FloatVector.fromArray(FloatVector.SPECIES_128, a, 0);
FloatVector vb = FloatVector.fromArray(FloatVector.SPECIES_128, b, 0);
FloatVector result = va.add(vb).div(4F).pow(2F).neg();
6. MEMORY API [★☆☆☆☆]
MemorySegment nativeSegment = MemorySegment.allocateNative(100, ResourceScope.newImplicitScope());
Предыдущий: >>2458869 (OP)
Жаба гораздо хуже, чем шарп.
Какой же ты пидорас
Что означают звездочки в каждом пункте?
Ждём LTS, а там посмотрим.
Я там проработал всего ничего, сбежал на испытательном сроке. Насколько это реально был помойный проект?
>java-8, spring 4 без бута, все деплоилось на 7ой томкат? часть конфигов в хмл, часть кодом, без тестов, фронт на велосипеде поверх древнего реакта
Ну и 3 пик.
Это пиздец.
Насколько фича крутая и важная.
Проще кодера пришибить нахер, чем заставить его писать чистый код тогда, когда ему это не интересно. Никакой язык его не заставит, нет такого языка.
> StructuredTaskScope
> resultNow
Какой же пиздец. Даже сраный go по сравнению с этим выглядит как мечта
Вообще-то в go нет structured concurrency.
https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/
Согласен, но котлин.
Сам факт того, что ты задаёшь такой вопрос, уже означает, что перекат нихуя не легитимный. Но хули делать, если не репортит никто.
Замерь через профайлер.
@
TASK REPOSITORY
@
TASK SERVICE
@
TASK CONTROLLER
@
ДА НАХУЙ ВАШ ООП НУЖОН, В МОЕМ СПРИНЬГЕ НЕТ БОЙЛЕРПЛЕЙТА И ВООБЩЕ ВСЁ КОРОТКО И ЗАЕБИСЬ!
То ли дело rich domain model, когда в классе Task 5000 строк с полями, коннекшенами к базе, SQL-запросами, HTTP-запросами, SOAP-запросами, лисенерами очередей, валидаторами, конвертерами, мапперами и бизнес-логикой.
То ли дело чистое ООП, нихуя не избыточный кал
List<Text> sorted = new ListOf<>(
new Sorted<>(
new Split(
new TextOf(
new File("/tmp/names.txt")
),
new TextOf("\\s+")
)
)
);
Это не rich domain model, это cringe domain model. В настоящем ООП классы по 200 строк кода максимум.
"Настоящее ООП" и есть cringe domain model, если ты захотел свалить несколько классов с разной ответственностью в один god object.
Elegant Object мертво и неактуально. Все его адепты во главе с Бугаенко давно пересели в филиал двачевого /po/ под кодовым именем "Созидание".
> мертво
Лол, в /pr/ можно встретить даже адептов Smalltalk с труъ ООП, а уж шизики с элегантными объектами здесь ещё лет 20 будут срать.
Ну, двачевое коммьюнити тоже поширше ЕОшного будет...
Или может в пизду вообще этот фронт? Хватит чисто реста какого-нибудь для проекта в резюме?
> все говорят, что без них никто на тебя даже не посмотрит
Пиздят. Те, кто собеседует, ебали целыми днями смотреть проекты вкатунов, им рабочих проектов хватает, максимум попросят во время собеса рассказать за пару минут, какие учебные проекты делал. Так что проект для вката ты пишешь в первую очередь для себя, чтобы закрепить знания на практике.
> Фронт идет очень туго
Это норма, от бэкендера никто и не ждёт глубоких познаний во фронте. Но основные принципы понимать нужно, это тебе пригодится, когда будешь ставить технические задачи фронтендерам (а занимаются этим обычно бэкендеры), хотя бы для понимания, возможно ли что-то сделать на фронте. В своём учебном проекте можешь ограничиться шаблонизаторами и парой рестов со сваггером, на дизайн и удобство забей, можешь все делать хоть без стилей и картинок.
Я делал на голом js fetch-api + bootstrap, подключенный прямо в индекс-штмл.
Конечно пришлось потратить время на изучение js. И писал я на нем с большим трудом, бить голый жс на компоненты, чтобы не запутаться это боль. Хотел уже реакт учить.
Но до этого я смотрел серию видосов про проект на шаблонизаторе и переделывал его под другую доменную модель под свой пет-проект. Шаблонизаторы лично мне вообще не зашли.
Ну и дергание жса потом потребовалось, я рест немного попрактиковал, отдаленно представляю что делают фронты, теперь предпочитаю писать запросы в клиенте идеи и иногда в сваггере.
>6. MEMORY API [★☆☆☆☆]
Аффтар шапки, просто не понимает зачем это нужно. По факту это 10/5. Это дешевый вызов нативных библиотек как в питоне или шарпе, это быстрые in memory кеши на много гигабайт, это возможность писать высокопроизводительные, низкоуровневые библиотеки.
Аффтар шапки вообще нихуя не понимает и живёт в манямирке. На то он и аффтар, что слишком мало анонов его зарепортило.
бамп
Одна из самых популярных технологий. Только за пределы РФ тебя уже никто не возьмет, слишком поздно начал вкатываться, родился не в то время не в том месте, итд.
>несколько классов с разной ответственностью в один god object.
Ты только что Yoba/Hui/KoproService.
Кому это нужно в жабе?
Vaadin заюзай, но не увлекайся, это залупища
Ебать вы тут говна пожрали.
Не помню было ли у него рос гражданство, но если да, то две сверхдержавы подерутся за право его мобилизовать
На самом деле он не раз говорил что не поддерживает войну, и нифига не путиноид как ему приписывают. Как мне кажется, он просто за себя. Здравая конструктивная позиция.
Либерда его ненавидела еще в 2016-2017, за его пост о сексизме и скандал на backendsecret. Ему правда на это было похуй. А вот реальная отмена началась, когда он поцапался с Барухом и компанией из jug.ru (они теперь без мата о нем не говорят). Впрочем, мало кто об этом помнит, многие до сих пор считают что его следует отменять за его ООП.
Проект Spring-Data-Jdbc появился намного позже Spring-Jdbc из основного проекта, и, очевидно, теперь существует какое-то количество кода с ждбстемплейтом, где его использование неоправданно. Сейчас ждбстемплейт стоит юзать только там, где нужны хитровыебанные билдеры запросов и не менее хитровыебанные мапперы, например, в сложных отчётах, где через дату будет ещё больше бойлерплейта и копипасты. Например, в нашем проекте много отчётов строится такими кастомизируемыми запросами на сотни строк, там никак без ждбстемплейта не обойтись.
Ну и если возможно обойтись без нативных запросов, стоит использовать Data-Jpa. Обойтись можно в большинстве случаев, но точно не всегда.
Как максимально ебанутое и топорное решение приходит тупо получать Date(), потом получать его время (getTime), и вычислять остаток от деления на количество миллисекунд в сутках. Как только детектится начало нового круга (обнуление остатка), выполнять задачу и ждать нового цикла. норм или так только долбоебы делают?
Сейчас открываешь любую вакансию и там список на лист формата А4 с требованиями: спринг такой, спринг сякой, всякие хуйбернетей, жпа, кафку-хуяфку, раббитМКу. Я даже слов таких не знаю, не говоря, чтобы на них что-то написать.
И даже если всё-таки решил это выучить, у тебя всё равно нет возможности, потому что нет учебников по этим технологиям. По документации невозможно учиться, потому документация - не учебник. Она предпологает, что ты уже дофига знаешь по этой теме.
Кроме того, изучаешь джава кор и у тебя один стиль программирования. А когда изучаешь фреймворки, то тебе предлагают совершенно иной стиль, совершенно не похожий на кор. Как-будто изучаешь новый язык. Смотришь такой на код, вроде джава, но ни хрена не понимаешь, что там написано.
> Почему везде требуют знать кучу фреймворков даже на джуна?
А что, все должны писать бэкенд, и только джуны должны печатать список факториалов в консольку?
> И даже если всё-таки решил это выучить, у тебя всё равно нет возможности, потому что нет учебников по этим технологиям
Научиться гуглить тоже нет возможности? Всё есть, овердрхуя учебников, мануалов, курсов, видео, примеров.
Я смотрел этого вашего Борисова и вообще ничего не понимал. Как-будто он рассказывал что-то из другого языка, а не по джаве.
Но стоит попытаться начать писать что-то на Спринг. Всё валится от малейшего дуновения ветерка. Причём вылетает миллион эксепшенов в рантайме. Ощущение, что вязнешь в болоте какого-то говна, где уже не понимаешь ни структуры приложения, ни целей, ни что оно вообще делает.
Складывается ощущение, что Спринг придумал какой-то мазохист, который хотел убить в себе программиста. Заменив классической код на это говно с бинами.
Вот на кой чёрт нужны эти бины? Уже год изучаю и до сих пор не понимаю зачем они нужны. Просто бесполезное накручивания каких-то конструкций.
попробую, благодарю
Единственный плюс, который я для себя вывел - более удобная работа с ресурсами. Без спринга пришлось бы, например, вручную прокидывать по всему приложению пул коннекшенов к базе, а спринг это может делать за тебя, достаточно взять нужный бин из контекста. А так можно было бы все сервисы писать в классах со статик-методами.
Некоторые ещё пишут, что с бинами удобнее писать тесты, но по мне так себе затея, если ради блядских тестов надо учить сложные фреймворки, которые якобы и не для тестов вовсе.
Я вообще не понимаю как писать тесты. Везде пишут простенькие примеры: вот у нас типа метод, которые складывает числа, давайте проверим будет ли 2+2=4. А как тестировать методы, которые извлекают инфу из базы данных и пишут результаты обратно? Как тестировать REST API?
DI + test doubles
> А что, все должны писать бэкенд, и только джуны должны печатать список факториалов в консольку?
Так пусть и платят тогда соответствующе, а то обычно челам нужен джун, который знает то же, что и мидл, только имеет меньше опыта работы на проектах что кстати полная хуйня, тк на новом проекте тебе энивей нужно в нем с нуля разбираться так еще и платить ему готовы 50-100к, что явно пиздец как мало, особенно, если учесть, что верхняя граница, это скорее про дс
Толсто, в ДС это нижняя граница. Я когда собесился на джуна, назвал 40к, а мне дали 70.
Продолжай жить в своем манямирке. Я мониторю вакансии на джунов с весны, чтоб ты понимал, их количество с тех пор упало в два раза, сам можешь попробовать набрать на хх java junior по городу москва искать в названии вакансии и увидишь 10 вакух с требованиями кубернетисов, кафок и либ, которые мало где используются. Зп они конечно же тактично умалчивают, но иногда проскальзывают цифры 80-100к, как я и писал выше.
Я слышал у Айтибороды, что надо только джава кор изучить и всё, тебя возьмут на работу. А тут оказывается какие-то кафки ещё. Что это такое вообще?
>у Айтибороды
Впервые слышу, но, судя по названию, какой-то кринжевый чел.
Раньше можно было наткнуться на вакуху со знаниями жабы и сиквеля, таких уже давно нет, это скорее даже набирали интернов, а не ждунов, сейчас позиция интерна вымерла как вид, никому они нахуй не всрались, когда есть возможность взять чела со знаниями практически всех технологий на проекте, еще и заплатить ему столько же.
Я сам хз, откуда чела типо айтибороды берутся, они же даже отдаленно не понимают за айти рынок, кто их смотрит?
Сидят полтора-два года дрочат книги и документацию, обычно сидят в это время на шее у мамки, тк учить все это и при этом работать практически нереально, выгоришь через полгода, еще и будешь учить в месяц по чайной ложке.
На ютубе встречал такого блогера, который из продаванов перекатился в джава-разработчики. Он утверждал, что это доступно абсолютно всем и он типа нормальный человек. Но я думаю, что он наврал. Он не обычный чел, а задрот, который может сидеть и учить целыми днями эту мутотень. Нормальный человек выгорит очень быстро.
Ну если он вкатился до 2022, то еще можно поверить, там еще встречались вакансии интернов или псевдоджунов которые по факту интерны там был набор требований более-менее адекватный и люди вкатывались
>надо только джава кор изучить и всё, тебя возьмут на работу
Нет, это ложь. Никому чел со знанием только лишь кора не нужен.
>>475489
Рынок всего айти очень сильно сдулся по сравнению с концом 2021. Где-то более чем в 2 раза. Количество вакансий с жабой уменьшилось в 2.5 раза.
Но вообще айти сейчас по всему миру сдувается. Даже в США. Все эти цифровые сервисы в огромном количестве нахуй никому не нужны, тем более что пандемия с ее удаленкой закончилась почти что для всех.
>Откуда я их вообще могу знать
Открываешь документацию, книги, уроки на ютубе и оттуда узнаешь эти самые фреймворки.
>>475262
>Они сами-то, когда устраивались, тоже всё на свете знали
Нет, но они и устраивались совсем в другое время. Хотя c дедов знания Java EE может быть и требовали.
>>475262
>нет учебников по этим технологиям
Анус ставишь? Полно всяких книжек, и по спрингу, и по кафке, и по кролику.
>платить ему готовы 50-100к
Хз, стандарт для джуна-стажера это все еще блядские 40 тысяч. В сбере и яндексе тебе около 60 будут платить, тинькофф до 70к. Все, нет никаких 100к для джунов. Джун учится за 30-40к в ДС. И этого вполне хватает, чтобы с кем-то снимать однушку на окраине и еще на еду останется.
Ну не все такие способные значит. Мне вот не понятно. Почти все книги по Спрингу начинаются с бинов, а со второй половины выясняется, что это нафиг не нужно.
>Почти все книги по Спрингу начинаются с бинов
Потому что это основа спринга? Ты никогда не думал о том, что спринг в первую очередь это не фрейморк для бекенда, а DI/IoC контейнер?
Зачем они нужны, бины эти? Веб просто развешиваешь аннотации на контроллерах, базы - тоже отдельный класс. Бины нигде не используется, кроме из коробки самого Спринга.
> 30-40к в ДС
Возвращаясь к вопросу. Какого хуя я должен знать жабу, сиквель, половину всего спринга, докеры, куберы, кафки и тд за эти копейки? Эта хуйня учится минимум год до начального уровня. Дохуища профессий, которые требуют в разы меньшего для вката и при этом работа там легче, перспективы получать зп 300/наносек те же.Какая же айти ебучая помойка, в частности жаба с ее ебанутыми запросами от РАБотодателей.
>Веб просто развешиваешь аннотации на контроллерах
Как к сервисам обращаться будешь? Или ты из тех, кто всю логику в контроллерах хранит?
>>475708
Ну не хочешь, не учи все это говно, никто не заставляет. Вон, люди по 6 лет учатся на инженегров-конструкторов, чтобы тоже за 30к в Д работать. А там посложнее учеба будет.
>>475708
>Дохуища профессий, которые требуют в разы меньшего для вката и при этом работа там легче, перспективы получать зп 300/наносек те же
Какие? Хотя бы 5 штук назови.
Если брать все остальные требования на джуна, кафка там еще относительно простая. Можно поставить стартер кафки, посмотреть апи для простейшего сценария использования, и надеяться, что этого будет достаточно (нет).
>Эта хуйня учится минимум год до начального уровня
Так год на освоение новой профессии это мало, если ты не собираешься носить сральные ведра где-нибудь в цеху или на стройплощадке.
> Хотя бы 5 штук назови
Да любая инженерная залупа, дизайнеры, маркетологи, я когда учился в универе, общался дохуя с челами с инженерных направлений, они потом устраивались на 40-50к спокойно
Дело даже не в годах, а в том, что невозможно стать профи сидя дома. Это надо учить на реальных проектах. Вот толку я учил какой-нибудь хибернейт, а через месяц уже забыл что там и как.
При этом, кто сейчас там сидит, сами они вкатывались без этих знаний. Наверняка даже джаву толком не знали и путали строку с массивом. А сейчас сидят такие с умным видом, типа как это можно не отличить кафку от хуяфки.
Ты путаешь год интенсивного самообразования и несколько лет учебы в российских вузах, где по большей части дают нахуй ненужные знания. Можно просто какой-нибудь эксель или солид освоить за пару месяцев без ебли и пойти работать на тех же условиях, что и дефолт айти макака спец.
Мне отец говорил, что надо изучать сварку. У него знакомый по 170к зарабатывает сваркой.
Мужики, подскажите книгу/ресурс/курс, что угодно, чтобы можно было погрузиться в джаву кор и спринг на хорошем уровне (для вката), но чтобы это не была какая-то война и мир на 1000 страниц (и это блять я только кор пролистал, видимо на начальном уровне) и не тупо документация
По жаваскрипту и его фреймворкам дохуя ресурсов, по шарпу и дотнету хотя бы есть микрософтские курсы (не сухие доки), тот же метанит (джава кор там тоже есть, так только а дальше то что), а по джаве+спрингу толком нихуя
Джавараш вы сами поносите, он еще и платный с какого-то уровня
Hyperskill - годнота, вроде, но достаточно ли это будет для вката? Кажется, что маловато. И какой/-ие курс/-ы проходить на hyperskill, в каком порядке?
Да какой вкат? Ты что не понимаешь, что когда ты выучишь все, что надо сейчас, повыходит еще куча всего и в итоге ты просто проебешь время, хотя решай сам. Если всё-таки хочешь в айти, то рассмотри что-то помимо жабы, хотя б тот же питон, он проще раз в 10 и работы на нем больше
Это если сварка газовых труб, там реально навык нужен нехилый.
Потому что каждый месяц на рынок вываливается по 600 вкатунов после курсов от инфоциган. Поэтому вакансий для джунов нет.
>не была какая-то война и мир на 1000 страниц
Эккель - 1000 страниц (основы, ООП, дженерики)
Урма - 600 страниц (лямбды, стримАПИ)
Гетц - 500 страниц (многопоточка)
Блох - 500 страниц (джава кор адванс)
>джаву кор
По кору хорстманна + пикрил.
>спринг
Spring in Action старые издания, где кишочки подробно разбирают.
>по джаве+спрингу толком нихуя
Ну хз, есть куча мурзилок вроде баелдунга, где по спрингу много инфы можно найти. Ну и на стаковерфлоу есть почти любой твой вкатуний вопрос.
Не ебу как они там натаскивают. Я про то что тупо вкатунских вакансий нет уже давно, хотя раньше можно было попасть на галеру просто будучи студентотой на профильной специальности с пальцем в носу.
> Понимание методологий Agile, Scrum.
Это как?
Двачую, тот же неткракер брал чуть ли не любых студентов из ДС и нескольких областных центров. Сейчас все, закрылись нахуй.
Тут скорее не переизбыток вкатунов, а политическая ситуация в стране и мире. Нет больше вашего быстрорастущего айти, все, конец, рыночек больше не растет, а только непрерывно сужается начиная с конца февраля.
Предположу что речь о неткрекере. 5 лет назад это была топ индуская галера для вката (буквально в чате с индусами сидишь). Вместе с ней были еще епам, люксофт, хотя вроде у этого всего сейчас всё хуево в рахе.
Пиздец конечно, походу единственный варик валить в страны снг, там с этим должно быть попроще
Подтверждаю, ебам и лохсофт перестали нанимать сотрудников в РФ еще в феврале-марте, потом начали вывозить российских сотрудников в ближнее зарубежье. Там был добровольно-принудительный релокейт в сербию, но оказывается до сентября выехали еще не все и часть сотрудников пришлось сейчас экстренно эвакуировать из РФ.
Неткрекер приглашал в свой учебный центр вкатунов вплоть до апреля. Мне еще письмо прислали, мол поздравляем, мы взяли вас в наш учебный центр. В итоге начало обучения откладывалось и откладывалось, а в сентябре написали, что неткракер ВСЕ.
Разрешаю.
Добавь уже в шапку, что ждуны нахуй не нужны в 2к22 и если у анона нет желания потратить год+ на изучение бесполезной хуйни, то лучше забыть о существовании языка программирования жаба.
Пошёл нахуй.
ок.
Какая разница если джава платная, а из рф теперь платежи не проходят. Все с джавы сейчас переписать придется на свободный и опенсорсный дотнет
На дотнете ещё хуже. Я в прошлом году учил его и сбежал на джаву. Там в каждой версии всё с ног на голову переворачивают. Пробовал учиться по книгам за 2019 год, а ничего уже не компилируется, миллион ошибок. Ещё с десктопом под линупс обманули.
Пошёл нахуй.
При этом литературы по джаве полным полно, а литературы по спрингу нет, либо она на уровне хеллоуворлдов.
С джава кором не берут же, а инфой по спрингу никто не делится
Java EE 6.
>2022
>вкат в петужабу
Зачем?
Адекватных ресурсов для изучения - нихуя. Ты это и сам понял, особенно когда дауны выше тебе, вкатышу, советуют с ходу кирпичи в 1к страниц, справочники и цыганские сайтики с платными недотуториалами.
Требований - дохуя. Кор, спринг бут, хуют, секьюрити, дата, хуйвротнейт, мавен, докер, кафка, хуявка, и еще тонна кала. Рынок уже давно не считает жабодаунов за людей - они и бэкэндеры с самым уебанско-жирным фреймворком, и девопсы. Выучишь все это, а тебе для этого понадобится дохуя времени, тогда, может быть, возьмут работать за еду.
Сама работа - это легаси, жаба восьмая, тупой интерпрайз. Никто не стартует проекты на жабе. Никому она нахуй нынче не всралась. Она живет буквально засчет того, что раньше на ней дохуя что писали, потому что не было альтернативы.
Жаба в 2022 умирает, пик ее давно пройден. Когда-то на ней ебались с железяками, писали игры, десктоп, когда-то была андроид-разработка. Сейчас этого уже нет. Остался лишь тупой кобольный интерпрайз, который просто дороже переписывать.
Разработка на жабе - это просто ад. Убогий язык, морально старый. Писать на нем - мучение.
Нахуя? Серьезно, ради чего вы сюда лезете в 2022?
Нужен легкий вкат в айти, лишь бы вкатиться, то можно выбрать от тестировщиков с питоном до жопаскриптеров.
Хочешь интерпрайз - есть крайне фичастый и приятный шарп с дотнетом, в котором на ждуна нужно намного меньше говна навернуть, который имеет хорошие образовательные ресурсы, который имеет множество современнейших технологий типо блазор вебассембли, ксамарин, переходящий в мауи на уровне популярности флаттердарта если что, асп, у которого по сравнению со спрингом ебанутая производительность, юнити с играми, азур, который чуть ли не заточен под дотнет, и так далее, и так далее. Майки развивают платформу, все время что-то делают, улучшают, находятся на острие прогресса, а не как петужабский мир. Шарп с дотнетом и так были популярны, но мешало отсутствие кроссплатформенности. Сравнительно недавно кросс наконец завезли, популярность пошла вверх, уже догоняет петужабу, пик еще впереди. Серьезно, успевай залезть в вагон. Не лезь в мертвую петужабу, братан.
>2022
>вкат в петужабу
Зачем?
Адекватных ресурсов для изучения - нихуя. Ты это и сам понял, особенно когда дауны выше тебе, вкатышу, советуют с ходу кирпичи в 1к страниц, справочники и цыганские сайтики с платными недотуториалами.
Требований - дохуя. Кор, спринг бут, хуют, секьюрити, дата, хуйвротнейт, мавен, докер, кафка, хуявка, и еще тонна кала. Рынок уже давно не считает жабодаунов за людей - они и бэкэндеры с самым уебанско-жирным фреймворком, и девопсы. Выучишь все это, а тебе для этого понадобится дохуя времени, тогда, может быть, возьмут работать за еду.
Сама работа - это легаси, жаба восьмая, тупой интерпрайз. Никто не стартует проекты на жабе. Никому она нахуй нынче не всралась. Она живет буквально засчет того, что раньше на ней дохуя что писали, потому что не было альтернативы.
Жаба в 2022 умирает, пик ее давно пройден. Когда-то на ней ебались с железяками, писали игры, десктоп, когда-то была андроид-разработка. Сейчас этого уже нет. Остался лишь тупой кобольный интерпрайз, который просто дороже переписывать.
Разработка на жабе - это просто ад. Убогий язык, морально старый. Писать на нем - мучение.
Нахуя? Серьезно, ради чего вы сюда лезете в 2022?
Нужен легкий вкат в айти, лишь бы вкатиться, то можно выбрать от тестировщиков с питоном до жопаскриптеров.
Хочешь интерпрайз - есть крайне фичастый и приятный шарп с дотнетом, в котором на ждуна нужно намного меньше говна навернуть, который имеет хорошие образовательные ресурсы, который имеет множество современнейших технологий типо блазор вебассембли, ксамарин, переходящий в мауи на уровне популярности флаттердарта если что, асп, у которого по сравнению со спрингом ебанутая производительность, юнити с играми, азур, который чуть ли не заточен под дотнет, и так далее, и так далее. Майки развивают платформу, все время что-то делают, улучшают, находятся на острие прогресса, а не как петужабский мир. Шарп с дотнетом и так были популярны, но мешало отсутствие кроссплатформенности. Сравнительно недавно кросс наконец завезли, популярность пошла вверх, уже догоняет петужабу, пик еще впереди. Серьезно, успевай залезть в вагон. Не лезь в мертвую петужабу, братан.
>шарп с дотнетом
Материалов там ещё меньше и к тому же они устаревшие по шарпу 5 версии и дотнет фреймворку. По кору материалов можно пересчитать по пальцам одной руки, да и те в лучшем случае по кору 3.1, а не по 6.
Может ты перестанешь посылать всех нахуй как обиженная девочка и оспоришь по фактам все вышеописанное? Или тебе ответить толком нечего? Тогда какой смысл делать вид, что аноны не правы, ты в доле с щитбоксами и жабарашем?
на чём легче кодить и что лучше учить, скрипт или джаву?
С одной стороны, несправедливо говорить что инфы нет. Ее есть и много, начиная от документации спринга, заканчивая курсами, видосами (спринг потрошитель), туториалами итд.
С другой стороны, спринг сам по себе устроен так, что имеет много подводных, особенно для новичков. Т. н. спринг-магия. Все не опишешь, а что написано в актуальном состоянии не удержишь. Впороться в какое нибудь поведение не по доке проще простого, найти рут-коз того, во что впоролся, уже требует какой никакой экспертизы. Стековерфлоу здесь часто выручает, но не всегда.
Вывод: что бы кто ни говорил, а знание спринг-корки важно для изучения спринга. Без корки все туториалы и курсы просто филькина грамота и пособие по каргокультизму. И похуй что ее на собесах не всегда спрашивают. Без корки просто невозможно понять почему анноташки и аспекты работают так, или иначе. А без понимания человек максимум что может сделать, это заучить спринго доку, а потом облажаться на собесе под гнетом наводящих вопросов.
Всё по делу. Испытал на собственном опыте вката в шарп.
А может лучше ты нахуй пойдёшь вместе со своей шлюхой-мамашей?
Ну выше же аноны уже писали об этом, питон и жопаскрипт действительно легче, перспективнее и работы на них больше на данный момент
Не учат, не надо.
Неиронично двачую тебя после переката из рф на нормальный рынок
>петужабу
Часто замечаю, что хохлы и петушарперы очень похожи. В частности, они все любят перефорсить.
>курсами, видосами, туториалами итд.
Так вы можете сказать, что за курсы, видосы, туториалы смотреть? Хоть какие-нибудь рандомные челы на ютубе блять. Чтобы с кора и дальше по технологиям, по спрингу, на сносном уровне.
Да тут только Евгения Борисова форсят, хотя он очень сложные вещи рассказывает на уровня сеньора. А инфы для вкатунов нет. Точнее есть, но её недостаточно для вката.
Да нихуя они не скажут, сами вкатывались, зная жабу на базовом уровне, спринг учили, заебывая кабанов, пока те им все не разжуют и в рот положат, а сейчас советуют вкатышам по любой ебаной либе читать талмуд, удивлен, что до сих по лобоку не включили книгу на 500+ страниц от рандомного уебана, который 95% книги будет рассказывать, как эта хуйня устроена под капотом, спасибо блять, без этой инфы я бы, наверное, не смог поставить @data над классом.
Долбоеб неосилил шилдта, который буквально тебе всю жабу разжевывает и в рот ложит и начал всех дедами называть, когда мы ему кроме шилдта ничего увесистого и не советовали.
>>476769
>что за курсы, видосы, туториалы смотреть
Наиль Алишев и Заур Трегулов на торрентах, Letscode на ютубе. Это по спрингу. Хотя у Алишева и Трегулова тоже что-то по кору было, но я не смотрел.
Из туториалов есть баелдунг, jenkov.com. Куча статей на том же медиуме, и куча очень хороших ответов на stackoverflow. Для вкатуна этого хватит надолго.
Кстати в шапке есть подробный гайд по вкату в жабу. Ты не осилил его найти?
> подробный гайд
Ты имеешь ввиду список навыков мидла с небольшими комментариями анона и 3 талмудами под каждой темой, конечно же, ОБЯЗАТЕЛЬНЫХ к прочтению? По нему вообще невозможно вкатится, если ты не ебучий ноулайфер, которому тупо делать нехуй кроме как кодить с утра до вечера на протяжении года.
Ну тогда смотри тех, кого я тебе назвал. Но ты в конечном счете так или иначе прочтешь большую часть тех книг, если соберешьс всерьез вкатываться.
JAVA 19 ВЫШЛА!!!!!
Мобильники Android Studio 2021.3.1 --> jdk11.0.13
Автотестеры Selenium 4.0 --> jdk 11.0
Девопсы Jenkins 2.361.1 --> jdk 11
Веб бэкендеры Spring 5.3.22 --> jdk 17
похуй, мобилизация
Как насчет набросать html страничку в конструкторе одностраничных сайтов. Почистить теги. А потом в Спринге присвоить всему этому добру id?
Всё не можешь смириться, что никто не разделил твой восторг и не оценил клоунскую шапку?
Чел, я на завершающем этапе, пишу сейчас проект с юаем, нафаршированный по-максимуму всеми часто используемыми технологиями для работы с жабой, который можно будет показать в случае чего. думаю куда мне впихнуть кафку Через пару недель буду пытаться запрыгнуть в последний вагон поезда, который тронулся в начале года. Скорее всего отсосу хуй поначалу а может и вообще, куда без этого. Читал за весь период обучения длинной в год только три книги: по алгосам, паттернам и половину какого-то талмуда по жабакору в самом начале. В остальном только мурзилки вроде метанита и балдуенга, бесплатные курсы на ютубе, борисовщина, месяца три назад нашел еще сайт со сливами курсов с юдеми за 5 бачей в месяц, хотя там они конечно не первой свежести и не все присутствуют, но пару выцепил неплохих. Больше ни одной книги бесплатно не прочитаю, когда устроюсь, тогда мб, посмотрю по ситуации. В целом, сейчас убежден, что они нахуй не нужны.
>подробный гайд по вкату в жабу
Скажи мне честно, ты долбоеб? Там просто список тем и талмуды к ним. Курсы/видосы/туториалы только к начальным темам кора и еще парочка. Все. Остальное - талмуды, типо обязательные. Написать, что смотреть, какие краткие туториалы, книги читать в первую очередь, чтобы хотя бы примерно понять, кто к чему, с какой поры можно уже подаваться на вакансии - хуй там. Вот тебе, блять, Блох и Шилдт. Тупо сухой писок литературы к темам и доки я сам мог найти, спасибо. Это не гайд по вкату, это именно что разитие Java backend-разработчика, что и написано в начале.
Другое руководство писал просто какой-то даун, без шуток. Там полезной информации еще меньше. Это там, где на вопрос "как вкатываться?" предлагается писать какую-то хуйню для майнкрафта. В таких условиях поражаешься: один моды на майнкрафт советует писать, второй высирает, что мне нужно начинать читать чуть ли не 3к страниц лишь по кору для вката, третий бредит о каких-то обязательных кишочках и талмудах, то есть то ли вы троллите, то ли вы реально дегенераты.
Ну и, конечно же, охуенные советы по вкату типо "ну статейки на медиум))", "ну вопросики на стаковерфлоу))". Заебца.
Че, буду пытаться вкатываться по говорящим головам с ютуба, юдеми и степика, изредко залезая в талмуды.
>>476769
>>476876
>Да нихуя они не скажут, сами вкатывались, зная жабу на базовом уровне, спринг учили, заебывая кабанов, пока те им все не разжуют и в рот положат, а сейчас советуют вкатышам по любой ебаной либе читать талмуд
Да походу так и есть.
Не посоветуешь что-нибудь для вката, анон? Пока думаю Алишева, Трегулова скачаю, курсеровские алгосы смотреть буду, метанита/jenkov, hyperskill, глазком в талмуды, ну и дальше уже отрывками другие ресурсы по ситуации. Норм будет? Можешь еще что-нибудь посоветовать?
Алишев норм на первых порах, я тоже с него начинал в спринг вкатываться, по жаба кору у него тоже норм видосы вроде, но там мало, надо искать ресурсы вроде метанита и заполнять пробелы. Я еще делал так: когда не знал, за какую тему некст браться или думал, что все уже знаю по карент теме - заходил на жабараш в программу обучения и смотрел, если была подтема, которую я проебал - брал и восполнял. Вообще, советую на жаба коре не задерживаться долго, основные темы, и можешь идти потихоньку в спринг пытаться. Спринг без спрингбута тоже особо смысла не вижу, мне этот экспирианс вообще ничем не помогает на данный момент.
По хиберу смотрел курс от dmdev, там достаточно подробно, но он платный. Борисов тоже кста не так плох, но чтоб понять то, что он говорит полностью, надо раза 3 того же потрошителя навернуть в процессе изучения спринга, потом втянешься, я даже подсесть на него умудрился по итогу.
Возможно LocalTime подойдет
Loom провалился, async/await лучше во всем. Зато будет уроком новым языкам, как это произошло с checked exceptions
Скажи это гоферам, у которых тоже нет async/await и есть виртуальные треды ("горутины").
И чем async/await лучше? Замусориванием кода и непонятными ошибками из-за очередного забытого await?
Если бы это было возможно, никто бы не стал дорабатывать JVM для этого, давно бы высрали библиотеку для этого и забыли. В лучшем случае можно через генерацию байт-кода или JDI. А без этого есть традиционные тредпулы, обычно их достаточно.
>разитие Java backend-разработчика
Скорее все же руководство для вкатунов. Понятно, что можно надеяться на то, что у тебя на собесе не спросят условную многопоточку, и JCIP тогда можно не читать. Но в перспективе, если хочешь вырасти от практиканта/trainee/стажера до хотя бы джуна, нужно знать довольно много.
Зачем им это надо? Хотят, чтобы на шарпе было море вкатунов и конкурировать по 1000 человек на место?
Да.
ЧИТАЕШЬ ТАЛМУД ПО МНОГОПОТОЧКЕ, ЧТОБ ПОЯСНИТЬ ЗА НЕЕ НА СОБЕСЕ
@
СПРАШИВАЮТ, КАК СОЗДАТЬ ТРЕД В ЖАБЕ И В ЧЕМ ОТЛИЧИЕ КОЛАБЛ ОТ РАНАБЛ
@
БЕЗ ТАЛМУДА БЫ НЕ ОТВЕТИЛ
Блин, я и забыл, что там котлин... Придётся всё-таки учить этот долбанный Спринг. Но мне уже дурно, когда о нём думаю.
Ну а что ты предлагаешь?
Ну на андройде мало дедов, так что там для вката нужно знать только язык и пару относительно несложных либ, ну еще мб пет иметь при себе
А нахуй тебе с ними общаться? У них из интересов только работа, на которую они сьебывают, чтобы не сидеть дома с тремя спиногрызами и мозговыносящей женой.
Ну может им тоже интересно пообщаться с симпатичным мальчиком
Мы вам перезвоним.
похуй, мобилизация
Охуенно вьебать год на один из самых тяжелых для вката языков, обучение которому склоняется к написанию однотипных крудов, от которых через два часа начинает клонить в сон и при этом нихуя с этого не получить. Лучше бы реал вкатывался во что-нибудь другое, меньше бы времени на это вьебал и мб до лета успел куда-нибудь залететь.
>один из самых тяжелых для вката языков
Наоборот, жаба один из самых легких языков для вката? Те же кресты намного, в разы сложнее.
>вьебать год
Чел, ты так или иначе просираешь свою жизнь на всякую хуйню. Ну и если не получилось с жабой, то с другими технологиями тоже вряд ли получится сейчас. Жди пока мирный договор не подпишут и начнется деэскалация, чего конечно же не случится, тут либо ядерная война в ближайшую неделю-две, либо северная корея на долгие десятилетия с 1С вместо айти и С++ в оборонке.
Лучше начинай учить кресты. Они будут востребованы всегда. Жаба и прочие бизнесовые технологии - нет.
Из того, что кресты труднее для вката, ты сделал вывод, что жаба легкая? Жаба тырпрайз в разы сложнее того же петухона, жопаскрипта и даже шарпохуйни, она еще и за гранью тырпрайза вообще нахуй никому не всралась в отличие от перечисленных.
>жаба легкая
А она тяжелая? Как по мне, вполне легкий для изучения язык.
>>477512
>Жаба тырпрайз в разы сложнее
В чем сложнее? Вникать в бизнес логику энтерпрайза может быть и сложно. А по факту там все лишь перекидывание джейсонов в итоге. В том же фронтенде есть куда более интересные задачи с интерфейсами и графикой. В шарпе тот же энтерпрайзный бекенд, кстати, если не учитывать юнити.
Джава как язык - легкая, но вот обвязка в виде библиотек, фреймворков, инструментария - очень сложная.
Алсо, гуглил по этой теме - кто-то использует KeyCloak, кто то Okta, кто сам пишет используя server authorisation и resource server, кто то говорит, что oauth кал говна. Че ща модно то?
Хотя стоп бля. Я же по идее могу запретить прямой доступ к микросервисам, а security config прописать общий, на уровне Gateway сервиса для адресов, по которым он уже будет редиректить на микросервисы. И в чем я не прав?
>Так вот, собственно говоря, как реализовать security для микросервисов?
Как хочешь, так и реализуй. Нет бестпрактисов.
Чо. Я в брокерах слишком ахуенен, малыш, захотелось приблизиться к плебсу, посмотреть че там как через рестики темплейтики и фейн клиентики подрачивать писю
База
Почему ты такой неуч и незнайка? У тебя спросили совет, на который не ответишь аля "Читай Хорстманна!!!", ты сразу же забился в уголок
Хера порвался. В общем, только хуйло ворлды вы писать можете, ясно
Ок.
В книгах упоминалась твоя мамка, шарпоблядь.
Переходим на 19 жабу, не задерживаемся.
Пошёл нахуй, хабрашиз, вслед за Егоркой.
Я и не отрицаю, пишу на шарпе проекты в свободное время. Сам язык нравится, но работе лютое говнище, поэтому на работе жаба.
Вот ты и спалился, шарпоблядь
Вот учишься на джава-разработчика, а в итоге вынужден учить всякую ерунду в довесок. В чём проблема набрать RabbitMQ-разработчиков? Вот пусть они его и учат, а я специалист по джаве.
Ты не специалист по жабе, а конфигуратор спринга.
Не придётся.
Медвежья. Но не из-за того, что фреймворки зло, а из-за того, что все они написаны по уебански, и ломают саму суть фреймворков. Фреймворки должны не старт облегчать, а поддержку. Вся спрингопараша наоборот усложняет поддержку, а старт блядь в три строчки нахуй.
Пишу все без фреймворков (юзаю стандартную либу, какие-то целевые либы вроде работы с внешними форматами). Чувствую себя долбоебом если честно (потому что действительно заебись зная сам язык не чувствую себя способным найти на нем нормальную работу)
Двачую.
По разному. Из того что я видел, авторизацию делают либо частью гейтвея, либо заводят отдельный микросервис, который выписывает JWT токены, а остальные сервисы их валидируют.
Кстати если не нравится OAuth, чекни JWT - он вроде прост как палка.
Вот я так и не разобрался с oauth, нигде нет норм гайда на собственный авторизейшн+ресурс сервер, те пару, что есть уже полностью устарели. А просто жвтшки пулять конечно выглядит намного проще. Но блять, аноны писали, что oauth часто используется и я чувствую себя неполноценным, тк не вкурил пока что там и как. я другой анон
Я вот эти почитал, вроде немного понятнее стало. Но тут не все, надо еще как минимум разные флоу разобрать.
https://habr.com/ru/company/flant/blog/475942/
По теории много всего находил, в основном проблемы именно с реализацией. Не могу семпл найти, как это все на спринге писать, только прям совсем устаревшие апи. Вроде дошел в итоге до клоаки в качестве авторизейшн сервера, там даже вроде есть какие-то примеры на балдуенге, но прям разбираться не стал в этом, потому что не был уверен в распространенности данного способа.
Да на свинге и я почти ничего не делал, кроме пары десктопных КРУД-дрочилен к БД. Обычно это какие-то парсеры, конвертеры, обработчики, расчетные вещи, поисковики оптимальных решений и все такое. Нормальные люди делают такое на питоне и плюсах, я думаю.
У нас на свинге и javafx для рабочего проекта написано несколько утилит, это всякие эмуляторы (чтобы было легче генерировать XML для подкладывания в очереди) и простые тулзы типа кодировщика в Base64. Нужны только для разрабов, тестеров и саппорта, пользователям не нужно.
Ну так интервьюеры сами эти талмуды не все читали, лол)
Иногда в проде такие ебанутые многопоточные виршы встречаешь, что диву даешься, как оно не развалилось)
Второй пик проебался по 4 высерам из 5.
Еще в феврале писал что в рфии всё отомрет кроме 1с из за оттока ангельских заказчиков. Ну останется 1с, пыха, вижуал бэсик, сиквель, жопаскрипт и сапр. А ебаться со сузихлебным говном типа джавы, кафки, cqrs, микропенисов и прочей залупой ни один адекатный разраб за бесплатно станет. Выбирают что по проще для своих скромных целей.
кресты
Не не может же быть все уже настолько плохо, мб шансы еще есть успеть в последний вагон запрыгнуть? Просто не хотелось бы спустя столько времени изучения джавы резко менять направление, это еще минимум год сидеть учить кресты те же, у меня не хватит мотивации на подобное…
Разрабы жабы по десять лет пилят фичи, которые в шарпе всего лишь очередная обнова.
Ну мне одна хрюша прямо сказала что они замораживают набор на 3-4 месяца в связи сложившейся ГЕОПОЛИТИЧЕСКОЙ ОБСТАНОВКОЙ. Так что можешь чилить а потом в армию
Ну остались же какие-то свои проекты я надеюсь, их конечно не так много, но это хоть какие-то шансы. Просто перспективы вообще грустные, фриланса на джаве нет, так что ситуация складывается хуже некуда…
На жаве всегда есть вариант пойти в банки и галеры с окологосзаказом. Я открыл резюме на хх, и только они и пишут. Ну а хуле, если нормальный конкурентный бизнес съебал отсюда? Но джунов будут очень мало брать, боюсь. Людей мало, денег еще меньше, а перспектив и подавно. Так что до конца года, думаю, набора по жаве не будет, либо будет исключительно замещая уехавших. А в январе уже как обычно часть сбера съебет, и они опять будут пытаться найти тех, кто будет три апишки по полгода реализовывать.
мимо
приложуха хх ру на банковские вакансии даёт следующее количество откликов. джун - 800, миддлы - 300, сеньоры(!) - 100. Так что хз. В банках профицит желающих на любой стек ну и плюс банки сейчас тоже всхуднут, когда за их счет мобилизованным будут прощать ипотеки и кредиты, вряд ли будут новые проекты.
Лол, мой скрин с клоном десктопмании попал в шапку треда! Это успех!
>Где джун вакансии
Их нет.
>Почему всё умерло
Мировой кризис, рецессия, война, мобилизация. Рост закончился.
>Че теперь делать-то
Что хочешь, то и делай.
>В 1с перекатываться или кресты, чтоб софт писать для гераней-3
1С жить будет, а вот софт для гераней пишется где-то в Иране, а не у нас, так что не знаю. Да и найти сейчас работу в жабе имхо все еще легче чем на крестах.
Двачую. Правда набор заморожен еще с февраля везде и разморозки пока нигде не видно.
>>478834
>ситуация складывается хуже некуда
Сейчас не то время, чтобы входить в айти. Если говорить прямо - ты опоздал (ну или родился слишком поздно не в том месте, не в то время), и поезд айти ушел 24.02, причем ушел скорее всего навсегда. До уровня 2021 года глобальный рынок айти если и восстановится, то лет через 15-20, когда тебе уже будет глубоко похуй на вкат, да и вообще не факт что ты жив еще будешь.
Нужна работа прямо сейчас? Иди в оборонку и заводы. Западный барин сюда уже никогда не придет, ЕПАМ и Luxoft не откроют свои вакансии и курсы для вкатунов, Netcracker больше не будет брать всех подряд в свой центр обучения и давать работу. Эти времена ушли навсегда. Сейчас нужно прокачивать другие навыки, и довольствоваться тем, что есть.
>>478810
>мб шансы еще есть успеть в последний вагон запрыгнуть
Вряд ли. Слишком поздно ты надумал запрыгивать.
>еще минимум год сидеть учить кресты те же, у меня не хватит мотивации на подобное
Ты же в универе учился? Значит какие-то основы си и крестов знаешь. Для самого помойного завода с зп 10 тыщ на руки хватит, если полгодика доучиться. Если в универе не учился или не учишься, то вообще забей, чел. Сейчас никто не будет рисковать брать вкатуна с улицы, которого могилизируют в любой момент. С вышкой можно хоть как-то отсрочить свою мобилизацию.
>не хватит мотивации
Ты еще не понял, в чем сейчас будет фишка. По факту намечается откат айти в то состояние, каким оно было лет 15-20 назад - с низкими зарплатами, уебищными условиями труда, душными анальниками и малым количеством вакансий.
И если тебе интересна компьютерная дрочильня, то ты вкатишься рано или поздно. А если не интересно, что уже очевидно по твоим словам, то просто останешься где-то за бортом, вот и все. Лучше начинай искать работу в другой сфере прямо сейчас. У тебя вряд ли что-либо получится, уж извини, анон.
> джун - 800, миддлы - 300, сеньоры(!) - 100. Так что хз.
А теперь попробуй устройся джуном, ага. Занять штатку != реально иметь желание кого-то нанять.
Потому что MS Code c шрифтом Cascadia и аддоном на джаву.
> намечается откат айти в то состояние, каким оно было лет 15-20 назад
Сейчас даже мировой тренд замедлился, а в рфии тренд нисходящий. Вот 15-20 лет назад был восходящим. Начав в начале 00-х в компании програмистов-анальников вы шли к развитию и улучшению, и теперь с этой высокой точки едем вниз. И если всё останется как есть сейчас, в перспективе пробиваем дно 00-х, и отталкиваясь от нового дна, где то через 10-15 лет, начинается очередной рост. Вот так. А может и нет. Хуй знает короче.
Буду надеяться, на крайний случай есть сценарий с роскомнадзором, я уже морально готов к этому. Поищу еще месяц, если ничего не предложат, тогда все.
Джун вакансии в армии теперь.
Ты читать умеешь? Это количество откликающихся на вакансию в сбере. 800 человек сразу жмут отклик на вакансию джуна. Устроиться джуном больше невозможно в принципе. Миддлы и сеньоры тоже на подходе через годик, когда западное айти начнет схлопываться(фейсбуки, нетфликсы уже прекратили найм)
Больше ничего не остается, мотивации опять что-то учить годами у меня нет, я слишком много сил и времени потратил на изучения джавы со спрингом, кафкой и прочим. Если даже найду в себе силы начать все сначала и попытаюсь освоить кресты, то буду это делать через силу и в месяц по чайной ложке. К тому времени, как смогу хоть что-то приближенное к реальному коду написать, далеко не факт, что это будет все еще кому-то нужно. Так что остается единственный вариант, это роскомнадзор, тем более в нынешней ситуацией, когда всему миру может настать конец в любую секунду, так я смогу хотя бы сделать это менее болезненно и избавлюсь от страха ожидания.
Лучше иди добровольцем на Донбасс. Так и стране поможешь, и выпилишься с какой-то долей вероятности.
Чел, в чем проблема просто начать массово рассылать свое резюме? Даже туда, где просят 1-3 года опыта?
Как минимум сейчас (ну или пару недель назад) был набор на сберстарт, такая стажировка от сбера, где нужно фуллтайм работать. Или в чем проблема попробовать пройти интервью в яндекс маркет тот же? Туда сейчас тоже есть набор на стажировку. А еще всякий гос энтерпрайз тоже периодически ищет джунов, во всяком случае HR можно по приколу свое резюме отправить даже если на хх у них нет ничего.
Что мне тогда мешает просто устроиться на стройку в своем городе? У меня нет желания помогать кому-то, если я не могу помочь даже себе. Тем более в любой момент поселок может быть сдан в качестве жеста доброй воли, а дальнейшая учесть будет явно хуже той, что я могу воплотить сам.
Ты же выпилиться хочешь? В твоем городе в тебя не прилетит хаймарс, если только ты не в Белгороде.
Я же писал, что не прямо сейчас буду роскомнадзорить, сначала месяц попытаюсь делать примерно то, что ты написал, если результатов не будет вообще, то все, конец
Зачем мне придумывать какие-то изощрения на этот счет? Вдруг прилетит не прямо по мне, а рядом? Мне что потом всю жизнь калекой с контузией дурачка разыгрывать? Спасибо, откажусь, пожалуй
Типичный вкатун.
Как будто что-то плохое.
>На него сначала надо попасть
Ты еблан? На интервью зовут всех, кто контест решил + написал хоть какое-то резюме. К слову, условия и возможно даже решения контеста есть в открытом доступе.
Если решаешь на литкодовских контестах хотя бы 2-3 задачи, то вкатишься на стажку.
Ну так через прокси зайди, делов-то.
Сберстарт один из самых простых способов вката в коммерческую жабу на данный момент ящитаю.
> Если ты год действительно каждый день учил жабу, хорошо ориентируешься в жава коре, можешь пояснить за те же многопоточные коллекции, атомики, NIO или параллельные стримы, знаешь основы спринга (бины, mvc, data jpa, security) + sql
А что, раньше было по-другому?
> Государственные галеры
Лучше 1С-ником или на завод.
А можно
>многопоточные коллекции, атомики, NIO или параллельные стримы, основы спринга (бины, mvc, data jpa, security) + sql
не учить?
Схуяли вообще нестуденты лезут в джаву? Нода учится за полгода там пусть и входят вайтишники
>раньше было по-другому
Нет, просто постоянно слышу визги о том, что сейчас вообще нельзя никуда устроиться.
>>479654
Сейчас в принципе для людей без профильного ВО в айти делать нечего. Зачем брать скуфа 30 лет, который к тому же наверняка в армии служил или на военной кафедре, которого призовут в любой момент, когда можно взять 20 летнего зумера из универа с профильной вышкой?
Бронь "могут дать" тем кто в запасе, у срочников даже военника нет, какая нахуй бронь идиотина.
С марта есть отсрочка от срочной службы для сотрудников из аккредитованных контор, ее вроде бы не убирал никто. Сейчас просто добавилась еще отсрочка от мобилизации.
Срочка и мобилизация - разного рода призывы и для каждого из них нужна отдельная отсрочка.
Смысла катиться в жабу сейчас кста уже нет. Кресты и си сейчас тупо выгоднее по количеству работы
*На .NET 7
Гошечка твоя скоро сама станет как джава. Дженерики уже ввели, там глядишь и лямбды со стримАПИ подъедут.
И я не знаю, стоит ли оно того ?
маскировочные сети, лол :D
Смотря чем будешь заниматься, скорее всего никогда не пригодится. В энтерпрайзе ты максимум столкнёшься с сокетами, которые учатся за день, но почти все данные там передаются через высокоуровненвые брокеры сообщений и HTTP (причём не в чистом виде, а REST, SOAP и gRPC). Можно дорасти до сеньора и не узнать о разнице между сетевым и канальным уровнем модели OSI, куда уж там то настройки Cisco IOS. Лишним, конечно, не будет, любые знания могут когда-нибудь понадобиться, но их получение должно быть не в ущерб тому, что пригодится точно.
Я хочу понимать как работает интернет. Мне кажется это уже полезные знания.
Тогда ебись с талмудами и курсами по сетям, изучай все низкоуровненые протколы, можешь поиграться с сиулятором Cisco Packet Tracer. Но всё время держи в голове, что ты прикладной разраб, а не сетевой инженер и не создатель сетевых протоколов.
А вот этого будет вполне достаточно для базового понимания ?
https://youtube.com/playlist?list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1
А что ещё изучать посоветуешь человеку, которому остался spring, паттерны и solid. И который пойдёт на работу только через 1 год ?
P.S.- я в Польше буду до лета сидеть т.к. война...
Для общего понимания хватит.
>>480069
По паттернам и солиду подойдёт любая статья на хабре. Со спрингом сложнее, я по нему читал несколько туториалов, смотрел какой-то курс на ютубе и пытался листать Pro Spring 5. Опять же, пойдёт любой понятный материал, после которого ты сможешь написать небольшое приложение.
уник
computer networking top down approach
При чём тут жаба?
Роутер и маршрутизатор - это одно и то же. Маршрутизатор объединяет две сети в одну.
Модем - это такое древнее устройство, которое соединяет телефонную сеть и компьютерную.
Ещё есть коммутаор/свич, он объединяет несколько сетевых узлов (например, компьютеров) в одну сеть.
Визуально они могут выглядеть совершенно одинаково.
В самом интернет-магазине, понятное дело, ничего исследовательского нет, всё обсосали ещё 20 лет назад. Можешь исследовать системы рекомендаций (придётся лесть в датасаенс), балансировку нагрузки, в худшем случае - UX.
Некогда талмуды читать, кабанчик требует поднажать и ускориться.
Пошёл нахуй, шарпоблядь.
Легко, я ещё в школе на пхп делал свою CMS, на спринге будет не сложнее. Но научная значимость нулевая.
Сап джавач, есть одна тян...
капец какой-то. а че ваще в областе веба есть исследовательского, чтоб для диплома было норм и чтобы по минимуму с нейронками связываться?
Ничего нет, это вообще не наукоёмкая область, а сугубо прикладная. Все насущные проблемы давно решены, экспериментируют с чем-то новым только там, где отдельным группам разрабов что-то не нравится. например, замена серверного рендеринга на SPA+REST API помогла снизить нагрузку на сервер, но таких проблем совсем немного.
>че ваще в областе веба есть исследовательского, чтоб для диплома было норм и чтобы по минимуму с нейронками связываться
Скорее всего ничего нет, максимум только если про какие-то распределенные системы писать, про всякие Raft и Paxos итд, но на практике ты вряд ли что-то вменяемое осилишь сделать если нет познаний по этой теме и научник не будет подкидывать задачи.
Хотя вообще зависит от твоего уника, лично у нас в 7 семестре в качестве первой части диплома некоторые писали про PyQt, пересказывали официальную документацию и писали простейшие демки, этого на тройку хватало. Для окончательного диплома нужно конечно что-то посерьезнее, но по факту кроме каких-то всратых нейронок и машоба исследовать нечего. В нейронках можно хоть формул градиентного спуска навалить и бекпропагейшона, и выдать как обзор математического аппарата, лул.
>че ваще в областе веба есть исследовательского
Зависит от универа, но от бакалавров научной новизны не требуют, насколько я помню. Этим уже в магистратуре начинают мозги трахать.
В принципе какой-нибудь простой онлайн 3д редактор моделей вроде сильно упрощенной версии блендера включает в себя шутки, которые можно поисследовать. Ту же графику, математические основы для геом моделей, подходы к графике в браузере с использованием js/webasm итд. Но вообще лучше посправшивай у магистров, которые твою кафедру заканчивали, выбирай самую простую тему и делай на отъебись. Морочить себе голову дипломом не рекомендую, на выходе параша всегда у всех получается.
>всё отомрет
>А ебаться со сузихлебным говном типа джавы, кафки, cqrs, микропенисов и прочей залупой
Не факт. Те же банки уже успели плотно подсесть на всю эту залупу, слезать обратно по своей воле они врядли станут. Если уж все отомрет, то не из-за ухода ангельских заказчиков, а из-за критической утечки экспертизы в лице синьорных смузихлебов, но тогда скорее всего откат будет уже сразу на сберкнижки.
В чем проблема достать старые версии софта, написанного на С++ и Коболе? Пенсионеров погнать работать добровольно-принудительно. Кто-то же строил инфру в сбере в 90-е и нулевые.
Чем кобол без поддержки лучше жабы без поддержки?
> Кто-то же строил инфру в сбере в 90-е и нулевые.
У нас это старьё на PL/SQL и десктопных клиентах на крестах, вижуалбейскике, делфи и прочем говне, причём кое-что до сих пор работает в проде и дописывается, да, таки пенсионерами, которые ещё в те времена вкатились. Никакого кобола давно нет, он ещё в начале 90-х сдох.
мимо
Дохера проблем. Все те же самые подводные что и с джавой, плюс в довесок кобол-разрабов в РФ 1.5 штуки, скорее всего, в отличие от десятков еще не сваливших джавистов. Пенсионеры давно либо на пенсии, либо переучились и забыли кобол как страшный сон.
>Кто-то же строил инфру в сбере в 90-е и нулевые.
Ну я и говорю. Назад к сберкнижкам.
> а че ваще в областе веба есть исследовательского
Ну можешь реализовать свой сетевой протокол, типа битторрента какого нибудь. Или п2п наноборду.
Захуярь движок для голосования на блокчейн. Чтоб он гарантировал отсутствие возможности помены голоса, вбросов, и всякое такое. Потом продай правительству эр-эф.
>>Потом продай правительству эр-эф.
Голосование через ЭЦП полученную в госуслугах они и сами сделать могут.
p.s. Знакомый java разработчик советует бекэнд, но насколько я знаю там все настолько серьезно, что малюток типа меня (ещё и без опыта) туда не берут. Но кажется я хочу в бек.
Щас набегут аноны и расскажут тебе про мертвы айти рынок в рфии и отсутствие перспектив вката во ВСЕ кроме 1с и крестов
Я даже согласен перекатиться на кресты, но хочу хотя бы немного поработать на джаве.
Щас бы учить тонну технологий для того, чтоб вкатиться в жабу, а потом как только устроился, начинать перекатываться в кресты, да ты гений чел.
Я пока понятия не имею какие технологии мне нужны будут, и опять же, на бек и фронт они разные. Пока учу core. До технологий мне ещё предстоит многому научиться.
Vaadin если оно еще живое
Иди на фронт
Нет. Просто хочу попасть в бек хоть как то.
сап двач отрицательно мобилизровался из россии, есть гринкарта в сша. хочу стать вкатышем. есть два варианта java и ios.
1. какой путь быстрее от начала учебы до первой работы?
2. кем проще найти работу в лос анджелесе для джуна без опыта? (соотношение ваканский к соискателем)
Пошел на хуй, мы, русские, против нетрадиционных ценностей и пендосов соответственно, поэтому все вопросы адресуй своему парню
Ну, есть джавач, есть питонач, есть шарпач. А есть плюсач. Понял?
Фронтенда на джаве нет и толком никогда не было. Фронтенд на джаве в виде JSP, JSF, JSTL, GWT, Vaadin - все помойное легаси, не суйся туда. Джава в первую очередь это бекенд.
Никогда на базе WASM апплетов не будет. WASM тупо не умеет работать с DOM.
Что вернется? Если ты про рынок джавы в рф, то с ним сейчас все относительно хорошо, скорее всего все станкт как прежде к весне-лету 23-го
Да, заебали перекатывать до 1000 и кормить шарпоблядей.
>Смысла катиться в жабу сейчас кста уже нет
А куда есть смысл?
Если рассматривать снг страны и рядом?
Какой язык - такой и тред.
Нет, для этого надо изучать ещё и информационную безопасность, пентест (белый хакинг) и т.д, а затем научиться применять это во зло.
Я знаю как это делается через приложения написанные на java. А вот интересно как получить доступ к модему с wpa, увидеть все хосты подключённые к нему и получить возможность отправлять им данные через пакеты. А?
Наверное для этого пишут приложения на плюсах, а на java хз :/
Ну взломай двач через джаву, раз всё знаешь.
Так же в мвп треде челы по кд засирают джаву и ни во что ее не ставят. Обьясните, почему так происходит? Какие у джавы недостатки?
Попробуй сам пописать на нормальных языках и поймешь. Тут сидят упертые скуфоиды, чья работа это вечное навешивание аннотаций на корпоративный какиш для 100 юзеров.
Кратко говоря, везде, где можно применить джаву есть альтернатива получше. У джавы нет никаких преимуществ перед >шарп, го, раст, питон
На ней написано очень много всего, в том числе очень много древнего говна. И многие вкатывальщики попадают именно в такие компании на такие проекты, из-за чего и думают, что КОЛИ УЖ ОНИ-ТО С ИХ-ТО ЗНАНИЯМИ работают в дерьме, то и все остальные работают в дерьме. А всякие более нахуй никому ненужные "осовремененные" языки типа шарпа или банально более молодые и незаимевшие такое количество легаси языки как го и раст выглядят лучше, банально потому что все проекты моложе и выстроены в более современных подходах и концептах.
При этом если же ты попадешь в современный проект без дедов-пердедов-архитекторов из начала 00х на жаве, то у тебя с огромной вероятностью будет всё новое в концептах и подходах, а так же либо жава 17+, либо вообще не жава, а тот же котлин. И всё у тебя будет хорошо, и с чистой совестью сможешь говорить, что жвм мир это стильно, модно, молодежно и быстро после компиляции, первого запуска и до STW GC, конечно же, не зря же HFT и вообще большая часть финтеха на жавке родимой пишутся :3
Но кого я обманываю, 90% работы на жаве это тырпрайз с говном и легаси по перекладываю жсонов в хмл с навешиванием аннотаций на фабрики синглтоновых декораторов различных прокси
>>483017
Я так и не понял из ваших постов, в чем всё-таки проблемы джавы? Неужели единственное, чего ей не хватает это синтаксический сахар и лум? Но есть же всякие лобоки, спринги, которые делают язык не таким многословным. Не понимаю, почему 17 джава намного лучше 11. Из-за улучшенных кейсов, инстансофов, текстблоков, рекордов и тд?
Есть языки старше джавы, но при этом их так не засирают и они до сих пор пользуются большим спросом. Может дело в подходе ораклов к поддержке языка и из-за них он стагнирует, пока остальные развиваются?
Ну а хуле она в топе изучаемых стоит то? Если уж на то пошло то тогда и питон говно и шарп тоже ведь на них тоже спрос падает один хер! Норм программист он всегда нужен неважно на чём он там ебашит.
Другие не отвечают, к сожалению
Да проблема вообще не в джаве. Просто прокладки между сиденьем и клавиатурой, занимающиеся хейтом ЯП, в 90% случаев --- порриджи и промытки евангелистов всех мастей, с эмоциональным интеллектом нитроглицерина, для которых процесс разработки важнее результата. Ходят блять и скулят как чмохи нихуя в своей никчемной жизни не написавшие.
Джаву можно за многое чихвостить (за тот же ублюдочный спринг-дривен аннотейшен-кодинг, или за всратую стандартную библиотеку), то те чушки, что чихвостят ее за скудность в синтаксическом сахаре --- это ебаный рак индустрии, харкаю таким в ебало при любом случае. Все самые удачные синтаксические решения уже были изобретены в хаскелле, но оный мейнстримом и близко не стал за десятки лет своего существования. Так что пошли все нахуй --- лучший ЯП тот, который ты, анон, знаешь и умеешь применять эффективнее всего.
Ничего адекватного ты с этой парашей не сделаешь, только при помощи жопаскрипта
И как на этом кале столько лет писали? Я надеюсь, он забыт, как страшный сон, и сейчас любой проект пишется на реакте вротенд макаками?
>реакт
>таймлиф
Ну ты сравнил --- фронтенд-фреймворк против движка шаблонов. То что последний не подходит для SPA не делает его чем то плохим.
Я пишу с нуля плагины и моды для майнкрафт. Стильно, модно и персик.
Ты не понял, как работает шаблонизатор. Он запускается, рендерит обычный HTML и отдаёт клиенту. Всё, никакой динамики, переменные в шаблонах уже уничтожены, никаких листов нет. Можешь только запустить на клиенте форму, которая сделает POST-запрос на сервер, тот обновит лист из формы, заново запустит шаблонизатор и отдаст новый HTML клиенту. Если ты не хранишь на сервере свой лист, тебе надо его каждый раз передавать в скрытом поле в виде строки на клиент, а затем в обработчике POST-запроса парсить, добавлять значение и передавать шаблонизатору новый лист. Например, в скрытом поле у тебя будет "1,2,3,4,5". при обработке POST-запроса ты делаешь split() по запятой и добавляешь значение из формы.
А на JS без шаблонизаторов ты можешь это написать без всякой ебли в 10 строчек.
>>483153
И да, после каждого POST-запроса страница полностью перезагружается. В шаблонизаторах ты с этим ничего не сделаешь.
>>483140
Нет никаких "столько лет", шаблонизаторы никогда для такого не использовали. Пока веб был в зачаточном состоянии, писали десктопные клиенты, как только развился, все сразу пересели на JS, минуя шаблонизаторы.
>динамически добавлять элементы
Что значит динамически? Ты можешь обратно на сервер отправить тот же самый лист, но только с флагом, что нужно добавить туда еще один элемент. На сервере делается list.add(element) и страничка снова отправляется пользователю.
Вообще если тебе нужна хоть малейшая подгрузка данных с сервера без обновления странички, то бери js, который будет пукать пост/гет запросами на бекенд и тянуть все что нужно оттуда.
>>483138
>>483140
Таймлиф это шаблонизитор обыкновенный, он исключительно формирует html странички по шаблону с нужными данными перед отправкой этой самой странички пользователю. Для самых простых сайтов, где не нужен интерактив с пользователем, такого шаблонизатора будет достаточно. Он не хуже и не лучше реакта, он другие задачи выполняет.
А ты слушай побольше социоблядей-дегенератов из других тредов. Джава является прямым конкурентам всем языкам, поэтому проприетарные языки ведут политику уничтожения джавы. Ну а долбоебы вахтёры фанаты работают бесплатными ципсошниками.
Че бля?)
>Ты можешь обратно на сервер отправить тот же самый лист
Хотя не, тут проебался. Придется городить форму со скрытыми полями и туда запихивать ранее полученные значения, причем это скорее всего придется руками делать, хотя тут уже не уверен.
Вот это наверное самое адекватное решение будет:
>Если ты не хранишь на сервере свой лист, тебе надо его каждый раз передавать в скрытом поле в виде строки на клиент, а затем в обработчике POST-запроса парсить, добавлять значение и передавать шаблонизатору новый лист. Например, в скрытом поле у тебя будет "1,2,3,4,5". при обработке POST-запроса ты делаешь split() по запятой и добавляешь значение из формы.
>шарп лучше джавы
Я тоже так считаю. Как язык более продуман, чем жаба, ни для кого это не секрет. А есть языки куда более выразительные чем шарп.
>>482954
>одним из худших языков для вката и работы
Тут не соглашусь, на жабе довольно много работы, и для вката жаба тоже неплоха, так как приучает к статической типизации и ООП инб4 ооп нинужно, при этом не вызывает такого батхерта жопы, как кресты.
Спецификацией гарантируются только эти три. Можешь добавить свои алгоритмы, реализовав java.security.Provider и зарегистрировав его через java.security.Security.addProvider().
Если подключишь либу bouncycastle, то все.
>HFT и вообще большая часть финтеха
Финтех может быть обычным банком, где жаба вполне очевидный выбор. HFT несколько другая область, там и си, и FPGA, и кресты, и дрочка на микросекунды. HFT скорее про реалтайм софт с жестким временем выполнения.
>У джавы нет никаких преимуществ
Как минимум тулинг вокруг жабы куда более солидный, чем тот же гошный и уж тем более растовский.
> Впервые создаю книгу. Формочки тамйлифовские, вся хуйня. Хочу добавить книге N авторов и чтобы потом это всё смапилось в List<Author> сущности Book, которую я сохраню. Как это сделать?
Вот этот конкретный кейс скажи как сделать. Когда пользователь делает GET на страничку с созданием книги, происходит model.addAttribute("book", new Book()). У сущности Book есть List<Author>. Пользователь вводит название, год и авторов книги. Хочу сделать так, чтобы была возможность у пользователя добавить любое кол-во авторов, всё это смапилось бы автоматом, без всяких последующих парсингов и прочего, на этот List<Author> и улетело бы после "Submit" POST-ом на создание книги
Да, все на расте пишут, жаба сдохла.
На рестах в лучшем случае веб и то не всегда, остальное использует 100500 методов взаимодействия, от SOAP и кафки до gRPC.
>смапилось бы автоматом
Сомневаюсь, что так получится сделать.
1) У тебя сколько полей для авторов на формочке? Авторы указываются разных инпутах или все в одном?
2) Если в разных инпутах, то тебе так или иначе придется добавлять js код, чтобы по необходимости в DOM добавлять инпут для очередного автора.
3) Если все в одном инпуте, то у тебя в DTO, который летит в контроллер с клиента, нужно сделать String вместо List<Author>. И потом, где-нибудь в сервисе маппить этот String в список авторов, делая сплит по запятой или точке с запятой (ну или по пробелу, зависит от разделителя который ты выберешь.
Каждый прямоугольник - отдельный инпут. Есть кнопочка плюсик, чтобы добавить инпуты для еще одного автора для случая, когда книга имеет нескольких авторов
Ты либо делаешь ограниченное количество инпутов для авторов, либо делаешь один инпут, в котом обязываешь вводить авторов через любой уникальный разделитель и затем парсишь, либо отправляешь авторов по одному, либо сносишь к хуям эту парашу тупую, я сам щас с ней ебусь, но такое ощущение, что лучше б уж жопаскрипт почитал с каким-нибудь не особо трудным фреймворком типо вью
Да, отправляешь запрос на сервер "дай мне инпут", он в ответ страницу с добавленным инпутом. Можно сколь угодно сложный сайт сделать с шаблонизаторами без JS, но страница будет перезагружаться на каждый пук.
А, ну так то понятно, я думал прям в реалтайме как-то, поэтому и удивился. Наверное, каким-нибудь форычем делается
Скриншот сделать не судьба?
В реалтайме никак, только JS.
https://github.com/OpenHFT
http://blog.vanillajava.blog/
Почему я все еще лоускилльная чьмоня, которую не берут даже в сбер перекладывать джейсоны на легаси проектах(((
Научись нетворкать и пиздеть ниочём. Самые важные навыки для трудоустройства в IT.
Чел, спокуха! В таком месте тебя очень быстро попустят на устройстве JVM и многопоточке. Поймут, что ты мошенник, жулик, и по факту обычный крудошлеп, после чего занесут в черный список и пошлют нахуй!
Для трудоустройства в сбер да. А в нормальные места всегда будешь попущен на хардскиллах, вот я искал способы эвакуироваться из рф и никому нахуй не нужен оказался, потому что большую часть своего опыта РАБоты я пиздел всем подряд и проебывался, а на выходных играл в игры вместо литкода
> нетворкать и пиздеть ниочём.
> Для трудоустройства в сбер
Много знаешь о трудоустройстве в сбер? На собесе туда я задыхался и тупил, потому что пришлось общаться с незнакомыми людьми, чего я не умел, умел только программировать. И меня, аутиста с нулевым софтскиллами, взяли.
Чел, в Евросовке полно проектов с легаси, думаю тебя туда возьмут и после сбера. Правда платить много не будут, самую минималку, будешь в 0 уходить по факту.
В фаанг да, не возьмут.
Нет уж спасибо, даже библиотекодроч лучше петушарпопараши с говнокодищем как стандартом.
Я же сказал на нормальном языке, а не на шарпе. Шарп со своим аспнетом ничем не отличается от жабы со спрингом.
Нет уж спасибо, даже библиотекодроч лучше otherlang-параша с АДСКИМ ГОВНИЩЕМ ПРОСТО ПИЗДЕЦ ЧТО ЗА ДАУН ЭТО НАПИСАЛ как стандартом.
Страдает твоя мамка, когда я хуярю своей залупой по ее лбу, а я испытываю трудности.
Хуя припекло.
Для начала можешь попробовать научиться гуглить, чтобы находить либо готовые библиотеки, либо более-менее красивые варианты решения твоих проблем. Если же ты уже умеешь гуглить, то стукни себя хуем по лбу, а потом научись гуглить. Если даже после этого у тебя всё еще будет желание создать огромную библиотеку ради решения какой-то мелочи, то попробуй определить, насколько постановка задачи в твоей голове относится именно к твоим конкретным требованиям, а насколько она обобщенная и может быть полезна и кому-нибудь еще на другом проекте. Если первое, стукни себя хуем по нёбу и пиздуй делать как есть на проекте, а если же этого правда нет, но это правда может быть полезно не только в рамках твоих узких требований и хотелок, то открывай гитхаб, создавай репозиторий и через 2 вечера твоё желание запилить yet another yoba library пропадёт
А почему не стоит? Как будто в рф сейчас много вариантов. Яндекс хотя б, это либеральная помойка, которая в случае чего в кратчайшие сроки перебазируется в сербию или снг, а там может и меня прихватят хотя не думаю
Яндекс же это миллиард собесов для того, чтобы залутать позицию разраба, невозможная ебля с алгосами, зп ниже рынка и переработки, разве нет?
мимо жава жун в одной аутсорсинговой галере
В таком случае действительно хуетень, от сбера отличий по сути нет. Я просто про них меньше слышал плохого, чем про сбер. А че остается тогда из крупных компаний в рфии? Вконтакле?
Сейчас это Армения, как я понял
>>483444
> это миллиард собесов
Да, штуки 4+
> невозможная ебля с алгосами
Литкод медиум == невозможная? Ебать ты пряник
> зп ниже рынка
ЗП по рынку уже, сам удивился. А при условии, что они одни из немногих, кто сейчас набирает людей, можно сказать, что и выше рынка X > 0
> переработки
Ну а вот это хз, насчет этого еще ничего не знаю
>>483449
> А че остается тогда из крупных компаний в рфии?
1. Госная параша
2. Банк
3. Госный банк
4. Банкопараша
5. Госная галера
6. Галерная параша
7. Госная галерная на банк
8. Госная парашная галера на госный банк БИНГО! Вы попали в Иннотех
Выбирай, что больше нравится
>1. Госная параша
>2. Банк
>3. Госный банк
>4. Банкопараша
>5. Госная галера
>6. Галерная параша
>7. Госная галерная на банк
>8. Госная парашная галера на госный банк
Ты бля названия не мог написать? как я по этой хуйне пойму, что это за компании
Мда, треш. В смысле блять без прав админа, ты еще скажи, что я туда доту не смогу поставить и ебашить после во время работы. Я его хоть домой забрать смогу перед двачерами похвастаться, какой он мощный 4 гига 4 ядра игровая видеокарта
Не сможешь. Все программы ставятся через заявки в корпоративном каталоге, после заказа надо ждать сутки, ещё и безопасность может не согласовать. А также в течение дня делаются скрины экрана и отправляются тем же безопасникам.
Пиздец
Блин а почему нет своего встроенного с документацией в джавадоке? Это же херня, что для этого нужно какие-то сторонние либы подрубать. В будущих версиях Джавы планируется это исправить?
А нахера? Встроить, чтобы какую проблему решить? Получить еще одну залупу в стандартной либе, которая через несколько лет станет легаси? Вон конкарренси встроено, из-за чего теперь лум ждем 30 лет.
В чем проблема? Джавадоки подтягиваются любой IDE по нажатию одной кнопки.
Юзаю Нетбинс, полет нормальный.
Бей себя по башке за такие мысли.
Напиши и выложи на гитхаб. Если твое поделие не наберет хотя бы несколько десятков звиздюлей, значит ты и твое поделие нахуй никому не нужны. От осознания этого факта ты быстро выгоришь и перехочешь заниматься подобным.
JAXB и был из коробки, пока долбоёбы не решили его выпилить. Жсона, конечно, не было, кому нужны эти хипстерские форматы.
Вообще-то жсон уже есть.
А вообще надо кресты учить и идти в яндех. Сейчас сложно найти что-то лучше.
мимо жава джун в аутсорс галере
Мне прям хуево, зубы скрипят и хочу соседу его ебало разъебашить об стену из-за того, что это дегродское уёбище сидит и громко играет в какой - то кал, мешая мне вникать. Почему вокруг такие тупые дегроды, когда я БОГОИЗБРАННЫЙ ГЕНИЙ думаю о таких высоких материях как Java Rx?
Пока пукай)
Арендуй каморку в бц за 10к в месяц и учи че хочешь в тишине, маня. В халупах человейниках вечно кто-то шумит, там можно только бухать
Прикол в том что приложение сохраняет настройки в конфигах в момент закрытия, весь бизнес я запихал в виндовЛистенер на windowClosing. Потом подумал что неплохо бы иметь пункт меню Exit, но добавить в него вызов события листенера окна не придумал иначе как через кривоватую конструкцию пикрил. Там есть frame.dispose() но это другой ивент.
Можно конечно вывести листенер как компонент класса, либо тупо экстрактировать бизнес-логику из листенер-ивента в отдельный метод и вызывать его и из листенера, и из меню, но все же может есть что-то подходящее?
Ну и хуиту я высрал, но не удалять же уже
exitItem.addActionListener(e -> this.dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)));
Вопрос снят.
Спрингопетух закукарекал, который не писал ничего сложнее контроллера CRUD-параши на галере своего дяди, спешите видеть
>если кому надо
Если кому надо, то он идет гуглить. В этом треде вопросы задают только конченые долбоебы.
Через 25 постов тред станет нормальным, каким и был до сентября прошлого года, когда сюда пришла шарполахта и залетные шизоиды.
Отчасти поэтому джава треды и скатились в полную парашу. Надеюсь хоть этот не будут перекатывать до 3к постов.
3к за последние три года не было. 2к помню. Но нщё ни разу не было долбоёба, который так настойчиво перекатывл до 1000.
>>484087
Долбоебы, какая вам разница, какая цифра постов в треде? Вы на них дрочите что ли или че бля? Пусть хоть через каждый пост перекатывают, лично мне ваще до пизды. Лучше б тут челы по жабе чет дельное писали, а не хуйню всякую про шарпоблядей и то, что рыночкц ит пизда все пропало.
Мимо крокодил
Крокоди дальше, шарпоблядь.
> Лучше б тут челы по жабе чет дельное писали, а не хуйню всякую про шарпоблядей
А как иначе? Первые 500 постов всегда засраны шарпоблядями, сразу после бамплимита градус адеквата повышается, но дольоёб тут же перекатывает. Уверен, что опхуй и есть шарпоблядь засланная.
Ну правильно, они всё пишут здесь.
Это потому что здесь остались одни долбоебы. Еще пару лет назад не было такого засилья токсиков, забегали иногда всякие студенты или ньюфаги, и им помогали. Был анон у которого даже был специальный проект на несколько К строк, где он пилил код в помощь ньюфагам два чая ему, пару раз помог
Не иди в Практикум ближайший год, курс сырой, все пуксренькают пиздец, изолированные автотесты к диплому только появились.
Хорошо хоть не гомониграми тред вайпают
Чё там было?
15 минут. За это время успеваю поссать, заварить чай и повторить несколько расшифровок ебанутых аббревиатур, которые все всегда спрашивают на собеседованиях
мимо-8-лет-опыта
Ну с тобой и подобными челами все понятно, вам просто надо в уши собеседнику нассать про то, какие крутые задачи вы решали и в каких конторах просиживали штаны, тут скорее вопрос про тех, кого ебут на собесах т.е ждунов/мидлов и прочий мусор
Расскажи какие? СОЛИД и вот это вот говно?
0, на собесы не хожу. Брат умер, да.
Хуитл.
P.S.- сетевые протоколы \_(:/)_/
Протокол - это не технология, а тупо соглашение, описанное в каком-нибудь документе (стандарт, спецификация, документация).
Реализации протоколов зависят от того, на каких уровнях они работают, это может быть микросхема, прошивка сетевого оборудования, ядро ОС, твоя программа, либы для программ и т.д. Можешь придумать свой протокол и реализовать его в своей программе с использованием сокетов или другой технологии взаимодействия, реализация будет работать поверх более низкоуровневых протоколов.
В пизде. Свободен нахуй.
Он наверное зеленый. Нельзя быть настолько долбоебом, чтоб дойти до какого-то программного бизнеса на эту тему, но все еще не понимать что вопрос "где хранятся протоколы" это такое же бессмысленное ебло, как ведро компрессии
Очевидно в проводе...
У меня внешка такая, что даже ебля с продавщицей из пятёрочки мне не светит. Была бы нормальная внешка, искал бы не джавистку, а плюсовичку или ассемблеристку.
Сеть это медный провод
Че скажете? Посоветуйте, каких еще фич добавить, а то у меня идей особо нет, на главной хочу какую-нибудь карусель ебануть и мб какой-то хуйни написать типо возьмите меня на работу наносеком плз, но все равно кажется мало, надо чет еще добавить для глубины. Короче реквестирую обзор моего недоделанного куска круд говна
Пока все что есть в более-менее рабочем состоянии
Я живу в хостел с 4-мя челами и тоже иногда шумят. Планирую перебраться в другой хостел, только в отдельную комнатушку. Но пока, что то не получается найти хостел :с
P. S. - Я в Польше 0_0
> портфолио
> на главной хочу какую-нибудь карусель ебануть
Ты вебмастером что ли хочешь устроиться? Тогда учи PHP, а в жабе это не нужно вообще никому. Вот прям рили ни один работодатель смотреть это не будет.
У меня процессор на 4 ядра и 2 потока - майнкрафт 1.12.2 180 +- фпс
Так наоборот все пишут, что проект мастхев и hrюшки, нихуя не понимающие только визуально и могут на что-то клюнуть, а одних кейвордов мало в резюме, надо же какое-то подтверждение иметь. Я сам рот ебал этим заниматься, седня читал ебучие мурзилки по жопаскрипту, чтобы хоть какую-то адекватную валидацию сделать в форме регистрации, заебался, а скоро вообще могилизируют, так и не поработаю крудошлепом, к сожалению
Ты в мывамперезвоним-треде про таких мифических хрюш прочитал? Адекватные хрюши понимают, что от бэкендера не стоит ждать вообще никаких познаний в вебе (а неадекватных хрюш долго не держат, потому что они никого найти не могут), поэтому почти везде хрюши тупо смотрят нетехнические характеристики кандидата, и да, кейвордов в резюме им достаточно. Отдельно проходит технический собес с разрабами, где всё равно будут задавать вопросы по алгоритмам и по основам стека технологий, так что им в любом случае не надо смотреть твои проекты. Кому надо - те скидывают тестовые задания, но и так делают далеко не везде.
Ну ладно, тогда завтра резюме попробую нахуярить, а че там писать кста? Помощь вкатунам на дваче учитывается как опыт работы?
Бля, рисовать не умею, придется идти в художку, походу вкат откладывается еще на пару лет
Да просто список технологий и пару слов о себе типа "учился в таком-то вузе".
Опытом работы считается только работа по трудовому договору на реальном проекте с получением опыта по требуемым технологиям, либо в худшем случае фриланс. Про помощь вкатунам можешь на собесе сказать "В свободное время помогаю на форумах новичкам с задачами по программированию". Про двач не уточняй.
Ты тоже зарепорчен.
Фичи вообще похую. Главное технологии/кейворды. Вот рест с жс+базюлина+ауф2 у тебя есть.
Ну чего может еще быть надо в реальной работе? Тесты, сваггер, миграции, кастомная настройка джексона.
Ебля с реляционной базой, с джойнами и транзакциями. Ну и ебля с жпа/жуком/спринг ждбс.
Задокерить отдельно базу, отдельно српинг-бут приложуху, отдельно фронт(нодовская дрисня или нгинкс).
Найти публичную рест/соап апишку и обращаться к ней.
Сделать несколько сервисов и общаться между ними сперва по ресту. Потом по кафка/реббиту.
Кеши. Спринг кеш, редис.
Нереляционные базы. Самое популярное - монга/json-b постгреса для не нормализованных документов.
Собирался понемногу все это прикручивать к проекту, как минимум одной из некст задач было обратно мигрировать с монго на постгрес, поставить ликвибэйз. Потом бы офк залил все в докер, написал докер кампоз уже блять начал забывать как он пишется.По обращению к сторонним сервисам так ничего и не придумал, не ебу к какому и как это все интегрировать в мое приложение, разве что в ауфе немного было, для вк приходилось править из-за уебанского токена. По кастомной настройке жсона не понял, о чем ты, я разве что юзал пару аннотаций джексона. По кафкам/рэббитам тоже в моем приложении такое вряд ли нужно, но я в свое время посмотрел пару видосов по устройству и простейшему апи, мб еще сам потыкаю, надеюсь там на начальном этапе простейших взаимодействий достаточно будет.
Чел, я думаю анон выше - прав. И тебе надо забить на проект и идти дрочить собесы. Если перед собесами/на собесах будут недовольны, что ты чего-то не знаешь - тогда и выучишь это и добавишь. А пока дрочи жабакор, спрингкор и алгосы, если пойдешь в места, где их спрашивают.
Поделай тестовые, если дадут. Судя по твоим постам, ты уже пересидел за обучением и мог бы уже вкатиться.
Ты еблан? Ты бы к любому посту в этом треде это приписал, "зачем ты читаешь не свой код", "зачем ты помогаешь анонам, которые не работают с тобой вместе".
Все так
А она точно программирует на ява?
Да там же изи...
Проект явно легаси, вилка зп то хоть какая?
PS зарепортите челов сверху с шок контентом, заебали черти
Вопрос про сваггер, если что
Можешь руками опенапи написать, можешь вынести все аннотации в интерфейс, можешь по описанному опенапи генерить контроллеры... А что ты хочешь получить, нахуя и чем тебе не нравится описывать методы контроллера там, где находятся методы контроллера?
Даже если можешь, так никто не делает, все пишут аннотации в контроллерах.
Скорее всего, можно изъёбнуться с аспектами
Так это же пиздец уебищно выглядит, при том, что я для себя делаю и не особо подробно пишу, а на реальном проекте, наверное, ебать аннотации пятиэтажные, ну или широкие как еб твою мать, что тоже неудобно. Мне кажется с точки зрения чистоты кода это примерно так же хуево как писать энтити графы над сущностями.
Вот именно по этому контроллеры должны быть тонкими. Чтобы хватило места на аннотации сваггера.
В ямле уёбищный синтаксис с отступами как в петухоне. А в жсоне слишком много кавычек. JSON 5 норм, но он до сих пор нигде толком не поддерживается, хотя 10 лет прошло.
Я описываю в интерфейсе. В паре толстых методов есть подробное описание - с валидными примерами входящих и выходящих параметров, с подробным описанием всех параметров и тп. Ну там 25 строчек аннотаций на метод.
Чел в мвп треде, говорит у них апи ферст збс работает, когда все описываешь в yml опенапи, по ним генеришь метод интерфейса контроллера. Наш тимлид что-то начал ковырять, но забил. Там у него для настроек оберток в адвайсах куча бойлерплейта была и еще какие-то проблемы(скорее всего вполне решаемые).
> контроллеры должны быть тонкими
В первую очередь для того, чтобы отделить контроллеры от бизнес-логики. У нас в проекте всем было на это похуй, когда писали SOAP-эндпоинты, и теперь в них дохуя логики и SQL-запросов. При переходе на REST мы заебались это рефакторить, хотя могли бы просто вызывать по одному методу из сервисов. Скорый переход на другую СУБД будет не менее болезненным.
Мать твою топтал
Чтобы было. Буду писать, что хочу.
С оракла на постгрес. Разговоры об этом шли давно, ещё до февральских событий, даже ещё до ковида. У нас в целом идёт процесс отказа от проприетарщины, типа можно будет сэкономить на лицензиях и легче патчить, например, постгрес у нас форкнули и добавляют какие-то свои фичи, но знаю мало, этим другое подразделение занимается.
Да, где-то в то время начали писать. Хуй знает, как такой зумер, как я, вообще сюда попал.
У нас ещё не ад, жить можно, старьё выпиливается. Ад там, у кого шестая жаба и хранимки.
Я на Java 8 пишу проекты. Стоит перекатится на 11-ую ?
P.S.- уже 3-тий проект пишу на 8-ой о_о
Стоит, конечно, все на неё перекатываются, кто может. Скоро вообще на 17 надо будет перекатываться.
Для трёх пользователей бесплатно, дальше зависит от числа пользователей. А ещё есть Gitlab, ,там, вроде, ограничения не такие жёсткие. А при чём тут жаба? Джависты не пользуются гитхабом, их проекты в корпоративных селф-хостет гитлабах и битбакетах.
Все мои знакомые там держат пет проекты... Плагины, моды для майнкрафта, лаунчеры :/
>Джависты не пользуются гитхабом, их проекты в корпоративных селф-хостет гитлабах и битбакетах.
Ага. Так не пользуются, что по количеству проектов на гитхабе джава --- на втором месте среди всех языков.
https://madnight.github.io/githut/#/pull_requests/2022/3
Что бы никто не скопипастил мои проекты. Я не просто их пишу для собесов, я в них душу вкладываю...
P.S. - или их и так никто не увидит ?
Да кому они нужны? Чужого добра навалом в публичных репозиториях с опенсорсными лицензиями, надо ещё постараться, чтобы их все пролистать и найти твой репозиторий без звёздочек и с парой файлов на 500 строк.
Мой старый приятель покупает приватные репозитории под серьёзные проекты.
Где-то пару отказов, там и до собеса не дошло, сразу после просмотра резюме отказ.
Подал сотню откликов. 50% были игноры, 35 отказы, 15 вышли на связь. Из них 10 слились, 1 слил я сам, сходил на 4 собеса, в двух дали оффер.
30-летний-вкатунишка-бывший-продавец
На чем это сделано? Тоже хочу в фулл-стек, но из фронтовой части у меня только какие-то давно забытые потуги в тимлиф.
>Что вы используете?
Мавен.
>Может лучше использовать Gradle?
Ты можешь прыгать с технологии на технологию в надежде что оно само как то заведется, но это не даст тебе опыта, ты так и останешься нубом и пищей для хрюш и интервьюеров-троллей. Или ты можешь разобраться в проблеме до конца и чуть лучше после этого понимать, как работают вещи.
>как работают вещи.
В том-то и прикол, что не работают
Казалось бы очень простая задача:
1. Подключить либу для телеграм бота
2. Собрать проект
В питоне это делает мега просто. И не надо тащить систему сборки для разрешения зависимостей. Просто скачал пакет и импортировал
Мавен не может подключить main class файл. Какого хуя вообще надо запариваться с названием Main, если по итогу этот единственный и исключительный Main класс никто не ищет и никому он нахуй не сдался? Настолько, что его надо вручную подключать в отдельном манифесте. Ну и ебля. Даже при подключении стороннего плагина (sic!) для сборки в jar, оно не работает. Пиздец
с помощьu java
Какая душещипательная история.
>В том-то и прикол, что не работают
Плохому танцору ноги мешают.
>В питоне это делает мега просто. И не надо тащить систему сборки для разрешения зависимостей. Просто скачал пакет и импортировал
Об этом я и говорю. Можно сидеть и скулить как сука над первой попавшейся проблемой, или оставаться в питоновской зоне комфорта, или сесть и разобраться.
>Какого хуя вообще надо запариваться с названием Main, если по итогу этот единственный и исключительный Main класс никто не ищет и никому он нахуй не сдался?
О чем ты? Какие запары с названием? Всем похуй как его зовут.
>Мавен не может подключить main class файл.
Нет такого понятия как "подключить мейн класс". Мейн класс --- такой же класс как и все остальные. Джава либо получает имя мейн класса из командной строки при запуске приложения, либо ищет его в MANIFEST.MF джарника. Последний генерится jar-плагином мавена, как вариант.
https://mkyong.com/maven/how-to-create-a-manifest-file-with-maven/
Вообще не врубаюсь, о каких сторонних плагинах ты тут говоришь.
>оставаться в питоновской зоне комфорта, или сесть и разобраться.
А чем плох питон? Скажи в 3х словах
>скулить как сука над первой попавшейся проблемой
Тащемта нет. Там было много проблем. С этой просто второй день сижу. Прочитал только треть книги HeadFirst про Javа. Мб до maven не дошел еще. Просто захотелось по-быстрому разобраться с зависимостями и компиляцией
>Всем похуй как его зовут
Ну, в книге было что-то про то, якобы должен быть хотя бы 1 класс. Как-то пришло в голову, что это должен быть именно Main класс, с которого начинается исполнение
>Нет такого понятия как "подключить мейн класс".
Я про то, чтобы сделать мой Main класс входной точкой (entry point)
>Вообще не врубаюсь, о каких сторонних плагинах ты тут говоришь.
пик 2
>Последний генерится jar-плагином мавена, как вариант.
Блять. Я про него и говорю.
Плагин не работает. Пик 3
Я гуглил джва дня и ничего
>А чем плох питон? Скажи в 3х словах
Всмысле? Я вообще ничего плохого про питон не говорил.
>пик 2
>Плагин не работает. Пик 3
Мавен сорц плагин --- не то. Сорц плагин собирает твои нескомпилированные сорцы в джарник, затем, чтобы потом их пошарить (этим обычно занимаются разработчики либ --- они пакуют сорцы, деливерят их на мавен централ, а оттуда они уже потом вытягиваются пользователями этих либ, когда оные хотят посмотреть сорцы в ИДЕхе).
Тебе нужен именно maven-jar-plugin. Чекни мою сылку.
>Блять. Я про него и говорю.
Ты говорил про сторонние плагины, при этом не сказал их названия. Поэтому я тебя и не понял. И джар плагин, и сорц плагин --- родные, мавеновские. Джар плагин используется во всех проектах с packaging=jar даже если ты его не прописываешь явно в помнике.
Ладно. У меня все еще не получается нихуя сделать. Походу мне нужен еще плагин jar-with-dependencies, чтобы оно все работало. Кажется, что это куча ебаных костылей
Я просто хочу спросить, это оно везде в джава мирке настолько хуйово документировано? Я без всякого преувеличения говорю. Вообще все, что касается джавы документировано OCHEN HUIOVO. Причем я не тот хуй, что игнорирует пендоскую матчасть. Специально курю книгу на инглише, потому что там свежее 3е издание
>Всмысле? Я вообще ничего плохого про питон не говорил.
>оставаться в питоновской зоне комфорта
Звучит как загон для малышей. Как бы сказать, питоновские ясли
>Звучит как загон для малышей. Как бы сказать, питоновские ясли
Не выдумывай. Просто оставаясь в своей зоне комфорта, нефиг гнать на чужую.
>Я просто хочу спросить, это оно везде в джава мирке настолько хуйово документировано?
Нормально вроде все документированно. Ты что смотрел? Ты выше сам вроде бы говорил что до мавена не дошел еще?
Другое дело что инфы дохуя, равно как дохуя и опций сборки. Можно собирать джарник, а можно не собирать. Можно собрать обычный джарник, а можно жирный. Можно собрать джарник с класс-файлами, а можно с сорцами или джавадоком. Плагинов для мавена овердохуя, и документированны они по разному.
>Ты что смотрел? Ты выше сам вроде бы говорил что до мавена не дошел еще?
Ошибся. Тут ничего не написано. (пик) Наверное, в книге только про т н core
>Нормально вроде все документированно
Про мавен ничего не могу найти. Это либо maven.apache.org, где нихуя не понятно. Либо ролики на ют, где индусы с уёбищным акцентом что-то невнятно бормочут. Nuff said
>можно
>можно
>можно
>можно
>можно
>можно
Да я понял, что можно. Но пидор тот, кто думает, будто оформлять файл сборки в XML это удобно. Неудобно. И, как я уже сказал, я даже не надеюсь на русскоязычные доки.
>Просто оставаясь в своей зоне комфорта, нефиг гнать на чужую.
Я не гоню. Мне правда интересно. Просто в глазах рябит от ошибок типа
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.2.0:jar (attach-sources) on project 2: You have to use a classifier to attach supplemental artifacts to the project instead of replacing them. -> [Help 1]
Exception in thread "main" java.lang.NoClassDefFoundError: com/pengrad/telegrambot/request/BaseRequest
at tgt3.Main.main(Main.java:41)
Caused by: java.lang.ClassNotFoundException: com.pengrad.telegrambot.request.BaseRequest
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
Error: Could not find or load main class tgt
Error: Could not find or load main class Main.Main
>>485512
Не пизди, не только книги
>Ты что смотрел? Ты выше сам вроде бы говорил что до мавена не дошел еще?
Ошибся. Тут ничего не написано. (пик) Наверное, в книге только про т н core
>Нормально вроде все документированно
Про мавен ничего не могу найти. Это либо maven.apache.org, где нихуя не понятно. Либо ролики на ют, где индусы с уёбищным акцентом что-то невнятно бормочут. Nuff said
>можно
>можно
>можно
>можно
>можно
>можно
Да я понял, что можно. Но пидор тот, кто думает, будто оформлять файл сборки в XML это удобно. Неудобно. И, как я уже сказал, я даже не надеюсь на русскоязычные доки.
>Просто оставаясь в своей зоне комфорта, нефиг гнать на чужую.
Я не гоню. Мне правда интересно. Просто в глазах рябит от ошибок типа
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:3.2.0:jar (attach-sources) on project 2: You have to use a classifier to attach supplemental artifacts to the project instead of replacing them. -> [Help 1]
Exception in thread "main" java.lang.NoClassDefFoundError: com/pengrad/telegrambot/request/BaseRequest
at tgt3.Main.main(Main.java:41)
Caused by: java.lang.ClassNotFoundException: com.pengrad.telegrambot.request.BaseRequest
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
Error: Could not find or load main class tgt
Error: Could not find or load main class Main.Main
>>485512
Не пизди, не только книги
>Это либо maven.apache.org, где нихуя не понятно
Ну так в этом и проблема. Если мне щас дадут почитать какую нибудь докторскую по физике, я тоже нихуя не пойму, потому что мои знания физики остались на уровне школьной программы. Но это же не проблема докторской? Доки по мавену предполагают что ты знаешь азы мавена: что такое модуль, подмодуль, зависимость, ее скоуп, классифаер, что такое плагин, что такое гоул и фаза, что такое пэкеджинг, как плагины конфигурируются, что такое пэрент, и что оттуда и как наследуется. Такие дела.
>Но пидор тот, кто думает, будто оформлять файл сборки в XML это удобно
Чел, успокойся. Никто так не думает, просто во времена когда мавен создавался, альтернатив хмлю было не шибко много. И кстати хмль --- меньшая проблема мавена, если по чесноку. Проблема гораздо серьезнее заключается в том, что в мавене зависимости находятся в одном помнике вместе с профилями, и разделить зависимости от билд-пайплайна довольно непросто, и такая элементарная вещь требует скилла. Вот такой хейт к мавену я бы понял. А хмль --- фигня, его за тебя иде пишет обычно.
>Просто в глазах рябит от ошибок типа
Ну так это потому что ты вкатываешься. Я с непривычки тоже охуеваю от того как эксепшоны в питоне выглядят непонятно, но я ж осознаю что это я нуб, а не питон --- говно.
>Доки по мавену предполагают что ты знаешь азы мавена
Ну, смотри, суть в том, что мне очень нравится подход, с котором подходят HeadFirst - все довольно разжёвано, куча аналогий, абстракций, рассказывает, откуда, почему и что куда идет. Т.е. так, как если бы это спросил у человека, а он тебе понятно объяснил. Хочешь сделать Х? Тебе надо для этого А и Б, А, потому что так, Б, потому что вот так. Нутыпонял
>меньшая проблема мавена, если по чесноку
smug_anime_face.png
>иде пишет обычно.
В планах как-то перемолоть emacs в java ide. Так что параллельно дрочу имакс. Пока что eclipse на первых парах
>Я с непривычки тоже охуеваю
тащемта в питоне вкуснее ошибки выглядят. Но что-то я решил отказаться от питона. Все так хвалят жабу. А на деле куча всего сложно. Один хуй придется учить потом котлин или кложу, но пока что надо въехать в платформу
>>485535
Будто бы мурзилку еще выпускают
>Будто бы мурзилку еще выпускают
выпускают, но теперь на индусском английском.
Оформляй подписку: https://www.baeldung.com/maven-guide
>В планах как-то перемолоть emacs в java ide. Так что параллельно дрочу имакс. Пока что eclipse на первых парах
сразу бы написал что ебанутый, никто бы на тебя время не тратил
Ну неделя вообще без ответа на отклики год назад была нормой, две недели - уже стремно.
Ну неделя вообще без ответа на отклики год назад была нормой, две недели - уже стремно.
Хотя все работает только с одним maven-assembly-plugin
> можно уже начинать ныть, что меня никто не берет, и айти в рф умерло?
Для этого не нужно было открывать резюме, дурашка, мог и просто так начать ныть
А сколько у тебя опыта и на какую позицию претендуешь прямо цитатой, что в резюме написал? Если ты там солюшон архитектор техлид принципал СТО с двумя годами опыта, то всё вполне логично. Если ты джун, то тоже для джунов ит в рашке и правда умерло. Если ты написал что-то типа "Синьёр джава инженегр", то все нормальные люди тебя и правда игнорировать будут
У меня проблем с откликами и просмотрами нет, открыл еще в середине сентября, не бампал, сегодня два новых пришло. Проблем с количеством не имею. Другой вопрос, что качество вакансий говно, но что поделать
Я вкатыш, соответственно в графе опыт моего резюме на хх нихуя нет, хотя щас думаю, мб там всё-таки написать что-то про личные проекты, у меня там сейчас пока просто перечень скилов и небольшой абзац о себе мб резюме просто хуета, но вроде как писали, что это за опыт не считают, так что хз, надо ли. Рыночкек ит понятное дело в рф сейчас мягко говоря не в самых лучших кондициях находится, но я продолжаю надеяться, что, пусть и в залупной государственной галере, но где-то кинут хотя б инвайт на собес, а там уже попытаюсь зарешать, ну или набраться опыта прохождения оных.
Личные проекты у человека без опыта это не опыт, а полезная строчка в резюме. Указывать их в опыте, если ими никто не пользовался, не стоит. Если же это было в каком-то виде законченным продуктом, например, у тебя там собственный игровой сервер с живыми людьми есть, ну или же ты написал биржевого бота, или хотя бы телеграммного бота для отправки дикпиков в чат надо написать, кстати, то указывать как опыт стоит. Но в любом случае, если ты вкатывальщик, необходимо всё выкладывать на гитхаб и указывать на него ссылку.
А еще, если ты хуй без опыта, сам откликайся. ХХ любезно подсказывает, что для одного приглашения на собес необходимо 10 откликов, так вот в текущем рыночке начинающих специалистов нужно 20+ откликов. Можешь поискать, на гитхабе даже есть несколько программ по автоматической рассылке резюме по хх для таких как ты
>>485901
Java Concurrency in Practice. За один месяц освоишь, если не будешь особо сильно пинать. Потом, если время останется, шлифани сверху любым гайдом по Secure Programming в разрезе многопоточки. Там 90% информации будет той же самой, но написано чуть иным языком и возможно с примерами, упор в которых будет чуть в другую сторону. Но если не останется, то и хер с ним.
P.S. - метод будет в классе в котором создается фрейм, и туда же в фрейм будет добавлен
как хочешь
Я своих хеллоуворлдах обычно наследуюсь. GUI - одна из немногих областей прикладного программирования, где наследование смотрится нормально, в отличие от серверного кода с бизнес-логикой.
В параметры конструктора лучше вынести только те свойства, которые нужно кастомизировать чаще всего, для кнопок это, как правило, надпись на кнопке и действие при нажатии. А остальные параметры задавать через другие конструкторы и сеттеры, либо ещё можно написать билдер. Сеттеры не очень люблю, с ними сложнее описывать разметку декларативно.
СУКА, ГОРИТЕ В АДУ ВСЕ, КТО ИСПОЛЬЗУЮТ ГРАДЛ!!!! НИКОГДА, НИКОГДА НЕ ИСПОЛЬЗУЙ ГРАДЛ!!! ТОЛЬКО МАВЕН БЛЯДЬ!!!!
Хуже градла только его неумение гуглить. Не осилив мавен, он будет так же ебаться с градлом.
>Указывать их в опыте, если ими никто не пользовался, не стоит
Я могу попросить всех своих знакомых зарегаться на моем обьебосном сайте и оставить там коммент. Тогда будет считаться опытом? Считай стартап с охватом 10 человек, который просто пока не выстрелил.
Хотя можно в принципе даже никого не просить, все равно никто не будет проверять, есть ли там реальные пользователи, или это я создал 10 записей в бд
> на гитхабе даже есть несколько программ
О, прикольно, если такое есть, но мне пока не впадлу самому рассылать тк всего сутки как резюме выложил.
На данный момент стата такая: 87 откликов и 13 отказов за день (скорее всего почти все не набирают просто джунов, а я отправляю всем подряд). Напрягает, что большая часть откликов за день так и не рассмотрена, спрашивается какого хуя, и чем там hrюшки вообще занимаются, могли бы уделить хотя бы час в день рассмотрению вакансий, тем более, что в среднем на просмотр одной тратится не более 5 минут (мне так вообще за 1-2 минуты отказы кидали, будто даже резюме не читают)
Ставь нетбинс там всё есть
>могли бы уделить хотя бы час в день рассмотрению вакансий
Чтобы увидеть что ты вкатутосик профессия таксист / профессия сын (и при этом не чед) достаточно 10 секунд.
Таких вкакутось в день ломится тысячи четыре, вот и думай.
Чтобы что?
Захуярь через поиск и замену, хули ты голову ебешь?
Если во всем проекте надо то написать прогу которая с обходом пройдет по класспасу и регуляркой все заменит
Использую только градл уже лет 6. Считаю сторонников мавена легаси-объебосами и любителями толстого иксэмэля в своём проекте. ЧЯДНТ?
Гори в аду, уёбище.
СКОЧАЛ ПРОЕКТ, РАЗРАБА КОТОРОГО БИЛИ В ДЕТСТВЕ И КОТОРЫЙ РЕШИЛ НАГАДИТЬ МИРУ, СДЕЛАВ СВОЁ ГОВНО НА ГРАДЛЕ
@
ЗОПУСКАЕШЬ GRADLE.BAT
@
ПОЛЧАСА СКАЧИВАЕТСЯ ГРАДЛ С ТВОИМ ИНТЕРНЕТОМ В 5 МЕГАБИТ
@
ПУК, СРЕНЬК, ОШИБКА СКАЧКИ, ДАВАЙ ВСЁ ПО НОВОЙ
@
ПОЛЧАСА СКАЧИВАЕТСЯ ГРАДЛ С ТВОИМ ИНТЕРНЕТОМ В 5 МЕГАБИТ
@
СКОЧАЛОСЯ
@
ПОЛЧАСА КОМПИЛИТСЯ ГРАДЛ НА ТВОЁМ СТАРОМ ФУФЫКСЕ
@
ГРАДЛ БРОСАЕТ МОНЕТКУ, ЕСЛИ ВЫПАЛ ОРЁЛ - КИДАЕТ ОШИБКУ КОМПИЛЯЦИИ
@
ИДЁШЬ ГУГЛИТЬ, ЧТО ЖЕ ТЫ НЕ ТАК СДЕЛАЛ
@
НА СТЕКОВЕРФЛОУ ТАКИЕ ЖЕ ПЕРДОЛИКИ, КАК АВТОР ПРОЕКТА ТЕБЯ МИНУСУЮТ, ОТВЕТА НЕ ПОСТУПАЕТ, ВОПРОС УДАЛЯЮТ, ГОВОРЯТ ДУБЛИКАТ (ПО ССЫЛКЕ, КОТОРУЮ ОНИ ПРЕДОСТАВИЛИ, ВОПРОС О ТОМ, КАК ВЫВОДИТЬ ТЕКСТ В КОНСОЛЬ В ПЕТУХОНЕ)
@
КАК ОКАЗАЛОСЬ, КОМПИЛИТЬ МОЖНО ТОЛЬКО ПРИ СВЕТЕ ПОЛНОЙ ЛУНЫ, ОКРУЖИВ ПК ЧАШАМИ С КРОВЬЮ ДЕВСТВЕННИЦ
@
НАКОНЕЦ ТО ГРАДЛ УСТАНОВИЛСЯ И ПРИСТУПАЕТ К СБОРКЕ ПРОЕКТА
@
ЛАПША В СКРИПТЕ СБОРКИ СИРАНУЛА С ПОДЛИВОЙ И ПРОЕКТ НЕ СОБРАЛСЯ
@
УДОБНО
@
БЫСТРО
@
СОВРЕМЕННО
@
СИСТЕМА СБОРКИ
Долбоебище, системы сборки для того и делают, чтобы во всех окружениях всё работало одинаково. Чтобы можно было код перетащить с одного компа на другой и там его также эффективно собрать. Градл выполняет эту задачу на ура, правда, в другую сторону.
@
ПО ИТОГУ ВРУЧНУЮ ПЕРЕНОСИШЬ ПРОЕКТ НА МАВЕН, ЧТОБЫ ЕГО ПРОСТО БЛЯДЬ СОБРАТЬ
СКОЧАЛ ПРОЕКТ, РАЗРАБА КОТОРОГО БИЛИ В ДЕТСТВЕ И КОТОРЫЙ РЕШИЛ НАГАДИТЬ МИРУ, СДЕЛАВ СВОЁ ГОВНО НА ГРАДЛЕ
@
ЗОПУСКАЕШЬ GRADLE.BAT
@
ПОЛЧАСА СКАЧИВАЕТСЯ ГРАДЛ С ТВОИМ ИНТЕРНЕТОМ В 5 МЕГАБИТ
@
ПУК, СРЕНЬК, ОШИБКА СКАЧКИ, ДАВАЙ ВСЁ ПО НОВОЙ
@
ПОЛЧАСА СКАЧИВАЕТСЯ ГРАДЛ С ТВОИМ ИНТЕРНЕТОМ В 5 МЕГАБИТ
@
СКОЧАЛОСЯ
@
ПОЛЧАСА КОМПИЛИТСЯ ГРАДЛ НА ТВОЁМ СТАРОМ ФУФЫКСЕ
@
ГРАДЛ БРОСАЕТ МОНЕТКУ, ЕСЛИ ВЫПАЛ ОРЁЛ - КИДАЕТ ОШИБКУ КОМПИЛЯЦИИ
@
ИДЁШЬ ГУГЛИТЬ, ЧТО ЖЕ ТЫ НЕ ТАК СДЕЛАЛ
@
НА СТЕКОВЕРФЛОУ ТАКИЕ ЖЕ ПЕРДОЛИКИ, КАК АВТОР ПРОЕКТА ТЕБЯ МИНУСУЮТ, ОТВЕТА НЕ ПОСТУПАЕТ, ВОПРОС УДАЛЯЮТ, ГОВОРЯТ ДУБЛИКАТ (ПО ССЫЛКЕ, КОТОРУЮ ОНИ ПРЕДОСТАВИЛИ, ВОПРОС О ТОМ, КАК ВЫВОДИТЬ ТЕКСТ В КОНСОЛЬ В ПЕТУХОНЕ)
@
КАК ОКАЗАЛОСЬ, КОМПИЛИТЬ МОЖНО ТОЛЬКО ПРИ СВЕТЕ ПОЛНОЙ ЛУНЫ, ОКРУЖИВ ПК ЧАШАМИ С КРОВЬЮ ДЕВСТВЕННИЦ
@
НАКОНЕЦ ТО ГРАДЛ УСТАНОВИЛСЯ И ПРИСТУПАЕТ К СБОРКЕ ПРОЕКТА
@
ЛАПША В СКРИПТЕ СБОРКИ СИРАНУЛА С ПОДЛИВОЙ И ПРОЕКТ НЕ СОБРАЛСЯ
@
УДОБНО
@
БЫСТРО
@
СОВРЕМЕННО
@
СИСТЕМА СБОРКИ
Долбоебище, системы сборки для того и делают, чтобы во всех окружениях всё работало одинаково. Чтобы можно было код перетащить с одного компа на другой и там его также эффективно собрать. Градл выполняет эту задачу на ура, правда, в другую сторону.
@
ПО ИТОГУ ВРУЧНУЮ ПЕРЕНОСИШЬ ПРОЕКТ НА МАВЕН, ЧТОБЫ ЕГО ПРОСТО БЛЯДЬ СОБРАТЬ
@
ДЛЯ КАЖДОГО НОВОГО ПРОЕКТА ПОВТОРИТЬ ВСЁ, НАЧИНАЯ СО СТРОКИ 0, ПОТОМУ ЧТО КАЖДАЯ НОВАЯ ВЕРСИЯ ГРАДЛА ЛОМАЕТ ОБРАТНУЮ СОВМЕСТИМОСТЬ
Почему же тогда большинство за него топит? В андройде вон он вообще по умолчанию. Я уже не говорю о том, что большинство новых проектов стартуют именно на градле. Получается в этом есть какой-то смысл и мавен уже не торт
Потому что долбоебы. Порриджи хотят всё поменять просто ради того, чтобы поменять, и похуй, что от этого все проиграют. Натуральные животные.
>что большинство новых проектов стартуют именно на градле
Классическая логика быдло-социоблядуна. ВСИ ТАК ДЕЛОЮТ, ПОЭТОМУ И Я СДЕЛОЮ!
О господи, вот это перефорсище от порриджа. Ему прямо говорят, что его говно не собирается, и им пользуются только те, кто орут OLD IS BAD!!!!, а он перефорсит на NEW IS BAD. Пиздец.
Как только выйдет новый мавен 4.0 с конфигом на ямле, я сразу побегу наворачивать за обе щеки
скуф
Джава, кстати, подыхает не из-за скуфов, скуфы в своё время сделали джаву мировым языком. А вот налетевшие оголтелые ебанутые тупые дегенераты порриджи пришли и сломали наш уютный джава мирок, напридумывав залуп типа петухлина и градла, сломав всё, на чём жаба и поднялась - обратную совместимость, мультиплатформенность, write once, no perdoling и всё вот это.
Нахуя? Добавить зависимость в мавен - дело одной секунды, зачем ещё больше упрощать это? А ямл сам по себе некрасиво выглядит, в стиле петухона, а не джавы.
>зачем ещё больше упрощать это
Затем, что есть плагин laconic pom, не ни с хуя появился.
>А ямл сам по себе некрасиво выглядит
Ты в спринге application.yaml используешь или application.properties?
>не ни с хуя появился.
С того же хуя, с какого появился петухлин и градл.
>Ты в спринге application.yaml используешь или application.properties?
Я спрингом не пользуюсь, у нас внутренний фреймворк, и он гораздо лучше спрингопараши.
> application.yaml application.properties
Фу блять щас бы на зумерском спрингбуте писать с его автоконфигурациями, не могут уже ебучие бины с конфигами сами проставить. Из-за вас спринг и умер как фреймворк, превратился в хуйню для соевых крудошлепов.
Меньше времени тратится на разработку? Меньше. В чём доёб? Ты не можешь показать свои уникальные кодерские навыки? Так а нахуя ты вообще лезешь в спрингозалупу, если есть другие конторы (типа моей, например), где внутренний фреймворк, и почти каждый его сам дорабатывает напильничком, получая невероятные результаты по скорости и качеству разработки в итоге.
Че ты выебываешься своей галерной библиотечкой? Так и скажи, что у вас там супер ультра легаси залупа, которую писали еще до появления спринга или когда он еще был не в моде и теперь легче все заново переписать, чем переносить все на спригопарашу, но которая все равно намного лучше того ублюдка, что вы там у себя наворотили за три копейки.
>у нас внутренний фреймворк, и он гораздо лучше спрингопараши
в голосяку бляяя
еще и небось на java6
CUBA Platform?
Нахуя, если есть свой легаси фреймворк.
Нет, почти чистое ООП. Бугаенко бы охуел, что так можно, хотя всё равно бы разнылся.
Ебать ты гений чел, без рофлов. Тупо стрижёшь бабки с лохов, проталкивая охуительные идеи. Зато потом, когда все дедлайны по выпуску в прод будут проебаны из-за багов, это будет явно не твоя проблема, выкинуть на улицу они тебя все равно не смогут, ведь никто не будет понимать к тому моменту как заставить вашу хуйню хоть как-то стабильно работать кроме тебя, а рефракторить этот кал уже будет поздно. Компания вполне вероятно разорится, но тебе будет заебись, пойдешь в некст контору рассказывать какой ты солюшон архитектор тимлид принципал с инновационными идеями.
А, так бугаенковщина еще хуже.
Конечно иди. Хороший разъеб, если ты запоминаешь вопросы или ведешь запись - это охуенный опыт.
В сбере нет единого стандарта собесов. Думай о сьере как о тысяче галёр с одинаковым названием.
Никто не разорится, мы наоборот смогли пидорнуть половину крудошлёпов, которые не могли в реальный кодинг и вообще фактически ничего не делали. По началу был период, когда ничего не производили почти, но зато сейчас у нас как в нетфликсе - сделать новый проект = просто шлёпнуть правильную связь между модулями в фреймворке. Самая большая задача - придумать, что вообще нужно, всё остальное за тебя уже сделано. Думаю, скоро мы придём к тому, что останусь работать один я, а все остальные уйдут нахуй, ибо не нужны.
Ох лул, а меня несколько разных команд сбера заигнорили. У тебя вышка есть в резюме?
Меня заигнорили все команды <10 сбера кроме двух, не буду уж сильно палиться каких. Вышка есть в резюме. Щас нарисовалась проблемка, я попросил собес вместо предложенной даты другую на некст неделе и меня в игнор кинули, неужели они так легко обижаются
Неудивительно.
А кубернетис это сервер приложений.
В сбере все сильно разное, есть крутые проекты, есть переписывание легаси, но в целом стек современный.
Комерческая сборка кубера от красной шляпы. По сути инфраструктура для оркестрации контейнеров. С точки зрения разработчика это выглядит как некая область(неймспейс) в которой можно развернуть свои микросервисы (как если бы они были запущены на отдельных серверах приложений). И таких неймспейсов может быть n штук и все между собой коммуницирует. При этом разраба в принципе не волнует на чем именно работает кластер опеншифта - железки или виртуалки. Просто тебе выделяется некоторые ресурсы, которые ты на свое усмотрение утилизируешь внутри неймспейса. Как-то так.
>И насколько сложно в этом всем разобраться?
Easy2learn, hard2master. Начни с туториала шифта на офф. сайте, емнип, у редхэт есть онлайн песочница. Попробуй создать базовые конфиги - инстанс сервиса с одним контейнером и приделать http-ручку для него. Прямо совсем азы можно освоить за недельку по вечерам.
>По идее же этими вещами девопсы промышляют
По идее девопсы, но на моем проекте девопсы промышляют в основном CI/CD, поэтому приходилось самому разбираться.
Если сервера приложений знаешь, то быстро.
Скачиваешь код, собираешь, указываешь корректные конфиги, запускаешь. Они же на яве, тут всё так работает
Вот так правильно ?
P.S. - почему спрашиваю ? Мне кажется класс не должен состоять из одного конструктора... Или может ?!
build() по смыслу должен быть либо статическим и возвращать готовый объект, либо ещё одним конструктором, который в том числе принимает надпись, либо реализовать паттерн builder, у которого есть пачка методов set(), возвращающих this, а в конце build(), возвращающий объект CustomJButton. Если и делать метод как у тебя, это скорее setCommonProperties(), а не build().
>>486528
Может, в классах-наследниках часто так и бывает. Всё равно у тебя могут потом появиться другие методы.
Сделай два конструктора, один как сейчас, а другой принимает только text и вызывает первый, прокидывая туда text и дефолтные значения для цвета, размера и видимости. Вообще, lock по смыслу скорее дизейблит кнопку, а не скрывает, так что либо вызывать setEnabled(!lock), либо назвать параметр visible
Да просто пишегь ещё один конструктор, и в нём первой строчкой:
this(text, Color.WHITE, new Dimension(50, 25), false);
Вот те кто его пользуют, нахуя они несколько раз!!! поломали обратную совместимость?
Что это им такого дало?
Читаю статью книжку 6-летнюю с градлом. У меня стоит новый, код - не работает. Теперь у меня два грудла. Читаю статью 3летнюю. Не работает ни 6-летний градел, ни новый.
Вот нахуя?
Причем я и не пытался разбираться в токостях. На стековерфлоу из-за несовместимости версий можно голову наверно сломать.
В градле и примеры 6-месясной давности не всегда работают, куда там 6 лет, для градла это вообще целая эпоха нахуй.
Читаю книги, мурзилки, смотрю видосеки. У четверти примеры на грудле. Мне система сборки вообще поебать, там обычно ни плагинов нихуя. Никакой сложной сборки.
Но даже хеловорд может не запуститься. Даже если есть градел-враппер.
ТЫ НИ ПАНИМАЕШЬ, ГРАДЛ ЭТО ЗАИБИСЬ, А ТЫ ПРОСТА СКУФ NEW IS BAD ВОТ!!!!!!!! МАВЕН))) ЛЕГАСИ) ОБЪЕБОС))0))))))00)0)0))))0))
Как язык общего назначения тебе его мешает использовать только твоя собственная криворукость и гладкость мозга на самом деле просто отсутствие работы в нише, в самой джаве нет ничего что обусловливает то что она на 99% используется крудо-дебилами
Где вы работаете? Хочу к вам в команду
Наверное, он имел ввиду вызов перегруженного конструктора через this(...) или конструктора суперкласса через super(...). Правда, непонятно нахуя вообще искать работу, если ты пока еще настолько хлебушек в общем уровне языка, что для тебя это ебанись-чудеса.
Мимо-пишу на работе гуи на свинге иногда, но у меня тут исключение, свои идеализированный уютный маняmiroque на полтора человека, каждый из которых педалит собственный технологический стек на разных средах и языках, кек
Ну, с этими словами есть ебанутые приколы, стоит сказать. Например то, что вызов объекта-владельца из объекта нестатического вложенного класса делается как Outer.this. Сейчас я вроде запомнил, но первые разы когда надо было поднять такую семантику вечно гуглил по полчаса. Классика джавы - перегрузить каждое ключевое слово хуиллионом смыслов, видимо чтоб залетная шарпоблядь мозг сломала, кек.
Нет проблем самому такое написать, просто будет работать в нагруженной среде, желательно чтоб было все оптимизировано умными дядьками.
Работает? Иди нахуй!
Где интерфейс, мать вашу? CyclicStorage должно быть интерфейсом! А твой класс, очевидно, правильно называется ArrayPointerCyclicStorage.
В Apache Commons Lang есть CyclicQueue или как то так.
>или через проверку по условию if(pointer == capacity-1){pointer = 0;}else{pointer++;}
Так медленнее будет, потому что обычно в джавовских программах FPU простаивает. Но анус не ставлю, потому что не уверен. В любом случае, это настолько мизерная трата ресурсов, что задуматься об этом - богохульство. Ну и конечно золотое правило "не оптимизируй преждевременно".
Спасибо.
Просто очень много таких микро-стореджей кладется в огромную карту, и доступ к ним с этой функцией должен выполняться очень много раз (в среднем несколько десятков тысяч за одно обращение). В принципе, подвисает совсем на немного на практике, так что пока забью.
Сорян, я не очень понимаю корпоративный сленг. Типа, для чего это надо?
Есть что-то вроде "идентификатора" айтема (например, название товара), и множество вариантов его свойства (например, цены в разных магазинах). Мне нужно уметь по входящему названию и цене найти последние N ранее встреченных вариантов цены, чтоб, например, понять, не слишком ли высокая цена сейчас предлагается, и если она нормальная, то засунуть ее в этот цикликСторедж, а если высокая то, например, скипнуть. Ну и хочу сделать без бд, просто всякий раз после отработки это дело сериализуется в файл, а при старте - десериализуется из него (либо каждый раз при старте приложения, чтоб снизить лаг на сборку-разборку объекта, но тогда он будет все время висеть в ОЗУ)
Чет нихуя не понял. А зачем тебе это? Расскажи, что ты вообще хочешь сделать по итогу (не технический механизм, а итоговый результат, например, плагин для майнкрафта - и что это за плагин).
Это по работе, нужен софт который принимает на вход файл с кучей записей (это что-то вроде репорта от одной промышленной системы системы, которая фиксирует время выполнения некоторых операций), из каждой записи я могу собрать как раз "ключ", характеризующий, что именно за операция выполнялась, и вытащить ее время. Но бывают ситуации, когда время поступает явно невалидным (например, в 5-10 раз больше ожидаемо максимального). Каждый раз, когда это время выглядит подозрительным, я буду по ключу (тупо строка) лезть в эту карту (Map<String, CyclicStorage<Integer>>), вытаскивать оттуда этот циклоСклад, и анализируя последние N записей об аналогичных операциях принимать решение, валидно ли предполагаемое время. Если нет, то я буду его отклонять, заменять на статистическое из карты, и делать логирование этого события. Хранить единым числом это тоже нельзя, поскольку ввиду специфики процесса, небольшие плавания значения в пределах процентов 50% в любую сторону - вполне ожидаемы. Если я назначу объем циклического массива например в 20 записей, то это будет как бы скользящее среднее по последним 20 значениям, и в то же время оно будет корректно отрабатывать постепенный медленный рост значения (ввиду дрейфа параметров процесса, например).
Сначала я решил заебенить все это просто в очень большую карту, где буду хранить все значения за долгий период, но там при первом прогоне оказалось примерно 220к значений, и в динамике все это каждый раз монтировать из файла при очередной обработке рождало лаг секунд в 5, что вообще-то нормально, но с учетом того что эта карта будет дальше только расти, я чет решил, что нахуй.
Могу предложить тупо скопировать реализацию скажем дека и засунуть туда свою логику, выпилив ненужное. Так реализация будет на 95% написана умными дядьками
Но насколько я понимаю Декуе бесконечна, а именно малый объем мне критичен. В принципе уже запилил всё. Спасибо.
Так можно в скопированном коде дописать условие, тебе там как я понял нужно просто ссылку на хвост занулять при макс сайз > х
Ну для этого надо как минимум понимать как там что работает, чтоб быть уверенным что это всё достаточно быстро будет. Вообще подумал что неплохо бы подошёл линкед лист, про него я по крайней мере знаю что дописывание и удаление из него быстрое, потому что нет индексов которые надо двигать, а с очередями я не работал, хз что там под капотом. Энивей, мне надо иметь возможность как бы получить слепок всей коллекции в любой момент, а у очереди в любой момент стандартный апи вроде даёт только голову и хвост трогать.
Так тут остальные ещё большие довены, а на жаве я вообще один. Тут так-то раньше нормальная компания была, сейчас только чето токсиков понатекло.
Щас думаю мб юзер дто сделать частью юзердетаилс, чтобы в любой момент можно было просетать в сообщение, а второго пользователя, кому отправляешь мб брать из секурити контекста
Бля чувак... ты либо пиздец трудный, либо силишься в тролля.
>файл с кучей записей
>из каждой записи я могу собрать
>из каждой
У тебя например есть аппарат, который например измеряет крепкость бухла разных видов и брендов, и логирует свою работу в CSV вот так:
Водка "Пынинка" 39,1
Водка "Пынинка" 41,0
Водка "Пынинка" 20,2 <- пиздец странно
Хцли тут непонятного, что парся это построчно, и делая пуш валидных значений куда-либо, ты, встречая неожиданную запись, всегда можешь посредством такой структуры понять, все ли идет у тебя по плану с данными, и какое сейчас вероятное среднее значение для имеющегося ключа?
Примерно всё. Нахуя ты сравниваешь три раза с пробелом? В шары что ли долбишься? Тебе даже идея скорее всего подсвечивает три повторяющихся кондишена.
По нормальному этот массив преобразовать в лист, потом в стрим, потом профильтровать и вызвать фор-ич, и все, в одну строку.
Че токсичишь-то, пчел
>>486895
Потому что эти логические части надо объединить через AND:
символ ОДНОВРЕМЕННО не является точкой И не является семиколоном И не является пробелом. То что ты написал - always true, потому что любой символ если даже пройдет проверку "не является точкой" с результатом false (то есть он реально точка), не пройдет следующую уж точно (он уже точно не пробел). И таким образом не существует символов которые могут это пройти с результатом "ложь".
Кратко и красиво пикрил, хотя хочется все засунуть в регулярку ;|\s|\., но там нет таких методов вроде
Впоросы встречные, у тебя есть персистанс для сообщений?
Сообщение после отправки, отрисовывается в окне чата сразу же? (без подгрузки с сервера)
Нет я ж на шаблонизаторе, просто делаю редирект на ту же страницу и сообщения с базы подгружаются
сап аноны, можете подсказать, по каким причинам у меня может не срабатывать мой метод testFailed TestWatcher в junit5 на падениях тестов?
делаю как в ответе https://stackoverflow.com/questions/49037406/testwatcher-in-junit5
но в дебагере вижу, что программа даже не заходит в мой метод
втф?
Вот класс встречается в коде. Окей, я перехожу внутрь посмотреть что он из себя представляет, что делает. А там десяток полей. И это не все. Он наследник другого. Там тоже десяток всяких полей. И пока ты смотришь тут, из головы уже вылетает, что там еще есть. Методы которые меняют состояния этих полей. Просто каша в голове. Иногда так хочется, просто увидеть все в одном файле, в одном классе. И от родителя методы и собственный. Как бороться с этим? Чувство, что ты смотришь на картинку по частям. А хочется видеть ее целиком.
Ctrl/Cmd + F12 в идейке и наслаждайся списком. Или слева раскрой структуру класса.
А если пользуешься не идейкой, то страдай, ибо хуй знает, как в этих ваших вскодах и эклипсах всё делается. А вим с емаксом сам настроишь
Хочу прогать на жабе на ноуте. Но там пень. Эклипс лагает. Компилируется всё долго
Есть какие-то более шустрые жаба редакторы? NetBeans вроде норм работают, но все равно медленно. Что лучше? VScode?
Новый ноут кста, неделю назад приобретался -_-
Ничего не понял, если у тебя два класса, один наследник другого и у них методы с одинаковым функционалом, то почему бы просто не выпилить метод у наследника, он же все равно от родителя у тебя будет. Или у тебя там аксессор приватный?
Значит дизайнил это решение долбоеб. Если они наследники друг друга - то код наследника один хуй переопределяет метод родителя, и в нем нет смысла, его можно тупо снести. Если они оба наследуют какой-то еще суперкласс, то метод следует вывести в родитель, а если ему там по логике не место, то создать еще один промежуточный суперкласс, который будет выделять общую функциональность, ну либо унаследовать их друг от друга, если логика бизнес-модели позволяет. Это все справедливо если метод достаточно сложный и громоздкий. Если у тебя там весь метод это какой-нибудь forEach(Sysem.out::println) то конечно можно и забить, но даже в этом случае будет попахивать.
Кул стори. Я бы даже кинул, если бы был уверен на 100% что ты не пиздобол. Но ты же понимаешь что собирать подачки в среде, где 99% подобных высеров есть пиздобольство - это фиаско? Обратись в какой-нибудь приют для домашних животных и поясни им свою катку как есть, может они на передержку возьмут или в долг сделают что-то.
Репорт.
Попроси научрука подкинуть идей.
Софт для вычисления кратчайшего пути на взвешенном графе и построитель маршрутов на его базе, например
Двачую, даже у меня на гитхабе есть реализация кратчашего пути, осталось только интерфейс сделать
Диплом нужно писать по теме своей работы, либо по теме, которую дает тебе научник. Можно конечно выдумать что-то из головы, но это такое себе.
У нас обычно на 4 курсе всегда спрашивали, работаем ли мы, при выборе темы на диплом.
Я не работал, поэтому пришлось какую-то хуету городить, за которую меня еще и попустили на защите.
> отсутствие мейна
В спринге тоже так можно, если деплоить на сервер приложений Java EE (кроме Kubernetes).
Просто в галере, на которую скоро пойду на собес он используется, хочу хоть что-то почитать, мб создать пару soap сервисов, поперекидываться xmlами. Возможно, подготовить ответы на какие-то вопросы по нему
1. Ищешь и запоминаешь желательно с минимальным пониманием ответы на следующие вопросы:
> Что такое WSDL? Зачем он нужен? Какая структура?
> Что такое XSD? Зачем он нужен? Какая структура?
> Что такое неймспейсы и для чего они нужны?
> В чем отличие XML от JSON? Что лучше и когда?
2. Берешь первый попавшийся спринговый туториал по WS и примерно повторяешь, что делали там
3. Скачиваешь соапюай и пару раз вызываешь свой сервис
4. Читаешь абзац про подписи и секурность, чтобы знать, что оно существует
5. На все остальные вопросы отвечать "да, что-то читал, но не сталкивался напрямую пока что"
6. ???777
7. Ты успешный галероиксэмэлэкидатель
1. Ищешь и запоминаешь желательно с минимальным пониманием ответы на следующие вопросы:
> Что такое WSDL? Зачем он нужен? Какая структура?
> Что такое XSD? Зачем он нужен? Какая структура?
> Что такое неймспейсы и для чего они нужны?
> В чем отличие XML от JSON? Что лучше и когда?
2. Берешь первый попавшийся спринговый туториал по WS и примерно повторяешь, что делали там
3. Скачиваешь соапюай и пару раз вызываешь свой сервис
4. Читаешь абзац про подписи и секурность, чтобы знать, что оно существует
5. На все остальные вопросы отвечать "да, что-то читал, но не сталкивался напрямую пока что"
6. ???777
7. Ты успешный галероиксэмэлэкидатель
Ну если ты не можешь родительский отрефакторить, ну унаследуйся еще одним классом, впихни туда свой этот метод, и унаследуй оба наследника от него. Либо один от другого если это логично. Или блять оставь уже два одинаковых и мозги не еби. Это кроме запаха в проекте не сказывается особо ни на чем.
>>487525
Ну я не имел ввиду под маршрутами географический пути. Можешь изобрести например систему оптимизации производственных процессов (там тоже на графах можно построить логику, еще и с кучей приколов вроде доступности/недоступности ресурсов (в целом это аналог перекрытой дороги, конечно)). В любом случае это интереснее какой-то очередной крудо-дрочильни
Если уж писать подобное, то использовать какой-нибудь алгоритм флойда, который ищет пути между всеми парами вершин. Он пишется в три цикла насколько я помню там строчек 20 по итогу
В классе наследнике я свой метод впихиваю, новый. Его нету в родителе, я не могу его переопределить. Просто интересно, можно обьеденить наследования и полиморфизм... :/
Флойда-Уоршела
> Просто интересно, можно обьеденить наследования и полиморфизм... :/
Чего нахуй? Если у тебя не будет в предке этого метода, то ты и не сможешь вызвать его полиморфно у потомков (у тебя тупо не будет переменной с таким методом, к которой ты сможешь прикастить и то и другое). Ты сможешь оформить велосипедно-рефлексивный псевдополиморфизм добывая эти метода по имени с использованием рефлекшен, но это какие-то танцы для долбоебов.
>Просто интересно, можно
Можно не пиздеть всякую хуйню из учебников, а разобраться как нормально работают все эти вещи - наследованные методы, перегруженные, переопределенные, накрытые, и вот это вот все. тогда не будет надобности понимать каким бы яйцеголовым словом назвать тот или иной аспект.
На одном пк если поставлю размер картинки как у фрейма - картинка вылезет немного за фрейм. А на другом пк всё ок ?
Так и должно быть, чтобы никто не писал гуй на жабе. Писатели гуёв на жабе должны страдать.
>Java Concurrency in Practice
Спасибо, пытаюсь разобраться.
Стокнулся с примером, который завел в тупик - пример достижения атомарности операции с помощью создания неизменяемого объекта-холдера
Вроде бы кажется просто, т.к. используется volatile поле класса, то при изменении ссылки на объект все потоки гарантированно увидят новый объект при обращении к полю cache. Как бы у тредов нет возможности работать с неконсистентными даными в данной ситуации, т.к. значению lastNumber всегда будет соответствовать корректный lastFactors. (разные треды не могут поменять эти значения по отдельности)
Но в самой книге приводится комментарий, который не совсем вяжется с моим понмианием ситуации
with an immutable one, once a thread acquires a reference to it, it need never worry about
another thread modifying its state. If the variables are to be updated, a new
holder object is created, but any threads working with the previous holder still
see it in a consistent state.
Получается подразумеается, что в стеке треда1 будет храниться своя копия ссылки на cache и в случае изменения ссылки тредом 2 значение ссылки треда 1 в стеке поменяется при следующем обращении к полю cache (засчет volatile)?
КУПИ СЕБЕ НОРМАЛЬНЫЙ КОМП, БЛЯДЬ!
Установи старую версию intellij idea. У меня был пк на pentium g2020 + 2 gb 1666. Всё летало норм, intellij idea 2015 года стояла.
pentium g2020 80 рублей стоит...
nano
А ты в курсе, что не делаешь реверс и возвращаешь ту же строку?
Во-первых, ты молодец, что не стесняешься учиться и признавать свои ошибки
Во-вторых, ты долбоеб, и это не "чек на палиндром"
В-третьих, ты пропустил большой пласт знаний касательно различия между == и .equals(..)
> Во-вторых, ты долбоеб, и это не "чек на палиндром"
Это ты долбоёб. И оно работает логически верно. Сравнивает число инвертированное как строку с самим собой. Т е разницы нет в сравнении "abc с cba" и "123 с 321"
> В-третьих, ты пропустил большой пласт знаний касательно различия между == и .equals(..)
А вот и нихуя. С == оно обязано работать. С equals нет, потому что объекты там разные
Охуенно. Оказывается, что оно работает вообще не так, как описано
КТО Ж БЛЯТЬ ЗНАЛ ТУТ ИМЕЕТСЯ В ВИДУ НЕ ТО, ЧТО СРАВНИВАЕТСЯ ЯВЛЯЕТСЯ ЛИ ЭТО ОДНИМ И ТЕМ ЖЕ ОБЪЕКТОМ В КУЧЕ, А РАБОТАЕТ ПРОСТО КАК ==, НО ДЛЯ ОБЪЕКТОВ СУКА БЛЯТЬ
Почему джва такая хуйня? В питоне чек на палиндром это буквально return(str(x) == str(x)[::-1])
Помогите, плс.
Помогите, плс.
Ты можешь конечно сделать таким способом, но я бы сделал по другому, потому что вот так могут быть непредвиденные проблемы. Тут конечно сам решай, как тебе лучше, через пердолинг и оверхед, или стабильно.
Я тебе говорю, что смысл в экономической составляющей. Это подтверждается наблюдениями за разработкой и в принципе моим опытом. Задача любой организации в коллективной работе и правильном взаимодействии между людьми.
>Мне через два дня на собесе так же отвечать?
Хочешь-не хочешь, а придётся адаптироваться к условиям. Конкуренция на рынке вынуждает получать новые навыки, которые должны отвечать спросу. Отвечая на твой вопрос - нет, наихудший вариант.
Да ничего особо больше и не надо. Особенности сериализации/десериализации, обработка ошибок с ретраями и дед леттер кью.
Брокеры и зукиперы это не твоя забота.
Понял, спасибо.
Zookeper - сервис дискавери, грубо говоря ты знаешь имя сервиса, физический адрес или имя хоста при этом знать для взаимодействия с сервисом не нужно.
Это же шиза. Так кто-нибудь делать? Как вообще надо делать?
Да понятное дело, что в микросервисах юзают как асинхрон, так и синхрон. Асинхррн используют там, где недоступность микросервиса терпима, например, действие генерирует какое-то побочное событие, которое можно обрабатывать в фоне, а пользователю показывать сообщение "идёт обработка, подождите", а когда микросервис проснётся, он обработает то, что накопилось в очередях. Но если нужны данные, без которых дальше работать нельзя и надо прям щас, то и смысла откладывать их нет, приходится делать синзронный запрос и простаивать, пока не придёт ответ. В целом, чем меньше синхронных запросов - тем меньше связаны микросервисы, но асинхрон не всегда достижим.
Для синхрона можно использовать что угодно, рест, groc, да хоть soap, суть одна и та же.
Упрощенный пример, но всё же. Допустим, у меня есть микросервис перевода и микросервис юзеров. Микросервису перевода с фронта приходит id отправителя, id получателя и сумма перевода. Сервис переводов должен получить поля счёта юзеров у сервиса юзеров по их айди, потом обратиться к сервису счетов, чтобы на одном счете увеличить сумму, на другом - уменьшить. Это всё делается через синхрон?
Мне кажется это изначально неправильно построенная архитектура, микросервисы не должны друг от друга настолько сильно зависеть. Это все должно скорее всего происходить в одном сервисе или возможно реализоваться не через брокеры, поправьте меня, если я хуйню несу.
мимо таксист
Просто ты тупой поридж-хуесос. Нахуй ты вообще высираешь тут этот бред? Проблема не в джава, а в твоей тупорылости и анскилловости.
>Ты тупой что ли блять? Неужели там не очевидно как это все элементарно работает?
На вопрос ответь, долбоеб, нахуй тебе два счетчика?
Что твоей мамаше хуй к носу прикинуть, пëс. Ещё вопросы?
Репорт.
Ты просто лоускилльная чьмоня, у которой не было опыта в c/c++. Если бы хотя бы немного кодил на плюсах, то знал бы, что ссылки в жабе что-то вроде указателей в С++, поэтому нужно еквалс дергать.
класс
Ааааа, так то маршрутизатор, а потом идёт комутатор....
> Нету треда
Потому что это не относится к программированию. В других разделах может быть нужный тред.
Счета отправителя и получателя можно запросить синхронно, а итоговые запросы на изменение баланса отправляй в сервисы счетов асинхронно.
Вообще, и счета пользователей можно запрашивать асинхронно. Вводишь сущность под бизнес-процесс перевода средств со статусами "ожидание данных о счетах" (в этот момент отправляешь сообщения сервису юзеров, чтобы он прислал счета), "обработка перевода" (когда придёт инфа о счетах, отправляешь запрос в сервис счетов с проводкой), "платёж проведён" (сервис счетов обработал запрос), "платёж отклонён" (сервис счетов ответил, что счета закрыты, заблокированы или счёт отправителя не имеет достаточно средств). И этот бизнес-процесс описываешь в микросервисе-оркестровщике.
Я прогал на плюсах и знаю про указатели. Я уже объяснил, что я не так понял equals(), потому что читаю книгу на пендосском, потому что самое свежее издание
так что пососи
> Если бы хотя бы немного кодил на плюсах
То знал бы, что у std::string перегружен оператор == и попытался бы юзануть такое же сравнение в жабе.
Никакие аналогии здесь не работают, а любые кажущиеся сходства - обман. Чтобы не обосраться, надо знать все детали языка, на котором пишешь код.
>>489687
Поридж-хуесос продолжает сыпать оскорблениями и умничать. Хули ты сюда приперся тогда вообще, умник ебаный?
> перегружено, так что вот так и так
> сам нихуя не знаю, спрошу, обосрусь, потом всех научу
надеюсь увидев пикрил ты подумаешь как все сложно и просто съебешь отсюда нахуй в свой любимый питон, а лучше во "вкусноит очка" на свободную кассу.
Пояснять что-то долбоебу желания вообще нет, потому что все твои реакции ИТТ - желчные огрызания обоссаной дворняжки.
Хотя лучше вот так, а то зная долбоеба, почти уверен что нихуя не проверив он начнет умничать что его наебывают подменой символов из латиницы с одинаковым начертанием
Что ты хотел показать своим примером, чмоня? Что прочитал первую главу учебника по жабе и гордишься этим?
Что ссал тебе на лицо, зеленый петух. Когда же ты уже съебешься отсюда нахуй, или подохнешь от какого-нибудь ковида, боже.
Хуя пичот. Прям как у Егорки.
Но в любой книге по джаве написано, что == работает только для примитивов. Даже классы обертки для чисел вроде Integer нельзя сравнивать через == на равенство чисел в общем случае, не говоря уже про остальные классы.
Олсо, перегрузка операторов это так-то не признак охуенности. Джава просто силится в то, что в языках называется ортогональностью - стратегия, когда одно и то же можно сделать наименьшим количеством способов. Плюсы и считаются иногда парашей из-за того что жутко не ортогональны, и C# едет туда же бтв (и там есть перегрузка операторов), тогда как джава специально разрабатывалась чтоб выкинуть всю эту ненужную хуйню. И многие более смузихлебные зумерские языки тоже придерживаются минимализма, вроде Go
Ну так шизоидов в openjdk тоже прилично, захотят и впилят, будешь потом отвечать индусам на собесах как правильно перегружать оператор запятая
Так про любую команду разработки языка можно сказать. А в джава наверное слишком тупые чтоб ввести перегрузку по твоему, да? Она просто нахуй не нужна, только выглядит красиво.
>Ну так шизоидов в openjdk тоже прилично
Это да, названия методов в новых фичах типа вирт тредов или стракчаред канкаренси просто пиздец.
>>489944
Я согласен, что не нужна, и команда openjdk не тупая, по крайней мере раньше была. Мултилайн строки сделали лучше, чем во всех остальных языках, свич-патернмачинг тоже неплохо вышел. Суть в том, что развитием го рулит только гугл.
Вот я и говорю, что надо изучать детали языка, а не проводить неработающие аналоги, как тот даун с крестами.
Ну, тем что это снижает ортогональность, опять же. Вообще само понятие оператора это антипаттерн просто прогиб языка под тот факт, что мешки с мясом со школы приучаются работать с операторами, еще и обычно инфиксными, потому что понятие функции - более абстрактное. Любой программист думает абстрактно, и ему очевидно что оператор - это типа узкий подкласс функций, только в отличие от оператора, у функции естественным образом возникает порядок исполнения нескольких последовательных функций, арность функции, и прочее.
Короче, 1 + 2 всегда может быть заменено на add(1, 2), а перегрузка операторов это просто инъекция в протез, попытка расширить функционал который мертв и костылен изначально, по своей сути.
Че не так? На функциях можно легко лепить сколь угодно длинные и сложные коллчейны с объектами любой природы, а на операторах попробуй захуярить хотя бы какое-нибудь получение длины гипотенузы, еще и с приведением величин к норме через /. Обосрешься с кучей скобок, и будешь дебажить эту парашу полдня.
Ну удобство в простых бинарных или унарных действиях - это единственное зачем оно надо вообще. А единственный существующий тернарник уже считается ебанись-deprecated и нечитабельной хуйней. А все удобство держится разве что на непереопределимости. Охуенно было бы перегрузить какую-нибудь инверсию на инкремент, и писать цикл
for(i=0;;!i)
пиздец понятно
В реальных условиях надо уметь ровно две вещи: отправлять сообщение в очередь и получать сообщение из очереди. В любом проекте все конфиги, сериализаторы и обёртки над ними пишутся в самом начале написания проекта, дальше тупо используется готовое. Обёртки обычно настолько высокоуровневые, что можно даже не знать, что за брокер используется внутри.
>Мултилайн строки сделали лучше, чем во всех остальных языках
А в чем преимущества перед тем же питухоном, где эти строки были еще 100 лет назад?
На проекте будет IBM MQ или WebLogic на стороне ESB.
Ни в чём, мультилайн строки хуже, чем во всех остальных языках. Такую примитивную фичу не могли завезти годами.
Ну ок, хуже значит хуже. А в чем хуже-то?
Почти на всех галерах, где скоро будет интервью используется рэббит или кафка + рэббит, не просто же так я в этой хуете разбираюсь сижу.
Пока не попадешь на проект, не узнаешь, что там на самом деле используется.
пришел доебаться
Без toLowerCase и удаления пробелов твоя одна строчка обосрется на "А роза упала на лапу Азора"
Нужно три.
доебался, ушел
Нахуя ты всех оскорбляешь, сын твари? Пошел нахуй к шарпоблядям.
Нахуй пошел. Палиндром?
Бугаенко
Как же я сгорел, когда сорсы для этой хуйни отказывались генериться на 11 жабе, а теперь, когда я наконец стартанул проект через соап юай нихуя не работает. Пиздец, и ни одного нормального туториала, в ОФИЦИАЛЬНОМ гайде спринга по соапу тупо забыли написать в самом начале, что если у вас 11 жаба - гайд нерабочий.
> Зачем этой поеботой кто-то пользуется?
Легаси. Мне каждый день приходится ебаться на работе с одной древней тезнологией, которая умеет только соап, на неё слишком много всего завязано, никакие grpc и ресты туда не добавить, переписывать на другую технологию не меньше года, и то забив на все остальные задачи, а новые фичи кабану нужны уже сейчас.
> Как же я сгорел, когда сорсы для этой хуйни отказывались генериться на 11 жабе
Там сломали обратную совместимость, выпилив JAXB из стандартной библиотеки. Лечится добавлением зависмостей в помник.
Свою розу и азора можешь себе в очко засунуть. С точки зрения детского сада это, конечно, палиндром. С точки зрения программирования - нет.
Пробелы это символы, разные регистры одной и той же буквы алфавита - это разные символы. Покормил дауна
Палиндром это слово или фраза, читающиеся одинаково как слева направо, так и справа налево.
Не посимвольно, нахуй.
Очко свое покорми, долбоеба кусок, придумают себе хуйни, а потом дрочат на нее, ебанаты.
>которая умеет только соап, на неё слишком много всего завязано, никакие grpc и ресты туда не добавить
Добавляешь сервис-прокси-адаптор, который ходит в ту систему по соапу, а в современные — в том, что тебе там нужно. Коли у тебя там соап, то на +50мс к запросу никто не обратит внимание, так что минусов потратить на это неделю или же вообще прилепить готовый апи менеджер и настроить его за 3 дня того стоит. А если ты у своего кабанчика не можешь выторговать неделю, то ты что-то явно делаешь на работе не так
Примерно 1%. Собеседующим обычно нахуй не всралось смотреть однотипные проекты вкатышей. Это сами вкатыши форсят мем про портфолио. Вот рассказать попросят.
Хуйню с проектами форсит немчинский, причем говорит, что желательно нанять дизайнера на этот проект, договориться с каким-нибудь фронтендером на коллаб и выдать потенциально коммерческий продукт, который сможет приносить пользу уже сейчас. Еще таких проектов должно быть хотя бы пару и конечно они ЖЕЛАТЕЛЬНО хотя он потом говорил, что по сути обязательно надо все это деплоить на какой-нибудь хероку.
Берешь и открываешь на гитхабе один единственный проект. Остальное скрываешь из публичного доступа. На вопрос, есть ли у тебя проекты, которые можно посмотреть, скидываешь ссылку прямо на собесе. А если она и так есть в резюме, просто говоришь, что в резюме есть ссылка на гитхаб, там открыт один проект сейчас с тем-то и тем-то в стеке, остальное пишу чисто для себя / всякие туториалы / коммерческий закрытый код / просто задачки с литкода / всякие недоделанные петпроджекты с тремя коммитами. Если продолжают доёбывать меня один раз просили показать код текущего работодателя, например, сразу заворачивай диалог — с таким работодателем лучше не связываться
А в чем разница-то?
Наверно у него так принято на курсах, поэтому он врет, что это кому-то интересно на работе.
На деле не все интервьюеры находят время прочесть кейворды из резюме. Встречал даже, когда не особо знакомы с кейвордами из вакансии.
А как тогда они за час успевают понять, что чел не залетный какой-то, который тупо в интернете все прогуглил и выучил за неделю? Часто вообще бывает, что чел проходит собес, но потом его выкидывают на улицу через неделю из-за того, что с работой не справляется? Есть тут такие, у кого было или мож слышали о подобном?
>А как тогда они за час успевают понять, что чел не залетный какой-то, который тупо в интернете все прогуглил и выучил за неделю?
Этим и отличаются нормальные собеседующие от чтецов по бумажке
>Часто вообще бывает, что чел проходит собес, но потом его выкидывают на улицу через неделю
Нечасто, но бывает. Я бы сказал, что в течение трех месяцев уходят или выгоняют 1 из ~25
Гоняют по разным темам. Иногда могут и глубоко спросить один-два вопроса. Не обязательно правильно говорить, нужно поразмышлять и поугадывать вслух. Если верно подобрался, значит не заучил. Или могут наоборот в ширину спросить. Типа кидают в тебя кейвордами со всякими техами уровня сеньки и тебе надо примерно объяснить что это такое, хотя бы примерно.
Ну и могут дать какой-нибудь кейс и спросить, какую библиотеку/алгоритм/паттерн/внешнюю программу ты бы применил.
Да и хуй ты заучишь, наводящими запросами зазубренное легко пробивается.
Ну я щас сижу многопоточку повторяю, считай заучиваю неймы классов и что они делают в одном предложении, ну и всякие дедлоки, лайвлоки, рэйс кондишены. Так-то я этой хуйней не пользовался практически с момента начального этапа вката, лол, но думаю, если всё-таки получится заучить и не обосраться, если спросят, значит можно все что угодно так заучить
Посмотри мок-интервью какие-нибудь. Там сразу видно зазубренное.
Вот он решает присобачить переменные plugin и type через внешний класс, а нах он мне нужен там в удаленном вызове, нах его мобилизовать сериализовать... Из-за этого нельзя писать даже самые простые вызовы в виде лямбд, только явно статические классы писать... Разве я многого прошу?
Хотя в целом понятно, почему так сделано. Придется костылизировать.
Ты что ли дебил? Создание объекта типа "класс" в памяти (статической его части, даже если никаких статик-членов нет) выполняется класс-лоадером в любом случае, если этот класс появляется где-то в программе. Конкретный объект класса это просто как бы его нестатическое расширение. Оно ничем не лучше и не хуже полностью статического контекста, просто так программисту удобнее конструировать свои идеи в ООП парадигме. Мозги не еби.
>сериализовать
значение слова знаешь?
Даже нет, не получится никак прочить txt изнутри jar. Разве что анзипнуть сам джарник, чтоб он выпал наружу. Короче, не понимаю как это сделать, если хочется иметь программу упакованную в один файл
В свинге есть меню бар, в меню баре сделай кнопку Help и подпункт About. Сам текст хелпа а то я росто хуйни в JTextArea в модальном фрейме
Ну это очевидный но какой-то кривой вариант как мне кажется.
В любом случае, меня больше вопрос интересует действительно ли нет способа достучаться в какие-то ресурсы файлового типа внутри упакованного джарника.
Я по 100 откликов в день оставлял до первого приглоса, у тебя точно кейворды в резюме нужные имеются?
Нет. Там их точно нет. Мой кейс - это великовозрастный свичнутый с другой профессии дебил, который пишет на Java софт общего назначения, не знает ни спринг, ни всякие там ваши куберы с кафками, нихуя. А киворды вроде умения разбираться в чужом коде и исполнительности это автозашквар.
о том, как компилятор делает лямбду без явной декларации класса.
И если её интерфейс сериализуем, то крайне не желательно чтоб фактическая лямбда была не статическим вложенным классом, т.к. в этом случае она будет содержать ссылкау на объект-контейнер, и будет пытаться его сериализовать.
В конкретном данном случае, т.к. все поля final, ядумаю архитектурно верно было бы откомпилировать в конструкцию эквивалентную
final finalPlugin = plugin
final finalEntity = entity
ds -> ds.getById( finalPlugin, finalEntity, ids )
в таком случае лямбдя получаетс тру статик и состоит только из 3х аргументов вызова.
Соображения разработчиков java в данном случае скорее всего продиктованы тем, что даже финальные поля могут быть не известны на момент создания лямбды (если она создается до конструктора например).
В итоге эта поебота руинит привлекательную возможность реализовать примитивные интерфейсы для удаленного вызова, операции с которыми передаются в виде сериализованных лямбд. Т.е. всю логику придется как диды тащить в методы интерфейса.
>не знает ни спринг, ни всякие там ваши куберы с кафками, нихуя
это и хорошо. Главное качество это умение видеть задачу в целом. Даже если ты там высрешь дедлоки или копипастный говнокод, но в целом работающий, это будет гораздо лучше чем результат работы спрингодебила, который постоянно будет ебать мозги аналитикам в духе "в нашей орхитегтуре ето нелахично, нереляцыонна, сделоть низя"
>>490978
>Вот он решает присобачить переменные plugin и type через внешний класс, а нах он мне нужен
Ну всмысле? А как ты хотел? Лямбда же на них замыкается? Замыкается. Вот представь --- принял ты сериализованную лямбду, десериализовал в другом процессе, и теперь пытаешься там вызвать. Откуда в ней возьмутся plugin и type? Как ты себе это представляешь?
Как вариант, можешь попробовать объявить функциональный интерфейс который принимает эти штуки аргументами, и запретить всем коллегам замыкать лямбды от этого интерфейса на что либо (но скорее всего кто нить да впорется, замыкания тяжеловато трекать, а соблазн их сделать велик).
>в этом случае она будет содержать ссылку на объект-контейнер, и будет пытаться его сериализовать
Если я правильно помню --- необязательно. Лямбда будет держать ссылки на то, на что она замкнута. Ссылку на this она будет держать если ты из лямбды зовешь нестатические методы, скорее всего.
>В итоге эта поебота руинит привлекательную возможность реализовать примитивные интерфейсы для удаленного вызова, операции с которыми передаются в виде сериализованных лямбд
Такое себе. Кмк, с лямбдой заколебешься трекать то, на что она замкнута. Замкнешь на что-то что несериализуемо (или не должно быть сериализованно) - и все. Ищи-свищи потом.
Лямбды вообще --- веселая фича, если копать в сторону нестандартных решений с ними. К примеру: если в лямбде нет замыканий ни на что переменное, то инстанс обьекта-лямбды всегда будет один и тот же, сколько ни вызывай код, ее декларирующий. Но если замыкания есть, инстанс будет всегда разный, даже для одинаковых замыканий. В совокупности с тем фактом, что у лямбд невозможно впринципе определить свои методы equals/hashCode, мне остается только жалеть, что я не могу определить лямбду-ключ от хешмапы и возможность запилить простенький кэш лямбд с контролируемым циклом жизни. Что особенно паскудно, так это то что до байткода лямбд даже АСМом и байтбадди не добраться - это прям бесит, столько идей руинится.
Вот что мешало блин разрабам джавы транслировать лямбды в анонимные классы при компиляции, нахуя было так изъебываться...
>>490978
>Вот он решает присобачить переменные plugin и type через внешний класс, а нах он мне нужен
Ну всмысле? А как ты хотел? Лямбда же на них замыкается? Замыкается. Вот представь --- принял ты сериализованную лямбду, десериализовал в другом процессе, и теперь пытаешься там вызвать. Откуда в ней возьмутся plugin и type? Как ты себе это представляешь?
Как вариант, можешь попробовать объявить функциональный интерфейс который принимает эти штуки аргументами, и запретить всем коллегам замыкать лямбды от этого интерфейса на что либо (но скорее всего кто нить да впорется, замыкания тяжеловато трекать, а соблазн их сделать велик).
>в этом случае она будет содержать ссылку на объект-контейнер, и будет пытаться его сериализовать
Если я правильно помню --- необязательно. Лямбда будет держать ссылки на то, на что она замкнута. Ссылку на this она будет держать если ты из лямбды зовешь нестатические методы, скорее всего.
>В итоге эта поебота руинит привлекательную возможность реализовать примитивные интерфейсы для удаленного вызова, операции с которыми передаются в виде сериализованных лямбд
Такое себе. Кмк, с лямбдой заколебешься трекать то, на что она замкнута. Замкнешь на что-то что несериализуемо (или не должно быть сериализованно) - и все. Ищи-свищи потом.
Лямбды вообще --- веселая фича, если копать в сторону нестандартных решений с ними. К примеру: если в лямбде нет замыканий ни на что переменное, то инстанс обьекта-лямбды всегда будет один и тот же, сколько ни вызывай код, ее декларирующий. Но если замыкания есть, инстанс будет всегда разный, даже для одинаковых замыканий. В совокупности с тем фактом, что у лямбд невозможно впринципе определить свои методы equals/hashCode, мне остается только жалеть, что я не могу определить лямбду-ключ от хешмапы и возможность запилить простенький кэш лямбд с контролируемым циклом жизни. Что особенно паскудно, так это то что до байткода лямбд даже АСМом и байтбадди не добраться - это прям бесит, столько идей руинится.
Вот что мешало блин разрабам джавы транслировать лямбды в анонимные классы при компиляции, нахуя было так изъебываться...
>Это сами вкатыши форсят мем про портфолио
Ну кстати нет. Много кто из евангелистов форсил на моей памяти. Просто НЕХ без внятного понимания того, что это такое и как его запустить обычно не котируется, а нормальное портфолио крайне редко у кого попадается (по крайней мере, среди джавистов).
Ну ты выдумал. Палиндром в программировании по твоему какое то особое значение что-ли имеет? Гугланул бы хоть свое "палиндром в программировании", да пруф предоставил, потому что чет гугл в ответ на такой запрос ничего кроме задачек с собесов не дает. Задачек, кстати, с той самой детсадной формулировкой.
>можешь себе в очко засунуть
Вот ляпни такое на собеседовании, и можешь просто сразу вставать и нахуй идти оттуда после этого.
Обычно сами не просят. Нахуя? Если у тебя есть что показать, ты сам запостишь ссылку на гитхаб в резюме. А если ничего нет но им надо, то ты просто не дойдешь до их собеса. Вот и все.
На самом деле мне такие ебанутые hrюшки порой звонят, которые даже резюме мое не открывали как будто, задают максимально тупорылые вопросы, ответы на которые есть в резюме. Например, у меня опыт на хх не пустой, чтобы они не отсеивали сразу по нему, но там понятное дело указано, что это опыт написания на жабе и перечисленных технологиях, некоммерческих проектов для личного пользования ака пет проектов. Но эти тупые суки так и норовят спросить, есть ли у меня опыт работы в компании. Или еще, у меня указанно в описании, что есть высш образование по специальности такой-то, универ закончил год назад, работаю там-то. Им ваще похую, все те же вопросы по кд сыпятся, я уже начинаю думать, что до подкованных в вопросе людей, мое резюме вообще не доходит и они его увидят только на собесе, вот будет кринж отвечать опять на хуйню про опыт, заебали бля.
Некотрые особо одаренные вообще шлют копи паст про предложения лидить команду, я вообще выпал с этого
мимо пишу всякую хуйню на жабе больше полутора лет
Че ты от них хочешь? У них сотни резюмех в день норма, ты у них тупо на потоке. Не говоря уже о том, что погромизмы на комплюктерах они знают постольку, поскольку им разжевал автор вакансии. Просто гонят по чек листу, сверяют со списком правильных ответов и отбраковывают неликвид. Некогда им вчитываться.
Все так, но речь о другом. Ебланы, агрессивно подстраивающие требования заказчика под себя и навязывающие свое видение "правильности" решения клиенту --- раки, и должны идти нахуй из айти. Отсюда и доебы.
Иногда бывает что клиент - педераст, который никак не участвует в жизни проекта до самого релиза, потом даже толком не ознакомившись с продуктом предлагает все переделать. Такие клиенты раки и должны идти в ад.
мимо
Согласен.
Клиент говорит: "Мне нужна программа, которая считает 2+2 и показывает 4, запилите пожалусто"
А такие хуепуталы начинают вот это свое: "ВАЩЕТА при определенных условиях 2+2=5, поэтому это и будет показывать программа и так будет правильно с точки зрения программирования"
Логично, что на них смотрят, как на аутистов ебаных.
Даже в таких случаях навязывать свое видение проблемы --- проигрышная стратегия. В вопросах постановки требований программистишко всегда в социальной иерархии ниже клиента, исключений нет (ну, разве что когда клиентом для себя является сам программистишко, девелопящий штуки под свои нужды).
Ты забываешь обо всяких конторах, где ИТ-департмент это малая часть всего бизнеса, и у программистов софт заказывают собственные "коллеги" для внутреннего пользования. Если такой коллега в данной ситуации долбоеб, то дать ему пиздюлей вполне законно. Всякое 1С так живет на всяких там заводах и пароходах.
Я так думаю --- быть адекватным клиентом не легче, чем быть адекватным разрабом. Если клиент неадекватен --- неважно кто он --- продукт просто гибнет под давлением рыночка, это вполне себе эволюционный процесс. И не так уж важно дашь ты пизды этому клиенту или не дашь --- проеб полимеров неизбежен. Ну отпиздишь ты его, он тебя пошлет нахуй и уйдет к конкуренту. Даже за самыми ебанутыми фантазиями как правило стоит чья то боль, боль которую не всегда ему просто передать словами так, чтобы ты понял. И чел всегда пойдет туда, где эту боль ему снимут. Ему насрать на рамки и конвенции программистишек, и это в какой то мере даже правильно. Давая пизды всем направо и налево, ты не поймешь их боль, и пропустишь тот момент когда зашоренным долбоебом становишься уже ты.
Соответственно, если клиент --- коллега по цеху, давать ему пизды в глобальной перспективе тоже не имеет смысла. Максимум чего ты добьешься --- облегчишь себе участь и отсрочишь чуток момент, когда твоя архитектура превратится в тыкву, но этот момент все равно неизбежен. Отпизженный чел просто начнет на своей стороне костыли вкорячивать, попутно выгорая, в худшем случае просто пустит по пизде все сроки на своей стороне, а потом когда все пойдет вразнос, он будет уже давать пиздюлей тебе через твое начальство, на которое посыпется фидбек в стиле "нихуя не работает ебанавротблеать!".
И я так думаю что вместо того чтобы идти пиздить чела, нужно сначала попытаться понять, что у него болит и почему он втирает тебе эту дичь. А поняв, найти и попытаться продать ему альтернативу. Если альтернатива для него неприемлема, опять попытаться понять --- почему так. Задавать вопросы. Вести диалог. Озвучить варианты. Если диалог не идет --- эскалировать. Пусть архитекторы и манагера обкашляют вопросик. Если и это не сработало, ну блять, хуле делать тогда? Пора уходить.
Благодарю за поддержку, /bратишка.
Правда, работы от этого все равно особо не прибавляется. Но я не особо парюсь, я начал этим заниматься больше из интереса к решению разных проблем, чем ради 300 к/наносек. Поэтому в своем развитии в основном двигаюсь "вниз", ко всяким лоу-лвл вещам, чем "вверх", в сторону ебли с фреймворками, которые ты толком не понимаешь и не контролируешь. Просто мне по хорошему надо свичиться с джавы на какие-нибудь плюсы поскорее, так как там ниша "общего назначения" и больше всяких системных фич без прокладок. А то чем больше я прогаю на джава, тем сильнее в ней закостеневаю, о любых технических проблемах уже думаю не по-русски, а по-джавски.
Охуеть ты продвинут. Какой у тебя грейд по этой самой шкале - джун-мид-синиор? Как зашарить на твоем уровне?
мимо-довен
>Как зашарить на твоем уровне?
Рофлишь чтоле?
>Какой у тебя грейд по этой самой шкале - джун-мид-синиор?
Какие шакалы, рот я ебал этих шакалов. Дали работу, дали денег, устраивает --- работаем, хули еще надо? Шакалы какие то. Тыб еще про вилку спросил)
Почему рофлю? Я в стандартном идеевском дебаггере охуеваю копаться, не то что еще всякие там байтбадди. Кэши лямбд блять, охуеть.
Ну а какой ответ ты ждешь? 10+ лет корпоративной дрочки и природная любознательность. Устроит?
Шарься по профессиональным конфам, читай тематическую хуйню. Делай штуки. Только если взялся делать штуку, делай ее до конца, чтоб прям законченный продукт на гитхабе, с адекватным тестовым покрытием и чтоб хотя бы ты им сам пользовался.
Ну это первая часть. А насчет позиции? Условный мидл? или сеньер? Ну так хоть по ощущениям в сравнении с тупыми коллегами
Чел, не надо ля-ля. Спринг-конфинуратор это хороший массовый бекенд-боец.
Если челик не знает спринга, но что-то там шурудит в джаве, значит он ничего не знает про бекенд. Ни про базы, ни про микросервисы, ни про форматы взаимодействия, ни про эвент-дривен, ни инфраструктуру.
Да бывает илитный бекенд на микрофреймворках, хуйлоадный на чистой жабе, самописных жаба фреймворках или на плюсах. Но тот, кто в этом шарит - легко разберется и в спринге.
Бабки платят за бекенд, за "общее назначение" и другое размытое говно деньги не платят.
Официально --- синьор. Все равно ИМХО грейды --- шлак, синьора тебе через несколько лет стажа дадут чтоб ты в другую компанию не учапал за прибавку к ЗП, об опыте эта лычка в текущих реалиях редко чего скажет.
И нет, мои коллеги --- не тупые. Адекватные челы. Не выебываются, не лезут поучать, не доебываются --- и хорошо. Общий язык находим легко.
Ты какую-то нелепую шляпу высрал местами. Не знает про базы? Программист? Серьезно? А что в твоем понимании бэк? Как раз челики сильные в общем назначении хорошо могут абстрагировать бизнес-процессы, моделить предметную область
>Но тот, кто в этом шарит - легко разберется и в спринге.
Так проблема не в какой-то там нафантазированной сложности спринга. Просто если его нет в работе и реальных задачах - то и повода разобраться не будет, если даже он из трех классов бы состоял и выводил в консоль хэлоуворлды.
Что за общее назначение? Если его нет в реальных задачах, то что есть?
Спринг - это di фреймворк изначально. Что использовали до этого общеназначенцы? Или di ненужон?
Ну и самое попсовое, что используется - это веб. На голом томкате писал? На жабаЕЕ параше? Сам писал веб-сервер?
Жаба без спринга(или без его подобия) это жалкие проценты от рынка.
Ладно ты наверное прав. Я и сам в спринге только начинающий, не смогу конструктивно возразить на что-то, просто такое ощущение что он менее важен чем умение писать что-то более близкое к абстрактным вещам, которые с нуля часто пилятся. Часто спрингодебилы вообще нулевые в этом.
У спрингокультистов повально синдром утенка, не принимай на свой счет. С одной стороны они правы, говоря что заебешься с нуля писать вебсервера под каждый кейс. С другой --- веб вебу рознь, если задача стоит --- элементарные ресты отдать, то на это есть стопятцот фреймворков, начиная от JAX-RS (который по удобству ничуть не хуже спринговых рест контроллеров) заканчивая всякими хипстерскими поделками разной степени популярности.
Но спрингокультисты на самом деле рвут жопу за спринг по другой причине. Они жизни себе не видят без инфраструктуры бинов и инжекций. Спринг им дает максимально полную экосистему вокруг бинов --- там и тесты, и скоупы, и прокся и аспекты: в итоге они разучились мыслить абстракциями, и мыслят гайдами по всей этой залупе. В итоге спрингокод всегда вырождается в намертво закапленной на спринг параше, причем конценсус по культу такой, что "это --- норма".
По другому для них быть не может. Спринголюбы --- как сонибои. Нет смысла с ними разговаривать.
мимокрок
>JAX-RS (который по удобству ничуть не хуже спринговых рест контроллеров)
Не правда. Попал я на первой работе на Apache CXF с этой хуитой. C виду похоже на спринговые аннотации, а на деле там начинка сильно беднее. Адвайсы, валидации, интерсепторы. Чего-то там нет, что-то хуже проработано.
>полную экосистему вокруг бинов --- там и тесты, и скоупы, и прокся и аспекты
А что в этом плохого? В спринге все есть. Зачем от этого отказываться? Чтобы понтоваться и "мыслить абстракциями"? Если нужен еба-перфоманс, в 1% случаев, можно и без спринга написать сервис.
Если жалко 300 метров оперативки на пустую спрингбут приложуху в простое - тогда лучше написать вообще не на жабе, а на го например.
Ебля в кишках спринга сильно преувеличена. Может есть какие-то архитектурные ограничения, где спринг мешает выполнить задачу? Я о таком не слышал.
>А что в этом плохого?
В иной ситуации можно было бы это обсудить, но конкретно щас речь вообще не о критике спринга. Я не спринг щас критикую, а спрингокульт. Уж сколько я их повидал за свой стаж, и какие же культисты ебаные ублюдки, просто слов нет блять.
>Чтобы понтоваться и "мыслить абстракциями"?
Ну правильно, хули. Можно сидеть ровно на жопе, а все что не укладывается в манямирок, называть понтами. Единственная объективаная причина, почему спринг --- мейнстрим, а спринг-лесс --- нет, это отсутствие соразмерным спрингу коммьюнити и школы, и это --- стандартный ход прогресса. Когда то место спринга было занято Java EE, до нее --- коболом. Спрингобои же выставляет спринг как какую то ультимативную хуйню, которой нет и не будет альтернатив. Интересно, когда спринг начнет сдавать свои позиции, будут ли эти уебки выть так же громко как сонибои во время покупки активижена майками?
>>492023
>Рынок требует учить спринг - учишь спринг. Не требует - не учишь. Всё просто
Все так, но как же чмони любят за пивоталов отстаивать рыночные позиции своего кумира --- слов нет.
>все что не укладывается в манямирок, называть понтами
Ну а что же это, если не понты? Ты мне конкретные причины назови, зачем уходить со спринга? Зачем на го переходить - мне +- понятно.
>это отсутствие соразмерным спрингу коммьюнити и школы
Ну а школа и большое комьюнити беспричинно отсутствуют у альтернатив спрингу?
Да и комьюнити вещь ультимативная. Например тимлид дал мне писать сервис на не очень популярной носкл базе, хоть и не плохой в принципе. Ну я посопротвлялся, потратил кучу времени, приноровился. Но потом туда подключили еще двух людей и они уже не готовы разбираться без гайдов и ответов на стековерфлоу. Скорее всего несмотря на преимущества будем на постгрес переписывать.
>и они уже не готовы разбираться без гайдов и ответов на стековерфлоу
Ну вот и хуево, что не готовы. Может та носкульная база лучше постгреса подходила под вашу модель данных, но из-за квадратно-гнездоголовых, которых кроме баззвордов в резюме ничего не волнует, конторе приходится теперь идти на компромиссы и тратить человекочасы на миграцию. Из-за этого альтернативные школы и коммьюнити и не развиваются.
>Ты мне конкретные причины назови, зачем уходить со спринга?
Чел, я даже не называл --- в какую сторону уходить от спринга, а ты меня уже просишь за причины пояснить. Ну честно, если я начну, то это отдельный тред нахуй надо заводить, а мне влом. Мне то что, хошь сиди на спринге, я не ставлю целью убедить тебя в том что тебе нужно с него слезать. Я просто хейчу спрингобоев.
Да ты заебал. Не такой уж я спрингобой. Я и сам могу спринг покритиковать, но мне еще более лень. Но ты ведь уже начал.
Ну вот ты начал про спрингобоев. Как я понимаю, что проблема в них, что онитянут спринг туда, куда не нужно. В каких случаях ты бы от спринга отказался и в пользу чего?
>что проблема в них, что онитянут спринг туда, куда не нужно
Не совсем. Они не спринг тянут туда, куда не нужно. Они тянут джавистов в спринг, вне зависимости от того, нужен он им, или нет. Для спрингобоя не существует джавы без спринга, а если такой проект им попадается, они неспособны адаптироваться в нем, и начинают хейтить. При этом их кругозор обычно --- как у рыбки в аквариуме, когда им говоришь долой спринг, у них это стабильно вызывает ассоциацию, что мол если не спринг, то это будет стопудово самописный сервер на сокетах и с мордой на свинге, или глассфиш с вебсферой древние какие нить, в то время как экосистема просто огромна и альтернатив --- море, в зависимости от нужд и потребностей. Просто собери свой стек.
Лично мне, к примеру, очень сильно в свое время импонировала философия OSGi. Его идея на мой взгляд охуенна --- он позволяет гораздо более гранулярно разделять апихи модулей приложения, за счет чего они получаются в разы более раздекапленными. Раздекапленными настолько, что при прямых руках на OSGi можно делать приложухи с динамически подгружаемыми плагинами с минимальными ограничениями и трудозатратами. По образу и подобию осги запилили в девятке JPMS --- он по возможностям конечно не такой развесистый, но тоже неплохой, плюс позволил делать компактные сборки JVM+приложуха, где есть только те модули, которые реально в приложухе есть. Охуенно же?
И что? Много людей юзает модули в джаве? Да нифига, всем похуй, потому что прошла еще туева хуча времени прежде чем в спринге появилась их поддержка. Равно как и под осгёй спринга все это время по нормальному никогда не было. Вещи вроде осги довольно чувствительны к рефлексии в коде, коей в спринге дохуя. У спрингобоев же осги хуйня, а спринг заебись. И ни одна сука не попытается разобраться, почему так получилось, для них сам факт того что под караф нет фичи со спрингом уже значимый критерий. В итоге идея модулей так и не получила популяризации.
Или например AOT. Достаточно быстро с релизом грааля и jep_295 появились фреймворки, ориентированные на аот изначально. И это охуенно --- вот те выбор: хошь экзешник генерить, получить молниеносный старт своей приложухи --- бери кваркус, не хошь --- для тебя остается спринг.
Здорово же? Вам дали выбор. Так нет, эти омежки сидят и ждут поддержки в спринге (которая тоже хуй знат когда и в каком обьеме еще добавится, ибо AOT тоже довольно чувствительный к рефлексии). Даже новые проекты не пробуют стартовать, ссут сделать шаг в сторону. Своего ума и воли у них тупо нет, они привыкли что все из коробки и сделано за них --- отсутсвие для них привычного набора фич и интеграций уже дилбрекер. Ебаный планктон, зато столько гонору в сети от них обычно.
>что проблема в них, что онитянут спринг туда, куда не нужно
Не совсем. Они не спринг тянут туда, куда не нужно. Они тянут джавистов в спринг, вне зависимости от того, нужен он им, или нет. Для спрингобоя не существует джавы без спринга, а если такой проект им попадается, они неспособны адаптироваться в нем, и начинают хейтить. При этом их кругозор обычно --- как у рыбки в аквариуме, когда им говоришь долой спринг, у них это стабильно вызывает ассоциацию, что мол если не спринг, то это будет стопудово самописный сервер на сокетах и с мордой на свинге, или глассфиш с вебсферой древние какие нить, в то время как экосистема просто огромна и альтернатив --- море, в зависимости от нужд и потребностей. Просто собери свой стек.
Лично мне, к примеру, очень сильно в свое время импонировала философия OSGi. Его идея на мой взгляд охуенна --- он позволяет гораздо более гранулярно разделять апихи модулей приложения, за счет чего они получаются в разы более раздекапленными. Раздекапленными настолько, что при прямых руках на OSGi можно делать приложухи с динамически подгружаемыми плагинами с минимальными ограничениями и трудозатратами. По образу и подобию осги запилили в девятке JPMS --- он по возможностям конечно не такой развесистый, но тоже неплохой, плюс позволил делать компактные сборки JVM+приложуха, где есть только те модули, которые реально в приложухе есть. Охуенно же?
И что? Много людей юзает модули в джаве? Да нифига, всем похуй, потому что прошла еще туева хуча времени прежде чем в спринге появилась их поддержка. Равно как и под осгёй спринга все это время по нормальному никогда не было. Вещи вроде осги довольно чувствительны к рефлексии в коде, коей в спринге дохуя. У спрингобоев же осги хуйня, а спринг заебись. И ни одна сука не попытается разобраться, почему так получилось, для них сам факт того что под караф нет фичи со спрингом уже значимый критерий. В итоге идея модулей так и не получила популяризации.
Или например AOT. Достаточно быстро с релизом грааля и jep_295 появились фреймворки, ориентированные на аот изначально. И это охуенно --- вот те выбор: хошь экзешник генерить, получить молниеносный старт своей приложухи --- бери кваркус, не хошь --- для тебя остается спринг.
Здорово же? Вам дали выбор. Так нет, эти омежки сидят и ждут поддержки в спринге (которая тоже хуй знат когда и в каком обьеме еще добавится, ибо AOT тоже довольно чувствительный к рефлексии). Даже новые проекты не пробуют стартовать, ссут сделать шаг в сторону. Своего ума и воли у них тупо нет, они привыкли что все из коробки и сделано за них --- отсутсвие для них привычного набора фич и интеграций уже дилбрекер. Ебаный планктон, зато столько гонору в сети от них обычно.
>И что? Много людей юзает модули в джаве?
Я когда вкатывался, чуть больше года назад потратил дня два на изучение джава-модулей. Мне тогда было вообще не ясно зачем они нужны, просто прикольно звучит - откромсать лишнее. Спросил в этом треде, все единогласно сказали, что нахуй не надо. Я и сейчас слабо представляю зачем. Сэкономить по 20-30 метров оперативы и по 50 диска с каждого инстанса своего сервиса?
А стандартную библиотеку и жвм тебя не спросили как тестировать?
Здесь профит не столько в мегабайтах, сколько в менеджменте зависимостей. JPMS и OSGi позволяют менеджить их более гранулярно. В отличие от голых джарников, у которых все пэкеджы торчат наружу и любой потребитель на них может скаплиться, смешав весь код в лапшу. Плюс, разработка JPMS шла параллельно с разговорами об AOT, а в AOT количество и гранулярность зависимостей решает многое. Ну и до кучи --- модульность при прямых руках является неплохим решением на фундаментальном уровне проблемы classpath hell.
Ну а мнение "JPMS этот ваш нам нахуй не нужон" порождено тем фактом, что модульный дизайн предъявляет свои требования к коду --- нужна джава не ниже девятки, желательно использовать модульные зависимости, плюс некоторые штуки могут вообще работать криво - в частности рефлексия и всякие classpath scanning, которые так любят делать фреймворки. Под модульность нужно переучиваться и это непросто, туториалов там мало, готовых решений немного, а фанбои учиться и исследовать не любят. Может все было бы иначе, сложись по нормальному вокруг этого всего коммьюнити, но фанбои же квадратногнездовые в терминальной стадии, они не только сами нос воротят, но еще и любопытствующих отваживают. Молчали б тряпочку хотя бы, если сами нихуя не хотят.
тоже когда-то спрашивал ИТТ про модули, и мне сказали нахуй ни нужны, ну я и не стал погружаться. Можешь в трех словах пояснить зачем это вообще, какие идеи реализует?
Так выше пояснил по вершкам уже. Мало?
>классах, реализующих какой-то бизнес
Если речь о спринговых сервисах, то я бы не стал. Сервисы лучше держать стейтлесс, StringBuilder --- это стейт.
>в него складывать всякую дебажно/логировочную хуйню о процессе работы
Настрой по нормальному логгирование (slf4j + logback), и будет тебе счастье. Логи без всякого стринг билдера можно настроить и в гуй и в файл и в ELK.
Нет, это самописный с нуля сервис по кое-каким вычислениям.
За счет этого решения, я хочу отвязаться от связанности точки рождения какого-то месседжа, с каким-то рабочим кодом, который это будет этот класс инстанциировать и юзать его дебаг.
Например, пока я просто пишу мне удобно выводить в консоль через sout, но как только это уплывает на гуй, никакой консоли уже нет, и мне пришлось бы уже делать прямо внутри бизнес-класса JOptionPane.showMessage. Такой подход вызывает у меня рвотные позывы. Мне кажется что заложив в интерфейс какой-нибудь getStringBuilder можно на клиентском конце его получать и использовать уже там как душе угодно.
>slf4j + logback
пользовался таким, но насколько понимаю, там тоже получается как бы связь бизнес-класса со статик-объектом логгера, который работает где-то там в клиентской стороне. Нет?
>пока я просто пишу мне удобно выводить в консоль через sout, но как только это уплывает на гуй, никакой консоли уже нет, и мне пришлось бы уже делать прямо внутри бизнес-класса JOptionPane.showMessage.
И? Логгеры --- отлично подходят под твою нужду, кмк. Для девелопмента заводишь одни настройки, для прода --- другие, и вперед.
>получается как бы связь бизнес-класса со статик-объектом логгера, который работает где-то там в клиентской стороне
Хз, не вижу в этом ничего зазорного, хотя допускаю что не до конца понял проблему. Мож поподроднее опишешь?
Ну вот у меня есть единый проект, где есть "клиентская сторона" (хз как это должно называться, я под этим имею ввиду то, что добывает от юзера ввод, дергает бизнес-сторону, и выводит клиенту вывод) и "бизнес-сторона", которая по клиентскому вводу что-то считает. На клиентской стороне создается статик-логгер, который видно во всем проекте, да, я могу его юзать легко и просто на бизнес-стороне. Но что делать если я захочу полностью отделить бизнес-сторону и юзать ее где-то еще? Я не смогу уже никак разорвать связь с клиентской частью же.
А что если я хочу вообще создать целиком утилитный проект, который вообще не имеет "клиентской части", и просто компилится в библиотеку и втыкается потом по надобности? Я же не смогу никак в нем логироваться.
Пока писал всю эту хуйню подумал, что наверное можно тупо вставить переменную логгера в любой класс, и в конструкторе передавать туда объект-логгер, который поднимается на клиентском коде. Тогда все это будет работать. Но опять же, это концептуально ничем не будет отличаться от того что я там выдумал со стринг-билдером, просто подтащит целую библиотеку логирования в проект, который по сути не такой пиздец-развитый, чтоб так морочиться, имхо.
>Пока писал всю эту хуйню подумал, что наверное можно тупо вставить переменную логгера в любой класс, и в конструкторе передавать туда объект-логгер, который поднимается на клиентском коде.
Как вариант. Но есть вариант еще лучше. Тебе на самом деле не нужно ничего с клиента передавать. Просто делаешь так:
1. Разносишь клиент и бизнес логику по джаркам (скорее всего ты уже это сделал)
2. В джарке бизнес логики из зависимостей оставляешь только slf4j-api (ну и может быть slf4j simple в скоупе test, для тестов)
3. Без зазрения совести в бизнес модуле юзаешь логгеры как будто нет никаких гуев и клиентской части
4. В модуле, где у тебя void main (скорее всего это клиентский модуль), кладешь в зависимости logback, в ресурсы кладешь настроенный для прода logback config. Все.
>Но что делать если я захочу полностью отделить бизнес-сторону и юзать ее где-то еще? Я не смогу уже никак разорвать связь с клиентской частью же.
По схеме выше, как увидишь, зависимости между бизнесом и клиентом нет никакой. Бизнес зависит только на slf4j-api. Можешь его даже как либу распространять --- потребитель этой либы сам настроит логгинг как ему надо будет.
> это концептуально ничем не будет отличаться от того что я там выдумал со стринг-билдером
Ключевое отличие в том, что стринг билдер --- это открытый кусок стейта в памяти. Если ты вкорячиваешь кусок стейта, то весь геморрой по его сопровождению ложится на тебя. Первое что приходит на ум --- стринг билдер не резиновый. Сколько ты туда положишь до тех пор пока с аутофмемори не упадешь? Тебе придется решить проблему с ретеншеном. Вторая проблема --- метод getStringBuilder который ты выше упомянул. Им ты шаришь стейт и на чтение и на запись и клиенту и бизнес логике. В то время как тебе по логике нужно чтобы серверная сторона в лог писала, а клиентская логгер один раз сконфигурировала и больше не трогала. Алсо, если в бизнес логике у тебя есть многопоточка, могут возникнуть аномалии с конкуррентной записью трейсов.
Короче идея звучит как гемор, который того не стоит, хотя тебе решать.
>Пока писал всю эту хуйню подумал, что наверное можно тупо вставить переменную логгера в любой класс, и в конструкторе передавать туда объект-логгер, который поднимается на клиентском коде.
Как вариант. Но есть вариант еще лучше. Тебе на самом деле не нужно ничего с клиента передавать. Просто делаешь так:
1. Разносишь клиент и бизнес логику по джаркам (скорее всего ты уже это сделал)
2. В джарке бизнес логики из зависимостей оставляешь только slf4j-api (ну и может быть slf4j simple в скоупе test, для тестов)
3. Без зазрения совести в бизнес модуле юзаешь логгеры как будто нет никаких гуев и клиентской части
4. В модуле, где у тебя void main (скорее всего это клиентский модуль), кладешь в зависимости logback, в ресурсы кладешь настроенный для прода logback config. Все.
>Но что делать если я захочу полностью отделить бизнес-сторону и юзать ее где-то еще? Я не смогу уже никак разорвать связь с клиентской частью же.
По схеме выше, как увидишь, зависимости между бизнесом и клиентом нет никакой. Бизнес зависит только на slf4j-api. Можешь его даже как либу распространять --- потребитель этой либы сам настроит логгинг как ему надо будет.
> это концептуально ничем не будет отличаться от того что я там выдумал со стринг-билдером
Ключевое отличие в том, что стринг билдер --- это открытый кусок стейта в памяти. Если ты вкорячиваешь кусок стейта, то весь геморрой по его сопровождению ложится на тебя. Первое что приходит на ум --- стринг билдер не резиновый. Сколько ты туда положишь до тех пор пока с аутофмемори не упадешь? Тебе придется решить проблему с ретеншеном. Вторая проблема --- метод getStringBuilder который ты выше упомянул. Им ты шаришь стейт и на чтение и на запись и клиенту и бизнес логике. В то время как тебе по логике нужно чтобы серверная сторона в лог писала, а клиентская логгер один раз сконфигурировала и больше не трогала. Алсо, если в бизнес логике у тебя есть многопоточка, могут возникнуть аномалии с конкуррентной записью трейсов.
Короче идея звучит как гемор, который того не стоит, хотя тебе решать.
>Как ты себе это представляешь?
В этом посте >>491393 написано
>необязательно
В том конкретном случае обязательно.
В этом варианте >>491393 хорошо получается
>Такое себе. Кмк, с лямбдой заколебешься трекать то, на что она замкнута
Я надеялся что если всё файнал, то компилятор сделает лямбду без лишних ссылок.
>Лямбды вообще --- веселая фича
Я хуярил "лямбды" как только начал на джаве прогать в 2006, ну в виде вложенных классов конеш. Коллеги на меня косо смотрели пидоры. Поэтому съебал от них в ДС а потом из рашки бгг Только сейчас зумеры дозрели.
А ведь в смолтоке лямбды были стопицот лет назад...
>Лямбды вообще --- веселая фича
Да, и чем больше лямбд тем меньше ошибок, для сеья такую закономерность выявил по кр. мере.
Это слишком абстрактная постановка, по формулировке напоминает JMX
Но вообще да, правильно советуют юзать логгеры.
Алсо наверное, если ты не дипзадрот, не погнушаешься найти какую-нибудь библиотеку, удобно показывающую фильтрованный лог на гуе
Благодарю за детальный разбор. Вроде, я в основном даже все понял.
Правда, там я изначально-то преследовал цель не просто и не только логирование, а как бы передачу на место вызова еще чего-то (в данном случае, какого-то текста), помимо основного возвращаемого значения, чтоб потом это можно было вывести например юзеру в месседж-боксе. Я понимаю что это туповато, и в каком-нибудь шарпе я бы просто завел out-аргумент, но вроде это довольно удобно.
>getStringBuilder который ты выше упомянул. Им ты шаришь стейт и на чтение и на запись и клиенту и бизнес логике
Ну, это-то легко лечится. Можно давать не сам билдер, а его содержимое (toString()). Просто я делаю сервисы все сам себе, потому немного наотъебись зачастую подхожу к вопросам безопасности в таких точках - я то сам точно знаю что не собираюсь где-то там на клиента дописать в этот билдер "азазаза мамку разраба ибал"
>Я надеялся что если всё файнал, то компилятор сделает лямбду без лишних ссылок.
С чего бы вдруг? То что ссылка у тебя --- финальная, не гарантирует, что ее значение не поменяется между двумя разными заходами в блок, где она обьявлена. Вот если бы это была финальная статическая константа, тогда да.
> А ведь в смолтоке лямбды были стопицот лет назад
Ну давай щас подушним как диды: "ой а вот в смоллтоке, а еще в лиспе, а уж как в хаскелле было.... ууууууу.... кхе-кхе, а щас молодещ пошла не та, зумеры лямбды не уважают пук-среньк".
Мы еще про джаву говорим или как?
>Да, и чем больше лямбд тем меньше ошибок
Зависит от языка. В джаве лямбды сделаны из говна и палок, хотя фича имеет больше пользы чем вреда, это да.
>Можно давать не сам билдер, а его содержимое (toString())
Забыл вот еще что упомянуть. String builder в твоем сценарии будет иметь тенденцию расти как на дрожжах. Ты туда будешь все аппендить и аппендить, и с каждой минутой toString на нем будет все дороже и дороже. Если на то пошло, тогда уж тебе нужна какая нить очередь стрингов, а не билдер.
>То что ссылка у тебя --- финальная, не гарантирует, что ее значение не поменяется между двумя разными заходами в блок, где она обьявлена.
Я об этом тоже написал в упомянутом посте.
>диды
>зумеры
так я наоборот зумеров одобряю, чо ты пригорел...
Пока был только на двух собесах, первый был недавно и пока молчит
Ну, я же с пониманием к этому планирую относиться. Конкретно то место, которое меня заставило сюда высраться, просто представляет собой метод, который выполняет кое-какой бизнес, который внутри метода может пойти по трем путям, а возвращает во всех случаях int.
Я всего лишь хочу в сопутствующем месседже сообщить "значение получено при реализации ветки 2" или что-то такое, потому что у меня нет другого способа про это сообщить клиентскому коду. Понятное дело, что этот метод может быть вызван на одном объекте ну пусть 50 раз. Но там не такой большой жизненный цикл у объекта, чтоб оно стало проблемой.
Соглашайся бп, но с какой стати соап и ждбс ето легаси? Соап микросервисы щяс в моде. А ждбс это просто данность.
8 жаба, забыл упомянуть. И это только то, что я знаю, мб все намного хуже. Твое сообщение как рофл выглядит конечно, я серьезно спрашиваю, у меня дилемма
Да просто че толку проводить аналогии между лямбдами в императивной джаве и лямбдами в декларативных языках? В декларативных языках лямбды действительно охуенный инструмент. В джаве же лямбды --- просто костыль для того, чтоб стримы ублюдочно не выглядели.
8 лямбды уже есть, жить можно. Дальше там мало что изменилось. var и record погоды не делают. Опыт получишь, узнаешь как делать надо и как не надо. На испытательном сроке удостоверься что не совсем треш-кал проект, чтоб потом не грустить
А смолток декларативный? Вообще он ровно та же джава только без типов, если ты не в курсе.
Ок, не в курсе, каюсь. Гугл мне сказал, что декларативный.
Если объемы конечные то не важно... Если тз позволяет, можо хранить последние N записей, например...
>А разве завести какой-нибудь ArrayList строк под это дело не будет примерно таким же калом?
>Если на то пошло, тогда уж тебе нужна какая нить очередь стрингов, а не билдер.
?
Ну очередь это же тоже коллекция? Она все равно вся висит в памяти, разве что из нее можно убирать по мере переполнения элементы.
Да, я не подумал что очередь может использоваться как бы в качестве буфера, откуда можно вытаскивать данные чтоб ее не перераздувать. Лучше билдера.
А смысл? SLF4j все равно останется транзитивной зависимостью. Вдобавок ты себе еще все функциональные его возможности закроешь. SLF4j API --- достаточно стабильная и легковесная зависимость, чтобы не запариваться об декаплинге от нее.
А в чем проблема погуглить доку каждый раз?
Ну секурити пишется один раз за проект. Может раз 5 допиливается. Зачем ради этого запоминать классы?
Ты же помнишь классы для того что пишется каждый день - рест, взаимодействие с базой, валидация, сериализация, спринговый контекст, тесты?
Жми ctrl-пробел в идее до тех пор, пока она тебе имя класса не подскажет))
Сап двач. Подскажи что покурить по kafka. А то что-то туго идёт.
А что ты уже курил?
А смысл что-то курить, если использовать ты будешь только отправляя в очередь и принимая в лисенере?
Да норм. Летскод еще попробуй после трегулова.
>все функциональные его возможности
И потом по ошибке заюзаешь возможность, которую трудно выпилить при выпиле slf4j, придется рефачить.
Всегда заворачивайте либы в минимизированные интерфейсы.
Бизнес-код не должен видеть ничего, кроме адаптера к вашим зависимостям. Это база блядь
Ты рофлишь блять чтоли? Заворачивать абстракцию в абстракцию?! Сука ты объебанная --- slf4j УЖЕ САМ ПО СЕБЕ И ЕСТЬ обертка вокруг всех мыслимых и немыслимых логгеров, так что свой костыльный ебаный обрубок можешь себе в жопу засунуть вместе со своей выдуманной проблемой. Пошел нахуй. Встреться ты мне на ревью с такой инициативой --- ебало бы набил. База-хуяза...
Мы вам перезвоним через 10 лет.
В классах, посвященных бизнес логике, не должно быть даже импортов с чужими пакетами. Да, даже свинг должен быть завернут, если это касается UI.
Это база чел, если ты не понимаешь, тебе нет места в профессии.
В конкретно одноразовых проектах типа сдал и съебал, конечно можно тащить что ни попадя, но только при условии что ты точно не будешь в них участвовать в будущем.
Предвкушая дальнейшие нахрюки могу привести простой пример, допустим. ты решаешь мигрировать с slf4j, а у тебя 150 МБ исходников от разных вендоров. Как ты им объяснишь? Правильный ответ - ты даешь им в начале проекта свой интерфейс.
Второе, ты меняешь логгер, и комитишь сколько угодно (хотя бы один бизнес класс) , ты должен будешь при этом блядь при ближайшем айти аудите объяснять аудитору что это за хуйня и как на относится к бизнес процессу - это деньги и время, а зачастую обязанность отвечать на дебильные вопросы аудиторов возлагается на тимлида и техдиректора - это прямая ебля их мозга
>В классах, посвященных бизнес логике, не должно быть даже импортов с чужими пакетами.
Попизди мне еще. Думаешь заучил гайды от евангелистов, промыток, и теперь за базу можешь мне пояснять? Ты хоть понимаешь КАКИХ КОНКРЕТНО в бизнес логике не должно быть лишних импортов И ПОЧЕМУ? Или просто как попугай бездумно повторяешь установки, смысл которых не понимаешь?
В бизнес логике не должно быть связей с НЕСТАБИЛЬНЫМИ юнитами, к коим как раз и относятся вещи типа слоя БД или ГУЕВ на свинге. Потому что гуи, БД и прочие интеграции --- это первые вещи, которые меняются под гнетом изменения требований, и каплинг на них в бизнес логике ведет к регрессиям в оной! SLF4J API --- СТАБИЛЬНАЯ АБСТРАКЦИЯ. В его API серьезных несовместимых изменений не было ВЕКАМИ нахуй --- так нахуя ты ее декаплить собрался? Чтоб в бизнес слое кода было побольше, который еще не факт что сфейлит из-за какой нибудь долбоебской хари?!
>>493451
>Ты решаешь мигрировать с slf4j
Назови мне ХОТЬ одну вменяемую причину мне мигрировать с SLF4J?! И куда мигрировать?! Как раз сидя на SLF4j я легко могу мигрировать с log4j хоть на логбэк, хоть на хоть на jul, хоть вообще на System.out::println, выбрав лишь зависимость с имплементацией. В API вообще нет ничего, никакой конкретной логики логгирования, у него даже транзитивных зависимостей нет.
>>493452
>отдел безопасности
С этого и надо было начинать, что ты --- банковский подневольный с сапогом в жопе. А то пиздит тут про базу.
>КАКИХ КОНКРЕТНО в бизнес логике не должно быть лишних импортов И ПОЧЕМУ
Никаких блядь, говно тупое, простите аноны что высераюсь тут на очевидные вещи, но от этого долбоёба реально пригорел
ПОТОМУ ЧТО блядь проект делается по ТЗ, а ТЗ это документ обеспечивающий ПОЛНОЕ (в математическом блядь смысле) описание сценариев и того что можно делать, а что нельзя. Любая лишнаяя возможность, бонусом идущая из стооронних либ, руинит жизнеспособность проекта.
> вменяемую причину мне мигрировать
c 1 версии на 2 например. Был опыт с этим говном, формат конфигов поменялся, страдали.
> банковский подневольный с сапогом в жопе
не важно, есть такое понятие вендор локин. Юзая чужие библиотеки ты делишься своим вендор локином и увеличиваешь количество вендор локина заказчика. Проект теряет жизнеспособность.
Если твое ТЗ и регламенты твоих СБшников предписывают тебе не иметь никаких зависимостей, это не база --- это твой личный сапог в жопе, ни больше ни меньше. Если б ты просто рассказал "а вот у нас ТЗ запрещает вендор локин вообще на что бы то ни было в бизнес-логике", я б просто удивился и посочувствовал, но ты мало того что свой сапог мне продать зачем то пытаешься, так еще, сука, смеешь на местную публику играть как распоследный конченный демагог.
>c 1 версии на 2 например. Был опыт с этим говном, формат конфигов поменялся, страдали.
Заебись. Сколько страдали, в человекочасах, цифру? Как часто у вас такие мажорные миграции SLF4j случались, один раз в жизни? А ты не задумывался, хуеглот, что не у всех проектов сорцов --- на 150 метров?! Про оценки и менеджмент рисков не слышал?!
>не важно, есть такое понятие вендор локин. Юзая чужие библиотеки
Да что ты говоришь? Сторонние библиотеки значит? То есть если JUL является часть стандартной джавы, ты будешь его юзать вместо SLF4J чтоли? Что еще? Спринг тоже вендор лок-ин? Гуава? Апач-коммонз? Может джава локин? А че --- в джава рантайме каждый день какие нить уязвимости находят --- вдруг аудит не пройдете, не боишься?
>>c 1 версии на 2 например. Был опыт с этим говном, формат конфигов поменялся, страдали.
И кстати говоря: ЧЬИХ НАХУЙ КОНФИГОВ БЛЕАТЬ?! Ты вообще в курсе, что SLF4J --- фасад над логгерами, а не конкретный логгер?! Нет у него своих конфигов!
Будет. По умолчанию серверный сокет биндится на 0.0.0.0, и этого достаточно чтобы в теории все что имеет доступ на эту машину, получило доступ к твоему серверу. Настраивать придется разве что всякие файрволлы и роутинги к этой тачке в корпоративной сети, но это уже не твой головняк, а админа.
А ты возьми и проверь на своей машине. Собираешь жарник, запускаешь, а потом пытаешься по внешнему по локальной сети хотя бы — 192.168.х.х или что там у тебя будет. В крайнем случае 127.0.0.1, поднятие порта всё равно проверишь ip обратиться к своему сервису. Если работает, значит ты всё правильно сделал в самом сервисе про всякую безопасность, вынесение конфигурации, логирование, метрики и прочие zero downtime я не говорю — тебе это в данном случае не нужно. Остальное дело за админом и сетевыми доступами.
Если же не будет доступен, то ты где-то нахуевертил в конфиге своего приложения
А если например нужно будет второе приложение такого же типа, то что, просто запускать оба, и они никак не будут конфликтовать? Я насколько понимаю (а понимаю я оче хуево), там в джарнике сервер апач-томкат уже завернут, и что будет если запустить два сразу? Порт же он занимает всегда фиксированный (вроде)
Да, буду пробовать, спасибо. А вот на этот вопрос >>493559 примерно какой ответ? И вообще если все это не требует много времени объяснить, то как вообще разворачивают множественные серверы написанные на спринг-буте на одной машине физической? Вообще если приходит реквест на какой-то маппинг, которого нет у данного приложения, то оно просто его игнорит же?
Сорян за тупость, я вообще нулевый
Конфликтовать они будут если попытаются оба забиндиться на один порт. Делаешь им просто разные порты и все будет нормально.
>Порт же он занимает всегда фиксированный (вроде)
Нет, че это? Порт и бинд адрес вполне себе конфигурируемы. Особенно на спринг буте --- там вообще можно допустим явно в приложухе ничего не конфигурить, а потом просто запуская джарник указать -Dserver.port=номерпорта и все.
>как вообще разворачивают множественные серверы написанные на спринг-буте на одной машине физической?
Уууу, брат.... Это уже --- огромный отдельный богатый дивный мир девопса, с кубернетисами, докерами и еще 100500ю турами и решениями для разных уровней нужд, потребностей и бюджетов, тут в двух словах не расскажешь.
И мне как бэкенд разрабу нужно это знать и уметь? Или это сделает за меня специально обученная девопс макака?
А все же, может же один томкат-сервер запустить сразу два приложения? Я помню кагда-то пробовал еще без спринг-бута, и собирал там .war и вручную его как-то стартовал. Технически же порт один у сервера, как вообще он будет распределять реквесты между приложениями? Или все будет слать всем, но у каждого приложения должны быть свои мэппинги? А что будет если оба приложения имеют пару одинаковых мэппинга? Или я что-то совсем плохо понимаю, и один томкэт может занять сразу много портов и так и делает (для каждого приложения свой)?
Вангую, что это зависит от того где ты работаешь. Если в такой бабкиной шараге, как я, то все будешь делать сам (еще и картриджи в принтерах менять, кек), но и требований с тебя будет меньше (лишь бы хоть как-то пердело, никаких там деплоев прямо в аптайме, отказоустойчивостей етц). Если же контора серьезная - то все это надо, но там и будет бюджет на специального спеца.
анон начавший топик
Ну не вот прям нужно что ппц. Программа-минимум для современного бэкендера --- знать хотя бы докер, кмк. Докер впринципе как инструмент удобная для бэкендера вещь, через него многие проблемы можно элегантно порешать.
>>493591
Да, может. Да, варники: томкат сервер по прежнему полноценный JavaEE web-profile container, как в эпоху дидов, и да, в таком случае технически порт у сервера будет один. Рекевесты между приложениями томкат распределять не станет постольку, поскольку приложение в таком случае будет одно --- сам томкат. Варники --- это всего лишь пучок класс-файлов, лениво подгружаемых к томкату с помощью класслоадерных трюков. Одинаковые меппинги конфликтовать тоже не будут, потому что каждый варнику после деплоя будет присвоен свой уникальный базовый путь, и например, если приложение roga-i-kopыta объявляет рест с маппингом delai-xorosho, снаружи этот рест будет доступен по урлу http://host:port/roga-i-kopытa/delai-xorosho. У другого варника будет другой префикс, вот и все.
Имхо, заморачиваться с варниками в 2022м того не стоит.
Мб на го катиться?
>заморачиваться с варниками в 2022м того не стоит
А альтернатива это собирать отдельные приложения на спринг-бут на своем сервере? Или есть еще какие-то пути?
Так это всего лишь значит что ты еще сильнее абстрагирован от реальной лоу-катки, чем в джаве. Нах тебе эти прямые запросы в базу? Ты тогда понятия иметь не будешь ни о коннекшенах, ни о всяких там резалт-сетах, преперед-стейтментах и прочих интересных вещах.
Ну котлин прижился только разве что в мобилках, скала - хз, а вот го - да, напрягает малой. Он реально так хорош в микросервисах?
Не знаю. Мне похуй. Наверно он хорошо решает определенный скоуп задач? Компилируется нативно --- классно, в джаве к АОТу заколебешься придрачиваться. Порог входа в джаву действительно высокий, но я бы сказал что это проблема не джавы, а джавистов, которые все поголовно --- свидетели спринга, и тупо не котируют JavaSE джунов, которые не причастились.
Но джава по преднему в тройке самых популярных языков, на джаве написана огромная экосистема, у джавы по прежнему одно из самых крупнейших коммьюнити, так что никуда она пока не умрет.
А кобол разве не был ссано-тряпочным динозавром еще за долго до рождения джавы? Я понимаю что на нем до сих пор пилят, просто он же такой убогий что это было очевидно, небось, еще в 70х. Я так понимаю картинка чисто про банковский сектор
>это было очевидно, небось, еще в 70х.
Не, не думаю что тогда это было очевидно. Тогда был самый разгар software crysis и всем было не до этого, кмк.
В данном конкретном случае там еще вешается предупреждение про raw-юз дженерика, но не суть
Ты вон сигнатуру метода заблюрил, но сквозь блюр все равно видно что из метода возвращается не просто Map, а конкретно параметризованный Map. Тем не менее возвращаешь ты пепяку, прикасченную к ирейженному мапу. Идея тебя какбе предупреждает --- "слышь, чел, тут как бы нато то вернуть конкретную мапу, а по факту ты здесь пытаешься вернуть мапу с непойми чем. Я не могу проверить дженерики при таком ретурне, чекни сам плиз?"
Скоее всего если ты прикастишь ретурн к параметризованной мапе как в ретурне, ворнинг пропадет.
Да ёп, я ж говорю что "сырое" использование дженерика - это отдельное предупреждение. Я убрал из каста параметры просто потому что они ничего не меняют - даже если они совпадают в точности с сигнатурой возврата, все равно он говорит что uncheck assignment. И если я и в сигнатуру и в каст поставлю, например, Integer, то он уберет все подсветки, типа нормально.
Ну значит надо весь код смотерть. Как пример, чекни https://stackoverflow.com/questions/28808053/unchecked-assignment-warning. У чела там дженерик потерялся в сигнатуре, а ворнинг он огреб на ассайнменте.
Хз какое значение имеет весь код. Весь значимый код там - тип возврата из метода, и каст полученного object к нему. Даже я понимаю что это вообще не важно. Думаю тут что-то происходит из-за type-erasure, потому именно дженеризированные типы светятся.
Ладно, хуй с ним, жрать оно не просит, просто хотелось бы понять
Даже тип возврата не важен, можно это в локальную переменную, которая вообще никак в коде не завязана, поместить, и все равно будет то же самое
>Думаю тут что-то происходит из-за type-erasure, потому именно дженеризированные типы светятся.
Так и я о том же. В примере что я тебе скинул, упущенный дженерик в сигнатуре привел к ворнингу в ассайнменте. Может у тебя тоже где нить такой упущенный дженерик есть? Может сама мапа у тебя конкретно параметризованна, но дженерик-параметры мапы не параметризованны, но предполагают параметризацию?
Фиг знат кароч.
>А вот сам объект передать не получается через выпадаюий список
Выпадающий список в гробу видел твои обьекты. У него есть строго определенный набор аттрибутов: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select, и если ты хочешь использовать список для выбора чего то, изволь сначала дать ему список чисел или строк.
Алсо Freemarker --- не JSP и не JSF: он тебе всего лишь страничку по шаблону генерит, а не обьекты обслуживает. Не жди от него так много.
* Дисклеймер: вышеупомянутые JSP и JSF --- НЕ рекоммендация. И не дай вам боже их заюзать --- вы будете прокляты, а ваш труп выебут в глазницу.
мимо вкатыш
>Фиг знат кароч
Так с этого и надо было начинать блеать.
Я же сразу же сказал что проблемы с дженериками варнятся отдельным типом мессежда - "Raw use что-то там". И там он висит вторым, я просто убрал тип-параметр потому что он длинный, а в данном случае все равно уже висит варнинг.
И я же вон дал еще один скриншот, где все суперлокально, никакого влияния внешнего кода нет, дженерики типизированы, но разница налицо.
Ладно хорош засирать ветку, может кто ответит еще
Александр, вы трепло
Распиздеть сейчас или вообще? И кому я распиздел, вам на дваче или челам с галерки? Если первое, то вроде ниче такого не светанул. А если второе, то че вы от меня хотите, я же ебучий вкатусик, и это первые собесы мои были, ну обосрался, что поделать, сделал выводы. Хотел, чтобы ценник выглядел обоснованнее. Нет опыта нихуя в таких делах, боюсь продешевить и одновременно боюсь называть слишком много, чтобы не показаться чсв или как-то спугнуть лишний вариант.
Как вкатывался? Че знаешь? Было ли тестовое? Че в резюме писал? На хх ру искал собесы?
Заворачиваешь приложухи в докер-контейнеры, каждому даешь отдельный порт. У нас так на одной машине работает дев стенд с 20 спринг-бут сервисами в докерах.
> Хочется через год, мб чуть позже найти работу.
Найдёшь, если достаточно усидчивый.
> Какова сейчас ситуация на рынке вакансий в рф, в ДС в частности?
Рынок с февраля просел, вакансий стало меньше, но на джаве их всё ещё дохуя, и исчезнут они очень не скоро, энтерпрайз - одна из самых стабильных сфер, потому что всегда будут крупные корпорации, которым нужна толпа разрабов. Да и текущая ситуация через какое-то время закончится.
> преувеличена ли роль матеши в программировании?
Да, очень сильно преувеличена, давно прошли времена, когда программирование юзалось в основном учёными и инженерами. Сейчас им кто только не занимается, и от математики нужно будет только сложение и умножение. Конечно, если ты не будешь заниматься чем-то наукоёмким, хотя такое обычно не на джаве делают.
>
Все правильно ты понял. Это такой аналог Apache Camel, и ни то, ни другое адекватные люди в настоящее время не используют (хотя всегда есть шанс нарваться на неадекватных). Вообще не надо думать, что любая хуйня полезна и нужна только из-за слова spring в названии.
Лул, сейчас искал вопросы о юзефул показателе интегрейшена, на реддите в теме наткнулся на несколько комментариев о том, что со спринг интегрейшн код превращается в "unreadable spaghetti shitshow", тогда нахуя это говно вообще создавалось?
Т.е. можно смело скипать интеграцию? А про Spring Batch что скажешь?
Скипай. И batch примерно то же самое - нагородили концепций и абстракций на ровном месте, а какую проблему оно должно решать, если то же самое можно проще и понятнее записать в лоб обычным кодом - неясно совершенно
> Как вкатывался
Прост два года делал петы на жабе и изучал доки
> Че знаешь
Да много всего, то, что есть на гитхабе, мб кроме кубернетиса
> Было ли тестовое
Пока не давали
>Че в резюме писал
Хард/софт скиллы и немного о себе
> На хх ру искал
А где еще? Не на авито же
> Integration
Сам по себе не нужен
>>495070
> Batch
А вот он в ряде случаев бывает полезен, и кмк только вкупе с ним и стоит использовать интегрейшн банально из-за относительно удобной интеграции. При этом если у тебя на проекте в конкретном сервисе 1-2 интеграции, то смысла и в батче нет. А вот когда у тебя появляется ебаная гора периодических жоб, которые должны что-то откуда-то выкачивать, и эти данные больших объемов, то батч очень даже спасает. Как минимум тем, что сам за тебя дробит файлы на сраных sftp соседних древних команд, общающихся друг с другом десятко-мегабайтными зипнутыми csv'шками, и повторяет те участки, которые не прошли.
Если же у тебя небольшого размера файлы либо банально мало интеграций, и из-за твоих велосипедирований кодовая база не превратится в ад, на батч тоже можно забить, как и сказал анон выше.
Покажи примеры петов или расскажи. Там просто круды на спринге или че-то необычное есть? Что говорил в опыте работы на собесе?
Уверенный тренд на затухание.
>Если первое, то вроде ниче такого не светанул.
Вообще. Судя по тому, как ты увлечённо и самозабвенно рассказываешь всё подряд, ты пиздабол 80 уровня.
Все адекваты ушли в го/дотнет, остались вкатуны курсовые с хайптрейна цифровыхпрофессий.ру
Да обычные выбросы, в одни дни идут активные срачи, в другие - два-три поста. Если наложить линейную фильтрацию за пять дней, график становится более гладким.
Вот и приходи сюда в 2048 году.
Джависты - это русские мужики, патриоты. Это не пидарки на смузистеках и смузи языках типа го/шарпа/раста. Они поняли, что родина в опасности и пошли записываться в вагнер, а осенью уже на мобилизацию
Возможно. О причинах судить не стану, моё дело строить графики в экселе.
Го это вообще самый мужицкий язык, местные неженки со своими лямбдами и стримами бы на голанге плакали
Забей, петушарпер просто своими 2 извилинами не может понять, что бывают петушарские языки без кучи бесполезных сахарков (которые он отождествил с полезными фичами типа лямбд и стримов)
Уууух блять... хуже и страшнее спрингокульта может быть только вооруженный спрингокульт...
Я по фану, наблюдаю за его потугами. Каждый раз он приходит сюда посрать, но забывает снять штаны.
В микросервисной архитектуре нгинкс иногда используют в качестве сервис-гейтвея, который выступает в качестве прокси к микросервисам и единого фасада для фронтенда и прочих потребителей API.
Это называется reverse proxy. Много причин: nginx эффективнее раздаёт статику, не надо настраивать HTTPS на уровне приложения, можно настроить балансировку нагрузки, можно маршрутизировать запросы разным приложениям и т.д.
SOA предполагает наличие больших сервисов (которые нихуя не микросервисы), взаимодействие между ними идёт через централизованную шину (ESB), а в пересылаемых сообщениях сплошной XML, который валидируется этой самой ESB с вырезанием всех несогласованных с безопасниками полей, затем идёт пересылка сообщений получателям, причём у разных получателей может быть свой формат, и ESB трансформирует XML по разным схемам. Что, похоже на микросервисы?
Здорово, надо писать ещё одно приложение, собирать и управлять его жизненным циклом вместо того, чтобы поправить один ебаный конфиг Nginx.
>>Хотел, чтобы ценник выглядел обоснованнее.
Не надо просто имен называть. Скажи предложили больше. Кто конкретно - вас ебать не должно. Контрите или идите нахуй.
Иначе будет как раз то что ты описал - перезвоны с разборками, анонимки с прошлой работы какой ты хуй и хз что еще. По итогу 3-4 оффера превратятся в 0.
Просто проще запилить очередной new ThreadBuilder().startTask(new TaskFacadeBuilder).asSingletone(), чем добавить два ключевых слова, иначе корпоративные крысы разрыдаются что всё сломали и вообще очень плохо
Почитай, как устроен под капотом асинк/эвейт https://devblogs.microsoft.com/premier-developer/dissecting-the-async-methods-in-c/
Стоит ли приукрашенный CompletableFuture того, чтобы раскрасить все функции в языке на асинк/не асинк(function colouring)? Погляди, насколько всрато выглядит код шарпа, хочешь такое дерьмо в ламповую джаву? Loom - это самый лучший вариант из всех возможных. Разработчики джавы снова сделали, как надо, а не пошли на поводу у смузипидоров
ты ебанат, ты ровно с теми же суммами и датами две недели назад тут высирался. съеби отсюда нахуй уже.
Ну и спринг кор(веб разделе с кором в доке), бут и пару раз разные спрингдаты использовал.
Расскажите про свой опыт, плез.
На таких, как ты, он и наживается. У него уже полгода этот кот сдохнуть не может, и операция всё завтра да завтра. Нет у него никакого кота, он просто не хочет идти работать.
Хули ты меня лечишь? Я на тот твой двухнедельный (окей, может и не две, но точно не меньше одной) даже ответил, что кинул бы тебе денег если б был уверен что это все не пиздобольство. Хорошо что не кинул, ибо диванон по карте оказалось пиздобольство. Съебывай.
Дебс, это развод, я этого кота, вон пост выше, уже тут видел дохуя назад, и тогда тоже все было срочно и "на завтра". И еще в других разделах он голову ебет с этим.
А зачем нужен спринг гейтвей, когда есть netflix zuul?
Че такой душнила? Гейтвей на чем только не пишут: топик стартер спросил про нгинкс, я ответил про нгинкс.
>Они не боятся, что им ебальник за такой базар гнилой разъебашут?
Пф, первый раз чтоли? Покажи хоть одного анальника в истории, огребшего по ебалу за выебоны и называние вещей другими именами.
Вот вам и объяснение, почему смузидегенераты так бесятся с отсутствия асинка в жабе. Они просто очень тупые. Надо же блядь придумать для каждой таски делать
> new ThreadBuilder().startTask(new TaskFacadeBuilder).asSingletone()
пиздец!
Это ж не смузидегенераты придумали, это жабовские номенклатурные бюрократы же лепят на каждый чих такой вызов, не?
Смузидегенераты не могут в программирование, и не могут представить, что можно то же самое сделать по другому, более коротко и чисто благодаря ООП. У них мозг не способен осилить более чем шлёпанье шаблонного императивного кода.
Ну когда в языке два с половиной ключевых слова и полторы возможности, только и остаётся молиться на ООП, фабрики, фасады…
Возможности твоего петушарпа упрощают написание говнокода, легализуя его. А ты, ручная обезьянка майков, и рад этому, ведь то, за что тебя ругали раньше теперь легализовано.
Звучит как кукареканье гоферов о ненужности дженериков, которое почему-то затихло сразу после их добавления.
Да, поскорее бы в жабу завезли async/await, но назвать их надо иначе, а то перестанут компилироваться все костыли, которые джависты написали за время отсутствия этих кейвордов.
Интересные дела, говнокод в шарпе, а фабрики для вывода строки в консоль пишут на джаве
В начале будут простые задачи, там и уметь ничего не надо. В дальнейшем будут более сложные задачи, типа запилить отчёт, разработать новый режим, дополнить интеграцию со сменой системой новыми типами сообщений.
Типичная джунская таска - добавить новое поле в какую-нибудь форму. Ты добавляешь его в ДТО, в сущность, прописываешь его в конвертерах, дополняешь проверки, пишешь скрипт для добавления нового поля в таблицу, отводишь ветку, делаешь коммит, пушишь, делаешь пуллреквест, ждёшь, когда он пройдёт ревью и будет влит в основную ветку. Параллельно заводишь задачу на клиент с техническим описанием, как, например, поле называется в ДТО. Задачу назначаешь на разработчиков клиента и ждёшь, когда они её сделают и вольют в свой проект. После этого переводишь свою задачу на тестировщиков. Всё.
Либо другая задача: разобраться, почему при возникновении эксепшена и откате транзакции ничего не занимается в журнал действий. Раскидываешь по коду брейкпоинты и сидишь, дебажишь.
https://habr.com/ru/post/685518/
Кишки это как раз для дегенеративных смузихлёбов с паттернализованным мышлением.
Предлагаешь через sout выводить всё? А как же удобная манипуляция уровнями вывода и кастомные фичи? Предлагаешь для этого сделать ИЩО_ОДИН_СИНТАКСИЧЕСКИЙ_САХАР? Представил и проиграл, как шарподегенераты вместо logger.log("Anus"); пишут log Anus with custom logger MyCustomLogger.class и гордятся этим
Button button;
Adapter adapter;
AdaptiveButton adaptiveButton = new AdaptiveButton(
....new YourYobaButton(){}
);
this.button = adaptiveButton;
this.adapter = adaptiveButton;
// когда юзер тыкает
this.adapter.ignore(true);
// когда нужно, чтобы кнопки снова работали
this.adapter.ignore(false);
Конечно же, AdaptiveButton и интерфейс Adapter реализуешь сам. Под капотом простой boolean atHibernation и условная делегация нормальной джавовской кнопке.
мимо со swing не работал ни разу
Блядь, пока писал забыл главный прикол. Короче, Adapter надо сделать один для всех кнопок сразу и сувать его в AdaptiveButton. Как юзер тыкает - адаптеру говоришь игнорить и все кнопки сразу блокируются, потому что ссылаются на один адаптер. Обратно также.
Нихуя не понятно, но очень интересно)
>>497018
Хуй знает насчет адаптеров, может это и заебись, но там уже напихано везде дефолтных кнопок.
В итоге сделал тупо метод
switchActivity(boolean isEnabled){
button1.setEnabled(isEnabled);
button2.setEnabled(isEnabled);
...
textField1.setEnabled(isEnabled);
...
}
и когда надо погасить интерфейс тупо дергаю его, в итоге вся форма гаснет. Единственное что это не блокирует это управляющие кнопки окна.
Правда, почему-то этот метод не срабатывает, если я его вызываю внутри WindowListener на событии windowClosing, видимо, после вызова этого ивента форма уже сама по себе переходит в неактивное состояние, и ее элементы больше не тюнятся.
Как же заебал этот свинг, кто бы знал
Тебе нужны самые банальные навыки типа создания новой ветки, коммита, пуша и мержа+ребейза. Если это всё знаешь и умеешь, то посмотри, что такое мерж/пулл-реквесты, как сказал >>497278, и для чего они нужны. Потом посмотри, какие бывают флоу, как сказал >>497398, чем отличается гитфлоу от других, да и вообще на кой черт они нужны. И да, примерных знаний хватит, так что дольше часа на всё это тратить особо смысла нет — нужна лишь база. А нормально мержить ты всё равно самостоятельно не научишься
Всё. Больше тебе на первой работе ничего не нужно. Почему? Потому что в каждой команде уже и так сформированы свои флоу, свои названия веток, свои правила вливания, хуки и так далее. Так что приходишь, спрашиваешь у смотрящего лида, как у них там всё происходит, читаешь их страничку в конфлюенсе если описания нет, то 90% ты ошибся компанией/командой, а потом делаешь как сказано. Вжух, ты великолепен
Че по определению. Я не хочу каждый полгода-год проходить собесы, сука, я хочу комфорта и спокойствия. Как фиксить?
Аутсорс это по определению именно такая параша. У тебя два варианта:
1. Съебать на долгоиграющий проект. Обычно это банки-хуянки, где одну и ту же систему поддерживают годами, в отличие от госки, где план развития на несколько лет, а вот бюджетики а вместе с ними и тендеры, и команды, и функционал, и небо, и даже конституция пересматриваются раз в год. Однако в банках аутсорсеров, кто не тянет, могут с проектика взять и выпиздить, так что либо страдай, либо соответствуй
2. Съебать с аутсорса
А тут ты не можешь съебать, потому что мало опыта. Так что набирайся опыта и не выёбывайся до тех пор. Либо фоново ходи по собесам, вдруг куда и возьмут
А ваще когда уже зачетка будет на меня работать? Иными словами, сколько лет опыта нужно нафармить, чтобы hr-ки мне сами в постель прыгали, лишь бы я им ответил. Потому что сейчас я только вопрошающий червь пидор, мечтающий о перевороте игры
Чтобы прямо так, как ты описал, 3++. Будет сильно зависеть от компаний и самого резюме. Если ты 3 года работал в рашнбихтех лол и за это время дослужился до сеньора — это одно. Если ты 7 лет пинал хуи и до сих пор средний задний-конец программист в ИП Йохнаджон У.Х., то писать явно будут, им же за это платят, но знаешь... Как-то без желания. Не по любви, так сказать
А чтобы просто выёбываться на стажерок эйчарш тебе и пары лет хватит
>в отличие от госки, где план развития на несколько лет, а вот бюджетики пересматриваются раз в год
Если компания не говно(но среди аутсорсеров на госов ну очень много говна и даже откровенные мошенники), то тендер у вас не отнимут. Да и проект в новом финансовом году зарежут с меньшей вероятностью, чем в банке. Даже мертворожденные проекты в госухе тянут до последнего.
Главный минус - представители заказчика очень часто неадекватные. Причем даже не их требования к функционалу, а сами они. Там очень часто на приемке сидит клуша - глава отдела в какой-нибудь госхуйне и вообще ничего не соображает. То забивает хуй и сдвигает сроки, то требует прям завтра, а послезавтра опять не нужно. То месяцами ноль фитбека, то переделайте все, а как я не знаю.
В нынешнем месте мне повезло, у нас менеджеришка охуенный и умеет лавировать и отбиваться. А вот на прошлой был пиздец и любая шиза клуши из госухи кончалась паникой и кранчами.
Хотя наверно надо валить из гос подрядов, как проект закончится - потом как клеймо будет.
>в неплохую вроде компанию
>буду вообще вторым разрабом
Это взаимоисключающие параграфы. На жаба-проект даже на поддержку обычно нужно от трех джавистов. Если там долгое время ковырялся один человек, то скорее всего там большие проблемы и с проектом и процессами.
А какие могут быть проблемы? Там есть, помимо разраба, тестировщик аналитик и овнер. Мне, когда я впервые узнал про немногочисленную команду, наоборот немного отлегло, подумал мб можно будет расслабиться и заняться именно прокачиванием скиллов, а не всякой однотипной хуетенью. Так че получается, сливать их всё-таки?
Пишут что HTTP редирект должен содержать только ASCII символы. Попробуй URL encode и делать не относительный а абсолютный редирект.
Может быть полное отсутствие менторинга. Никто не подскажет куда писать код. Один разраб может быть занят, не захочет тебе помогать, уволится или заболеет.
И ты если и справишься будешь писать велосипеды или говнокод.
Или этот один разраб может быть долбоебом и ничему тебя не научит или научит плохому. А так как он один там высиживает, то он долбоеб с высокой вероятностью.
Блин, ну ладно, тогда, наверное, откажу, хотя пока других вариантов особо нет, думал мб все же попробовать энивей, несмотря на то, что ты написал, а потом сьебать в случае чего, но тут вырисовывается как раз та проблема, о которой писал выше, слетит отсрочка и если придет повестка, то все, пизда. R.I.P
Так если других вариантов нету, то может и не появиться. Просто имей ввиду. А соглашаться или нет - ты сам думай.
Да не, я всего на двух собесах был, больше пока не планировал, с каждого получил предв оффер, только один в итоге слился судя по всему, не договорились по условиям и в итоге сейчас этот остался.
>Это взаимоисключающие параграфы. На жаба-проект даже на поддержку обычно нужно от трех джавистов.
Шта? С чего бы вдруг качество проекта будет коррелировать с количеством разрабов в нем? Так то у меня например есть и обратный опыт, где проекты, сопровождаемые командой, вырождались в легаси, в то время как проект соло-гигачада процветал, обрастая тестами, доками и функционалом. Более того --- какбэ у людей предпочтения разные. Я к примеру в гробу видел команды, и перформлю лучше всего тогда, когда я один --- код-оунер. Одному даже говнокод после индуса не страшен --- если индус ушел, говнокод за ним и отрефачить можно, при этом ты сам за себя в ответе, и всегда знаешь что никакой дегрод не зарежет твою инициативу на код ревью по пустопорошнему поводу.
>Может быть полное отсутствие менторинга
Не факт. Да и не факт что он челу прям понадобится. Он же оффер получил, значит по мнению владельцев под проект подходит. А дальше решает инициатива и любознательность.
>И ты если и справишься будешь писать велосипеды или говнокод.
Нет в этом ничего зазорного. Велосипед в проде уже не такой уж и велосипедистый. Более того, на велосипедах как нигде тренируются лоулевельные скиллы типа конкарренси и прочего Java SE.
>>497857
Я б со скепсисом отнесся на твоем месте к предыдущему оратору, ИМХО он наговорил много спорных вещей. Не возьмусь советовать как поступить лично тебе, но я сам вкатился бы в такой проект с удовольствием.
Для маленьких проектов, которые способен поддерживать один человек выбирают другие языки. Это конечно не закон. Но тенденция такая.
А велосипеды это вредно. Потому что твое время не безгранично. И для резюме на следующую работу ты должен получить опыт с правильными кейвордами, актуальными в индустрии. Чтобы уйти на х2 например.
И год - два первой работы можно потратить на велосипеды, неактуальные технологии, поддерживание предыдущих велосипедов. А можно набить тех самых кейвордов по верхам хотябы.
>А велосипеды это вредно. Потому что твое время не безгранично. И для резюме на следующую работу ты должен получить опыт с правильными кейвордами, актуальными в индустрии.
Да, слышал такое мнение. И видел людей, фанатично его придерживающихся. Обычно они не могут сделать ничего сложнее крудов, и плывут на собесах от неудобных наводящих вопросов по технике. Выезжают вверх разве что по софт скиллам куда нить в манагеры. Не скажу что ты не прав, но ИМХО даже велосипедский опыт можно обернуть себе в профит.
>И год - два первой работы можно потратить на велосипеды, неактуальные технологии, поддерживание предыдущих велосипедов. А можно набить тех самых кейвордов по верхам хотябы.
Но топикстартер сам выше сказал, что в том проекте планируются позитивные миграции. Сидеть на великах может быть вредно, да, но ИМХО ничто так хорошо не продается в резюме, как миграция со старья на новье, выполненная от начала до конца.
Да большинство не уйдет за пределы крудов.
Думаешь в велосипедах и легаси он чему то хорошему научится? Откуда это мнение про то, что он java se сможет хорошо выдрочить? Там он может хлебнуть такого говна, что просто вытрепет все нервы, но не даст нихуя.
Большая часть говна с велосипедами не потому что это реально нужный велосипед, а потому что кому то было лень искать готовое решение под свой кейс или было лень учить кучу кейвордов и настраивать инфраструктуру. Он просто накидал на коленке прототип и вуаля. А в процессе добавления функционала велосипед становится комом говна.
А обещание на легаси какише, что может и будем обновляться, погоди немного - это почти всегда ложь.
Можно. Там какие то анальные плагины были для браузеров для ЭЦП.
Много ебли, проще, конечно, десктоп. Он не обязательно должен быть на джаве, это просто клиент для вызова веб-сервисов.
> штрихкодером
Бывают разные, мне попадались работающие в режиме клавиатуры, наводишь такой на штрих-код, а он эмулирует нажатие клавиш на клавиатуре и добавляет считанные данные как текст в поля ввода в любой программе.
> эцп-токенами
Тут сложнее, на нашем проекте один такой использует COM, соответственно, работает только в Internet Explorer, где есть поддержка ActiveX, но у нас написали какой-то плагин для chromium-based браузеров, чтобы в нём работал компонент для подписания.
>Да большинство не уйдет за пределы крудов.
Спорно.
>Там он может хлебнуть такого говна, что просто вытрепет все нервы, но не даст нихуя.
Если ты закрываешь баги в легасятине, полной говна, ты просто не можешь вообще ничему не учиться (при условии, конечно, что ты делаешь свою работу честно: воспроизводишь, локализуешь root cause, а не просто пастишь наугад пасты со стековерфлоу в надежде что пофиксится). В тепличных условиях проторенных путей будет меньше говна, но кмк и меньше жизненного опыта. Зато когда твой фреймворк тебя наебет (а он это неизбежно сделает рано или поздно), ты не растеряешься, и всегда сможешь, вооружившись дебаггером, разобрать его по кускам и потом пойти предметно хуесосить его разрабов в гитхабе (тот же спринг, кстати, тоже весьма говнистый внутри). Кмк, это качество и отличает синьоров от крудошлепов.
>А обещание на легаси какише, что может и будем обновляться, погоди немного - это почти всегда ложь.
Все пиздят, начиная от вкатунов, продолжая манагерами, заканчивая правительством. Хули делать.
Ну а с чего недельное ковыряние с целью понять куда писать код лучше, как опыт, чем писать в лично тебе отведенный микросервис фичи с крудами и щепоткой бизнес логики(все по мурзилкам и стековеофлоу) и иногда пощупывать всякие соевые технологии?
Я на легаси поработал совсем чуть чуть и мне вообще не понравилось. Наоборот за сотни кругов в дебагере никакого опыта, кроме понимания того, что проект написан по всем заветам о том, как не надо делать - не получил.
Не будет переката ещё долго, иди нахуй.
Ебани круд для микроконтроллера
Так впринципе --- все. Webflux и projectreactor. Ты б сказал чтоль, что ты находишь для себя интересным чтоли?
Нет, не логично, потому что Exception словит ещё и RuntimeException, который может быть NullPointerException или AriphmeticException.
Логично использовать то, что ожидается по логике программы. В самом верху ловишь Exception для дефолтного обработчика всех не пойманных исключений, чтобы из-за одного бага не свалилось всё. А если пишешь сервер приложений, подсистему плагинов или другую программу, которая загружает неизвестный код, ловишь Throwable. Всё просто.
Как правило это архихуёво, это значит что ты просто забил на логику работы с эксепшенами (реальное принятие индивидуального решения по каждому возможному случаю), и рассматриваешь их как досадную необходимость, которую навязывает модель проверяемых исключений джава. И если уж на все забивать хуй, то лучше пробрасывать их всегда в сигнатуру метода. Особенно такие тяжелые как outOfBound - в 99,9% случаев это значит что ты сам толком нихуя не понимаешь, что у тебя там происходит с массивом (остальной 0,01% можно заложить на долбоеба, который таким способом хочет организовать break обхода массива, хули работать то будет)
Нет апатии, с похуизмом справиться бы.
Не вижу в этом ничего хуевого. Ловишь все, оборачиваешь в рантайм эксепшен или наследника от него (потому что чекед эксепшоны --- одна из самых больших всратостей языка джавы, кто бы что ни говорил), дописываешь внятный мессаг на основе контекста, чтобы дать девелоперу который будет читать стек трейс больше инфы и перебрасываешь наверх.
>>499269
> логику работы с эксепшенами (реальное принятие индивидуального решения по каждому возможному случаю)
> досадную необходимость, которую навязывает модель проверяемых исключений джава
Чел. Оно конечно может и задумывалось так. Но это не отменяет того, что эксепшоны --- хуевое средство для control flow. Сбор стектрейсов --- ощутимый импакт на производительность, поэтому желательно чтобы вот это вот твое принятие решений по эксепшенам было все в одном месте --- где то ближе к мейну, где решится окончательно --- упадет ли программа или продолжит обрабатывать запросы аки вебсервер (в последнем случае еще обычно решается --- какой статус код тебе отдадут). Уродство же именно чекед эксепшенов --- вот в этом:
>И если уж на все забивать хуй, то лучше пробрасывать их всегда в сигнатуру метода
Ты этих эксепшенов на мало мальски весомом стеке вызовов столько соберешь, что самый топовый метод будет выглядеть как ублюдочное говно, где тебе захочется просто заменить эту халабуду на throws Exception. Кроме того, ты упускаешь тот факт, что тот же самый список эксепшонов еще придется прописать в интерфейсе, который этот метод декларирует, из-за чего страдает полиморфизм. Так как с подавляющей вероятностью может статься, что в альтернативных имплементациях этого интерфейса эти эксепшоны нахуй не сдались, но удалить ты их из сигнатуры уже не сможешь.
Если суммировать все вышесказанное: чекед эксепшоны --- говенное говно, тупо рудимент. Все эксепшены желательно держать анчекед. Лучшее что можно сделать с чекед эксепшеном --- обернуть его прямо на месте в какой нить анчекед и перебросить, хотя да, бывают редкие случаи когда его нужно обработать на месте, из-за кривого устройства API какой нить либы. Если же нужно заставить клиент API отрабатывать на ошибках здесь и сейчас, есть более адекватные способы сделать это --- опшеналы, Either/Maybe, Try (хуево правда, что двое последних так и не были завезены в стандартную либу).
>Особенно такие тяжелые как outOfBound - в 99,9% случаев это значит что ты сам толком нихуя не понимаешь, что у тебя там происходит с массивом
IndexOutOfBoundsException кстати --- анчекед, если что.
Не вижу в этом ничего хуевого. Ловишь все, оборачиваешь в рантайм эксепшен или наследника от него (потому что чекед эксепшоны --- одна из самых больших всратостей языка джавы, кто бы что ни говорил), дописываешь внятный мессаг на основе контекста, чтобы дать девелоперу который будет читать стек трейс больше инфы и перебрасываешь наверх.
>>499269
> логику работы с эксепшенами (реальное принятие индивидуального решения по каждому возможному случаю)
> досадную необходимость, которую навязывает модель проверяемых исключений джава
Чел. Оно конечно может и задумывалось так. Но это не отменяет того, что эксепшоны --- хуевое средство для control flow. Сбор стектрейсов --- ощутимый импакт на производительность, поэтому желательно чтобы вот это вот твое принятие решений по эксепшенам было все в одном месте --- где то ближе к мейну, где решится окончательно --- упадет ли программа или продолжит обрабатывать запросы аки вебсервер (в последнем случае еще обычно решается --- какой статус код тебе отдадут). Уродство же именно чекед эксепшенов --- вот в этом:
>И если уж на все забивать хуй, то лучше пробрасывать их всегда в сигнатуру метода
Ты этих эксепшенов на мало мальски весомом стеке вызовов столько соберешь, что самый топовый метод будет выглядеть как ублюдочное говно, где тебе захочется просто заменить эту халабуду на throws Exception. Кроме того, ты упускаешь тот факт, что тот же самый список эксепшонов еще придется прописать в интерфейсе, который этот метод декларирует, из-за чего страдает полиморфизм. Так как с подавляющей вероятностью может статься, что в альтернативных имплементациях этого интерфейса эти эксепшоны нахуй не сдались, но удалить ты их из сигнатуры уже не сможешь.
Если суммировать все вышесказанное: чекед эксепшоны --- говенное говно, тупо рудимент. Все эксепшены желательно держать анчекед. Лучшее что можно сделать с чекед эксепшеном --- обернуть его прямо на месте в какой нить анчекед и перебросить, хотя да, бывают редкие случаи когда его нужно обработать на месте, из-за кривого устройства API какой нить либы. Если же нужно заставить клиент API отрабатывать на ошибках здесь и сейчас, есть более адекватные способы сделать это --- опшеналы, Either/Maybe, Try (хуево правда, что двое последних так и не были завезены в стандартную либу).
>Особенно такие тяжелые как outOfBound - в 99,9% случаев это значит что ты сам толком нихуя не понимаешь, что у тебя там происходит с массивом
IndexOutOfBoundsException кстати --- анчекед, если что.
>Как вы справляетесь с апатией на фоне обстановки?
Иду на двачи помогать вкатунам в джаву и хуесосить спринголюбов.
>не парсить же мне в тупую страницы
Может так получиться, что придется парсить. Новостные площадки же любят делать всякие пейволлы, и не очень то и заинтересованы в том, чтоб тебе все подать на блюдечке с удобным API.
А так --- твоя задача скорее всего сводится к скачиванию и парсингу RSS/Atom фидов, парсеры гуглятся.
Есть проект infomate, можешь чекнуть его как референс: https://vas3k.ru/notes/infomate/
>RSS/Atom фидов
Чет впервые об этом слышу, наверн, долго разбираться, мб попробую каким-нибудь jsoup-ом парсить в скедулере каждый час, с этим я хотя бы дело уже имел
>Подводные?
Нынешний работодатель узнает и пизды даст. А потом мамке твоей расскажет, что ты неблагодарная скотина
>Что вообще говорить на собесе
Я такой-то такой-то, опыта столько, работал вот с тем-то, на текущем месте работы занимаю такую-то роль на таком-то проекте. Хочу мир посмотреть да себя показать, и чтобы мамка не узнала, что я работу меняю. В дальнейшем хочу заниматься тем-то и тем-то, развиваться в такую-то сторону
>>499585
>Чет впервые об этом слышу
МОЧЕРАААТОООР, НЕСОВЕРШЕННОЛЕТНИЕ НА БОРДЕ!
Или эта доска не 18+?
> НЕСОВЕРШЕННОЛЕТНИЕ НА БОРДЕ!
Да мне так-то уже прилично за 20, может всё-таки ты слишком старый?
У многих работодателей есть оповещения о том, что сотрудник, у которого текущее место работы указано их компанией, открыл резюме. Да и банально рекрутёры из твоей компании чисто случайно найти могут. Так что нет, насчет того, что нынешний работодатель узнает, не шучу. А насчет того, даст он тебе после этого пизды, прибавки или за щеку — лучше знать тебе, ты же свою компанию знаешь
Понятно, что ситуация скорее редкая, чем частая, но все же как решается такая проблема? Исходя из того, что операции над Е с посылкой ивента в сервисе А и обработка сообщения "дай мне все Е" могут происходить в совершенно разных потоках. Мне на ум приходит только иметь какой-то общий мьютекс, чтобы запрещать делать операции над Е в момент обработки "дай мне все Е". Есть какие-нибудь общепринятые решения или проблема вообще притянута за уши и так никто не делает?
Около года учил жабу по итогу прошёл собес в среднюю около гос контору в середине августа, учил спринг (boot, security, mvc), java core и т.д.,на собесе либо понравился тим лиду, либо ещё какая-то причина, но он меня пропихнул через голову тех лида (они набирали джавистов с опытом 1-3 года работы, на гитхабе у меня пет был и ещё по мелочи), на собесе с главным честно сказал, что переживаю, что не справлюсь, меня успокоили и сказали, что до прода напрямую меня никто не допустит и я буду сидеть делать не сложные задачи, устроился на джуна, присел на 6-8 жабу, ни одного фреймворка, только либы зачастую частично переписанные, документация по коду отсутствует впринципе (ему больше 10ти лет), онбординга не было вообще, в первый день мне показали мануал как сделать сервак на локал хосте, туда всё накатить и сказали вперёд, что не понятно - спрашивать, ну я вроде установил, в течение недели сделал первый и второй тикеты, после чего мне дали тикет уровня мидла (кент сеньор джавист оценил на этот уровень), а лид уехал в отпуск и связи с ним две недели не было, в офисе мне никто помочь с тикетом не смог, по итогу решили его, когда он вернулся, далее пошли уже тикеты более менее моего уровня, которые я с горем пополам закрывал (без доки, с голым дебагом это тот ещё ад, особенно чейн формирования сообщения об ошибках, которые должны быть понятными и полными), ну и постоянно нервничал, что делаю всё медленно и надо стараться больше. Это была преамбула, теперь суть чуть больше недели назад (на текущий момент работаю в компании 2 месяца на испыталке) мне выдали 2 задачи, которые нужно решить в версии для прода и в процессе их решения выдали ещё одну и тоже для прода, код фриз был назначен на среду, чтобы успеть их сделать, в понедельник я работал с 10 утра и до 4 ночи, во вторник с 11 утра и до 5 утра, поймал нервный срыв, т.к. сильно ответственный и когда что-то не успеваю, не могу, то очень переживаю, в среду закончил все 3, и из-за истощения вырубился, когда просто присел на диван, но 2/3 вернули с ошибками, с которыми я сегодня весь день разбирался до 2ух ночи, при этом забыв коммуницировать со своим лидом, лид по итогу сам дозакрыл 2 оставшихся тикета, ничего мне не написав, но я перед тем как лить изменения сегодня ночью увидел всё, написал ему, что косяк на мне целиком и полностью и т.д. теперь опять близок к истерике, т.к. переживаю за свой косяк
В целом мой главный проёб, то что я боюсь дёргать лида по всякой хуйне, но и он может отвечать 5 часов, за которые я уже разберусь сам, или же около 15-17 часов, а иногда отвечает быстро
В связи с этим нудным постом хочу спросить у анона: что думаешь насчёт этой ситуации? Стоит ли самому уходить ( т.к. трачу невероятное количество нервов, сил и времени на всё это, а также заёбываю окружающих)? Программировать нравится, но боюсь если уйду/уволят, то не смогу найти новую работу
Около года учил жабу по итогу прошёл собес в среднюю около гос контору в середине августа, учил спринг (boot, security, mvc), java core и т.д.,на собесе либо понравился тим лиду, либо ещё какая-то причина, но он меня пропихнул через голову тех лида (они набирали джавистов с опытом 1-3 года работы, на гитхабе у меня пет был и ещё по мелочи), на собесе с главным честно сказал, что переживаю, что не справлюсь, меня успокоили и сказали, что до прода напрямую меня никто не допустит и я буду сидеть делать не сложные задачи, устроился на джуна, присел на 6-8 жабу, ни одного фреймворка, только либы зачастую частично переписанные, документация по коду отсутствует впринципе (ему больше 10ти лет), онбординга не было вообще, в первый день мне показали мануал как сделать сервак на локал хосте, туда всё накатить и сказали вперёд, что не понятно - спрашивать, ну я вроде установил, в течение недели сделал первый и второй тикеты, после чего мне дали тикет уровня мидла (кент сеньор джавист оценил на этот уровень), а лид уехал в отпуск и связи с ним две недели не было, в офисе мне никто помочь с тикетом не смог, по итогу решили его, когда он вернулся, далее пошли уже тикеты более менее моего уровня, которые я с горем пополам закрывал (без доки, с голым дебагом это тот ещё ад, особенно чейн формирования сообщения об ошибках, которые должны быть понятными и полными), ну и постоянно нервничал, что делаю всё медленно и надо стараться больше. Это была преамбула, теперь суть чуть больше недели назад (на текущий момент работаю в компании 2 месяца на испыталке) мне выдали 2 задачи, которые нужно решить в версии для прода и в процессе их решения выдали ещё одну и тоже для прода, код фриз был назначен на среду, чтобы успеть их сделать, в понедельник я работал с 10 утра и до 4 ночи, во вторник с 11 утра и до 5 утра, поймал нервный срыв, т.к. сильно ответственный и когда что-то не успеваю, не могу, то очень переживаю, в среду закончил все 3, и из-за истощения вырубился, когда просто присел на диван, но 2/3 вернули с ошибками, с которыми я сегодня весь день разбирался до 2ух ночи, при этом забыв коммуницировать со своим лидом, лид по итогу сам дозакрыл 2 оставшихся тикета, ничего мне не написав, но я перед тем как лить изменения сегодня ночью увидел всё, написал ему, что косяк на мне целиком и полностью и т.д. теперь опять близок к истерике, т.к. переживаю за свой косяк
В целом мой главный проёб, то что я боюсь дёргать лида по всякой хуйне, но и он может отвечать 5 часов, за которые я уже разберусь сам, или же около 15-17 часов, а иногда отвечает быстро
В связи с этим нудным постом хочу спросить у анона: что думаешь насчёт этой ситуации? Стоит ли самому уходить ( т.к. трачу невероятное количество нервов, сил и времени на всё это, а также заёбываю окружающих)? Программировать нравится, но боюсь если уйду/уволят, то не смогу найти новую работу
Я конечно советовать ничего не возьмусь, анон, но я б на твоем месте вообще переставал думать о работе после конца рабочего дня, забив хуй на все до начала следующего. А если кабанчик будет выебываться - пусть нахуй идет и сам сидит в свободное от работы время разгребает, че ему там надо. Мне кажется, что так и должно быть на нормальной работе, а если ты вынужден постоянно овертаймить и сидеть постоянно на нервах, то нахуй такая РАБота сдалась, лучше другие варианты рассмотреть.
Сложности закаляют. ИМХО твоя ошибка в том, что ты много на себя берешь. Не надо.
>трачу невероятное количество нервов, сил и времени на всё это
Возможны такие варианты. Если на тебя прям спускают ебанутые майлстоуны и овертаймы, морально давят, и выхода из подобного расклада не прослеживается, лучше уйти. Если ты САМ на себя берешь овертаймы и обязательства, смена работы врядли чето изменит, тут нужно менять установки в голове. Натереть мозольку поверх эмпатии, почерстветь, отнестись к себе с любовью и самоуважением, закончить 8-часовой день за 8 часов и лечь спать пораньше. Запускать такое состояние точно нельзя --- дальше будет хуже: выгоришь, начнутся мигрени, бессонница, потеря фокуса --- вообще работать не сможешь.
>я боюсь дёргать лида по всякой хуйне
Не надо. Быть дерганым, решать вопросики --- его работа. Если его заебет --- он сам скажет, за него не додумывай.
>а также заёбываю окружающих
Не придумывай за людей что они чувствуют, не накручивай себя. Кмк рядом с каждым мало мальски синьорным челом часто есть такая аура --- как будто ты их заебал, хули приперся сюда со своим тупым вопросом. На самом деле дело может быть вообще не в тебе. Может у него самого от кранчей жопа горит? Или на каком нить манагерском митинге ему мозг вынесли. В конечном счете решает то, как они ведут себя по отношению к коллегам, а не то, что чувствуют.
Помогает еще неформальное общение. Можно попробовать обсудить с тимлидом или коллегами сложности, с которыми ты столкнулся, за обедом, в курилке или в чатах.
>Стоит ли самому уходить
Если есть интерес и устраивает оклад, уходить я бы стал в контексте твоей истории в двух случаях: если тебя обвиняют единолично в факапах, либо если пытаются тобой манипулировать, играя на чувстве вины. В остальных случаях --- я б еще побарахтался.
Но если чувствуешь что вообще сил нет, если кранчевание длится уже продолжительное время, что-то точно с этим надо делать.
>Мне на ум приходит только иметь какой-то общий мьютекс, чтобы запрещать делать операции над Е в момент обработки "дай мне все Е". Есть какие-нибудь общепринятые решения или проблема вообще притянута за уши и так никто не делает?
Ну так то у СУБД есть такая вещь как уровни изоляции, нет? Зачем мьютекс? Пока транзакция, удаляющая сущность, не завершится, соседние транзакции будут видеть обе сущности. А все последующие за транзакцией удаления транзакции увидят одну.
Тут скорее проблема в том, что выгрузка сущностей и доставка хвоста лога событий из брокера/очереди происходят не атомарно.
Решением, если я все правильно понял, звучит паттерн Event sourcing с снэпшотами (https://microservices.io/patterns/data/event-sourcing.html). Но надо еще покумекать над атомарностью лога сообщений + снепшота и над тем, в каком конкретно виде передать текущий снепшот E + те эвенты, которые его еще не поаффектили, одним слепком на принимающую сторону. Возможно стоит еще чекнуть паттерн https://microservices.io/patterns/data/transactional-outbox.html
Есть еще такая штука как CDC. Реализована в виде тула под названием Debezium. Оно все делает за тебя. Я юзал ее в embedded режиме --- в нем сервис, подключаясь к базе через дебезиум, получает сначала снепшот текущих данных, а потом тот хвостик эвентов, который еще не оказался применен в этом снепшоте. И потом просто висит подписанный на эвенты.
В твоем случае embedded режим скорее всего не подходит, так как скорее всего ты не хочешь чтобы один сервис лез напрямую в БД другого, но тему чекнуть стоит.
>А если кабанчик будет выебываться - пусть нахуй идет и сам сидит в свободное от работы время разгребает, че ему там надо
Эта мысль меня посещала, но из-за боязни вылететь с испыталки и потом ничего не найти, волю я ей дать не мог
Спасибо, попробую
>>500024
>Возможны такие варианты. Если на тебя прям спускают ебанутые майлстоуны и овертаймы, морально давят, и выхода из подобного расклада не прослеживается
На счёт ебанутости майлстоунов сложно судить,овертаймы не спускают, но лид душит морально (вот эту задачу можно за 2-3 часа закрыть, долго возишься, как пример) из-за чего думаю, что ультраслабый и надо работать дополнительно, но и одновременно прикол в том, что сроков по выполнению задач мне никто не ставит
>Помогает ещё неформальное общение
Как-то пытался относительно неформально с лидом пообщаться, а там стена из невероятной душноты и "всезнайства")) насчёт остальных коллег, надо будет попробовать
>Если есть интерес и устраивает оклад, уходить я бы стал в контексте твоей истории в двух случаях: если тебя обвиняют единолично в факапах, либо если пытаются тобой манипулировать, играя на чувстве вины. В остальных случаях --- я б еще побарахтался
Интерес есть к программированию, к проекту, не сильно, т.к. очень мало информации и изучать это всё никто не даёт (ибо это можно изучать год-два, как мне сказали, подозреваю, что из-за отсутствия документации), за окладом не гонюсь, т.к. в целом он пойдёт, как для первой работы, единолично в факапах никто не обвинял пока, чувством вины поигрывают, но не прям уж сильно
>Но если чувствуешь что вообще сил нет, если кранчевание длится уже продолжительное время, что-то точно с этим надо делать.
Кранчевание началось через месяц как устраивался, сначала там на полчаса-час, потом час-два и так докатилось до 4 лишних часов в день
"Барахтаться" буду в любом случае, ибо к своему горю/счастью тот ещё упёртый баран)
Плюс есть перспектива свалить в норм контору, под крыло друга сеньора, но проблема в том, что набирать они начнут самое ближайшее - в декабре, самое дальнее марте. Ну и отсюда начинаются размышления: если уволят/уйти с испыталки, то потом месяц-два займёт поиск нового места, там просижу месяц-три и откроют набор куда хочу
Остальные принял к сведению, спасибо за ответ анон
>А если кабанчик будет выебываться - пусть нахуй идет и сам сидит в свободное от работы время разгребает, че ему там надо
Эта мысль меня посещала, но из-за боязни вылететь с испыталки и потом ничего не найти, волю я ей дать не мог
Спасибо, попробую
>>500024
>Возможны такие варианты. Если на тебя прям спускают ебанутые майлстоуны и овертаймы, морально давят, и выхода из подобного расклада не прослеживается
На счёт ебанутости майлстоунов сложно судить,овертаймы не спускают, но лид душит морально (вот эту задачу можно за 2-3 часа закрыть, долго возишься, как пример) из-за чего думаю, что ультраслабый и надо работать дополнительно, но и одновременно прикол в том, что сроков по выполнению задач мне никто не ставит
>Помогает ещё неформальное общение
Как-то пытался относительно неформально с лидом пообщаться, а там стена из невероятной душноты и "всезнайства")) насчёт остальных коллег, надо будет попробовать
>Если есть интерес и устраивает оклад, уходить я бы стал в контексте твоей истории в двух случаях: если тебя обвиняют единолично в факапах, либо если пытаются тобой манипулировать, играя на чувстве вины. В остальных случаях --- я б еще побарахтался
Интерес есть к программированию, к проекту, не сильно, т.к. очень мало информации и изучать это всё никто не даёт (ибо это можно изучать год-два, как мне сказали, подозреваю, что из-за отсутствия документации), за окладом не гонюсь, т.к. в целом он пойдёт, как для первой работы, единолично в факапах никто не обвинял пока, чувством вины поигрывают, но не прям уж сильно
>Но если чувствуешь что вообще сил нет, если кранчевание длится уже продолжительное время, что-то точно с этим надо делать.
Кранчевание началось через месяц как устраивался, сначала там на полчаса-час, потом час-два и так докатилось до 4 лишних часов в день
"Барахтаться" буду в любом случае, ибо к своему горю/счастью тот ещё упёртый баран)
Плюс есть перспектива свалить в норм контору, под крыло друга сеньора, но проблема в том, что набирать они начнут самое ближайшее - в декабре, самое дальнее марте. Ну и отсюда начинаются размышления: если уволят/уйти с испыталки, то потом месяц-два займёт поиск нового места, там просижу месяц-три и откроют набор куда хочу
Остальные принял к сведению, спасибо за ответ анон
Я не понимаю, как уровни изоляции тут могут зарешать. Поток 1 читает список Е из бд (select * from E) -> получает Е1 и Е2 в ответ -> отправляет ивент. Поток 2 параллельно удаляет Е2 (delete E2 from E) -> отправляет ивент. Может статься так, что поток 2 отправит ивент "Е2 удалена" раньше, чем поток 1 отправит "в моей бд ща лежат Е1 и Е2", что приведет к несогласованности.
Аналогично мне не ясно, как поможет ивент сорсинг. Предположим, что поток 1 вместо выборки всех Е вытаскивает последний снапшот + новые ивенты, а затем каким-то образом пуляет их в очередь. Второй поток параллельно может удалить Е2, что повлечет за собой добавление записи в ивент-стор. Что мешает потоку 2 отправить этот ивент раньше, чем поток 1 отправит снепшот + скопленные ивенты (которые не будут содержать в себе ивент, добавленный потоком 2, т к. поток 1 вытащил их раньше, чем поток 2 добавил новый).
Transactional outbox тоже не роляет, на мой взгляд. Он больше про то, чтобы обновление локальной бд и отправка сообщения в брокер происходили в одной "транзакции" засчет того, что ивент не пуляется в очередь, а пишется в отдельную таблицу. Здесь же возможна такая ситуация, что поток 2 в эту таблицу запишет свой ивент раньше, чем поток 1.
>вот эту задачу можно за 2-3 часа закрыть, долго возишься, как пример
>Как-то пытался относительно неформально с лидом пообщаться, а там стена из невероятной душноты и "всезнайства"))
Ну вот это вот явные признаки, что пора валить.
>Плюс есть перспектива свалить в норм контору, под крыло друга сеньора, но проблема в том, что набирать они начнут самое ближайшее - в декабре, самое дальнее марте.
Это имхо --- идеальный вариант. Я как то раз тоже валил из конторы душнил, заебавшей меня до нервных срывов и тотальной апатии, в контору, где СТО --- мой бывший коллега и товарищ. И похуй что от перехода я просел чуток по зарплате, похуй что переход был из калифорнийской конторы в российскую, похуй даже на фоне текущих событий, я ни о чем не жалею: когда ты идешь работать туда, где тебя любят и ждут --- это бесценно. Особенно курьезно было то, что когда я подавал заявление на увольнение, HR которая его принимала призналась что ее тоже все заебало и она тоже уходит)
Если уверен в себе и в друге, можно устроить себе перед переходом перерыв на несколько месяцев. HRши, бывает, смотрят на это косо, но для психики такой перерыв крайне полезен.
Ну ок, ладно, при втором прочтении --- может мьютекс и есть выход. Но тогда я бы делал не мьютекс на, грубо говоря, рест методе getAllE (иначе фронтенд тебе весь throughput положит), а делал бы отдельную операцию syncE, недоступную на пределами гейтвея, и для нее уже городил мьютекс.
https://www.baeldung.com/java-http-request
Вот тут 4-ый пункт. В нем ведь просто в поток запихивают кей-вэлью и все, и нихуя дальше. Эти параметры не присовокупляются к get запросу, зачем тогда такую хуйню они пишут?
Так я сижу, проектов тупа нет. По их мнению, Я че блять должен спокойно ждать, когда мне придет письмо о сокращении? Они конченные дегенераты? Только конченный омежка будет вот так послушно как пёсик ждать попку насиживать
Окей. Давайте разбираться тогда по шагам.
Вот строка, в которой правильный урл и con(это коннекшн)
DataOutputStream out = new DataOutputStream(con.getOutputStream());
Что у меня будет в ауте?
В плане психики всегда стабилен и самодостаточен был, а тут действительно хрень какая-то
В себе уверен, в друге тоже, решил для себя, что даже если уволят, то похуй, уже есть опыт работы, что самое важное при поиске новой, а там поглядим
>В плане психики всегда стабилен и самодостаточен был, а тут действительно хрень какая-то
Это --- АйТи. Рано или поздно оно всех ломает.
Вот наносеки охуевшие нынче, зарабатывают больше, чем 90% населения россии и жалуются еще на что-то, будто написание крудов, это не одноклеточное занятие, с которым любой дегенерат > 15 iq не справится
А оклад и преференции тут мало че меняют. Физиологию то никуда не денешь? Если насиловать тело, будет изнашиваться тело --- грыжи, ушатанные суставы, травмы. Если насиловать мозг --- будет ушатываться мозг: выгорания, депрессии, бессонница, связанная с этим психосоматика.
Если кто и охуел, так это челы, которые, живя в говне, винят в этом не себя, и не правительство, а таких же, как они, но кому чуток больше повезло.
>будто написание крудов, это не одноклеточное занятие, с которым любой дегенерат > 15 iq не справится
Блять, где вы все находите эти мифические круды, которые надмозгом мейнтейнятся? Почему в моей жизни джависта 15 лет стажа я видел только НЕХ, но ни одного тупого круда?
Это XML в 16-ричном виде.
Думаю, у тебя этот вопрос возникает из-за непонимания самой сути лямбд. Лямбда - это сахарок над анонимным классом, реализующим функциональный интерфейс (только с одним нереализованным методом). Всё, что пишется внутри лямбды и есть реализация этого метода.
Во вторых, ты, похоже, ещё и не понял, что тебе говорит Intellij IDEA. Она тебя не заставляет сделать переменную effectively final, она предлагает сделать изменяемую переменную финальной так, чтобы на практике её можно было менять, оставляя финальной. Это и есть effectively final.
А почему она должна быть финальной? Подумай, может быть догадаешься.
Если не догадался - прочитай ещё раз первый абзац.
Если всё ещё не понял - то вот тебе объяснение. Требование сделать переменную финальной - вот это уже ограничение самой Java. Сделано оно из-за того, что лямбда - это просто сахарок над анонимным классом. Анонимный класс же является сахарком над обычным классом. Теперь понимаешь, в чём дело? Очевидно, переменные в методе находятся вне зоны видимости объекта, который просто создаётся в этом методе. А чтобы объект видел эти переменные, эти зависимости надо в него внедрить. Это и делает Java - она генерирует поля внутри класса с твоими переменными, когда ты обращаешься из лямбды к чему-то вне лямбды. И вот тут появляется ситуация, когда у кода может возникнуть скрытое поведение, что очень нежелательно. Если просто добавить поле и присвоить ему значение ссылки переменной, а потом ссылку в оригинальной переменной изменить - скрытое поле внутри лямбды продолжит ссылаться на старую ссылку. Чтобы такого не было, надо принудительно оборачивать оригинальную переменную, и поле в лямбде во что-то, например, в массив, или принудительно заставить делать переменные и поля финальными. Разработчики Java выбрали второй вариант, потому что это легче. Хотя правильнее было бы сделать первым вариантом, возможно, есть какие-то плагины для идеи (мб в манифолде такое есть), чтобы это реализовать условно-чистым образом.
>надо принудительно и неявно оборачивать оригинальную переменную, и поле в лямбде во что-то
быстрофикс
Как по мне, сделано для дебилов, в чем проблема просто запомнить, что при изменении ссылки, та что внутри лямбды останется прежней и не ебать мозг с этой хуйней
Репорт протекшему петушарперу.
Оба, но почти всегда это скрыто за каким-нибудь JsonUtils, и приучать себя надо уже к обёртке.
Придётся обмазываться JNI, либо есть какие-нибудь васянские библиотеки. Васянские потому, что в жабе это никому не нужно, она тупо не для таких задач.
Мне интересно :с
Бля, опять чето учить, сидеть разбираться часами, нахуй надо
>>2501195
Готовы к чему? Мы сидим на четвёртом спринге и восьмой жабе, хотя руководство заставляет потихоньку пересаживаться на современный стек, который там нахуй не нужен.
Посмотрел список, ничего из него к нашему проекту не применимо. У нас на проде клиентские приложения очень сильно огорожены и запускаются удалённо в песочнице на виртуальной машине, обойти не получится. Да и вряд ли 40-летние тётки-операторы будут этим заниматься.
При чём тут вообще глобальные переменные?
Какие-то надуманные у вас проблемы. Идея во всех случаях нарушения эффектив-финал правила предлагает вариант автоматического создания обертки (в виде одночленного массива или специально класса, вроде AtomicInteger). Если бы было как ты говоришь это бы было не ошибкой компиляции, а просто эдвайсом шло, и фиксы были бы такими же. В чем ценность - хуй его знает. Ваще похуй, даже дверь открыта
Если уж и придумывать такую хуйню, лучше бы я объявлял эти ссылки явно, чем еблася со скрытой неочевидной логикой, которая всегда мгновенно забывается. Только тогда и сахарок над пнонимными объектами станет бесполезным.
>>501464
«Превращение» же, ну ты чего, школьная классика же.
Моьрался по кафке читать талмуды на 1000 страниц?) Прочитай туториал за вечер, и тебе хватит на ближайшие лет 5.
Билдер неплохой, да. Команду в том виде в каком ее преподают ни разу не использовал.
За юзанье синглтона же по ебалу дают?
Если пишешь синглтон руками, синглтон становится антипаттерном, а если его создает и менеджит спринг, то все норм
Паттерны --- отвратительный термин. Вот ты спрашиваешь "какие из паттернов используются..." Каких паттернов? Их так то до кучи всяких разных: GoF, энтерпрайзных, микросервисных.
И где используются? Есть к примеру места где термин "паттерн проектирования" вообще не прижился: заговори о паттернах с хаскелитом --- он будет смотреть на тебя как на ООПшника.
Ну или взять пример попроще --- синглтон. Считается что синглтон как паттерн --- отвратительная херня. С одной стороны. С другой стороны, спринговый синглтон --- по прежнему дефолтный скоуп бина, и всегда им был, и все спринговые бины стремятся сделать стейтлесс-синглтонами. Так хороший ли паттерн синглтон или нет?
Ответ --- синглтон отвратителен именно как паттерн, но вполне себе приемлем как частный случай скоупа и жизненного цикла обьекта. И в этом --- все паттерны. Паттены это коинцидальная хуйня, не имеющая под собой никакой базы: просто жили-были четыре писателя программ руками, кодили себе софт на плюсах, старались делать свое дело хорошо. Заметили что часть конструкций в коде у них повторяется. Взяли, назвали их паттернами и написали об этом книгу. А хули толку то? Чуток меняется мода или парадигма, и вчерашние паттерны превращаются в говно, а на смену им приходят новые. Зато сколько вокруг них каргокультизма, просто пиздец.
SingletonDecoratorAdapter singletonDecoratorAdapter = new SingletonDecoratorAdapter();
AbstractFactoryFactorySingletonBuilderProxy abstractFactoryFactorySingletonBuilderProxy = new AbstractFactoryFactorySingletonBuilderProxy();
VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory visitorBeanSingletonProxyAdvisorBuilderFactoryFactory = new VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory();
IteratorListenerBean iteratorListenerBean = new IteratorListenerBean();
AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator abstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator = new AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator();
synchronized final private protected void setAdvisorFacadeObserverFactorySingletonBeanProxy(AdvisorFacadeObserverFactorySingletonBeanProxy advisorFacadeObserverFactorySingletonBeanProxy) {
this.advisorFacadeObserverFactorySingletonBeanProxy = advisorFacadeObserverFactorySingletonBeanProxy;
}
public synchronized static protected native volatile transient private void setAbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy(AbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy) {
this.abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy = abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy;
}
native public static synchronized protected private transient final void setAbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator(AbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator) {
this.abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator = abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator;
}
protected public native synchronized final void setAbstractBuilderFactoryFactory(AbstractBuilderFactoryFactory abstractBuilderFactoryFactory) {
this.abstractBuilderFactoryFactory = abstractBuilderFactoryFactory;
}
static private protected volatile transient SingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory getSingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory() {
return this.singletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory;
}
transient private final static public VisitorAdvisorFactoryAdapterProxy getVisitorAdvisorFactoryAdapterProxy() {
return this.visitorAdvisorFactoryAdapterProxy;
}
synchronized protected public final volatile private AbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener getAbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener() {
return this.abstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener;
}
public transient private AbstractListenerAdvisor getAbstractListenerAdvisor() {
return this.abstractListenerAdvisor;
}
public protected transient final synchronized volatile static native private AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter abstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter(ObserverDecoratorAdvisorAdapterBuilderSingletonFacade observerDecoratorAdvisorAdapterBuilderSingletonFacade, AbstractBeanInterceptor abstractBeanInterceptor, AdvisorFacadeSingletonDecoratorListener advisorFacadeSingletonDecoratorListener, AbstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder abstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder, AbstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver abstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver) {
decoratorProxyBean.setProxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter(this.proxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter);
return new AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter();
}
transient native private final synchronized volatile protected static DecoratorSingletonIterator decoratorSingletonIterator(ObserverSingletonListenerFactoryFactoryBuilder observerSingletonListenerFactoryFactoryBuilder, VisitorDecoratorSingletonObserverFactory visitorDecoratorSingletonObserverFactory, AbstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory abstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory, FactoryVisitorProxyDecoratorListener factoryVisitorProxyDecoratorListener) {
factoryInterceptorListenerSingletonFacadeDecoratorAdapter.setAbstractBuilderDecorator(this.abstractBuilderDecorator);
InterceptorProxyFacade interceptorProxyFacade = new InterceptorProxyFacade();
abstractAdvisorAdapterVisitorBean.setAbstractAdapterObserver(this.abstractAdapterObserver);
abstractInterceptorListenerBuilderSingletonAdapterStrategyFactoryAdvisor.setAdvisorStrategyDecorator(this.advisorStrategyDecorator);
return new DecoratorSingletonIterator();
}
synchronized volatile private final protected public static native transient AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade abstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade(ObserverListenerBeanFactoryFactoryAdvisor observerListenerBeanFactoryFactoryAdvisor, ProxyObserverVisitorFactoryBuilderDecoratorStrategy proxyObserverVisitorFactoryBuilderDecoratorStrategy, AbstractBeanInterceptorObserverAdvisor abstractBeanInterceptorObserverAdvisor) {
abstractStrategyFactoryFactoryBeanVisitorBuilderSingleton.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
AbstractListenerAdvisorSingletonObserver abstractListenerAdvisorSingletonObserver = abstractBuilderDecoratorVisitorFactoryBeanProxyFacadeSingleton.getAbstractAdapterProxyBuilderFacadeListenerAdvisorInterceptorFactory().getAbstractListenerAdvisorSingletonObserver();
return new AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade();
}
volatile static transient public native protected AbstractListenerBuilderAdvisorProxyVisitorFacade abstractListenerBuilderAdvisorProxyVisitorFacade(DecoratorSingletonAdvisorFactoryInterceptorListenerBuilder decoratorSingletonAdvisorFactoryInterceptorListenerBuilder, AbstractDecoratorBuilderBeanListenerSingletonObserver abstractDecoratorBuilderBeanListenerSingletonObserver) {
AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter abstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter = new AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter();
adapterAdvisorDecoratorFacadeProxy.setAbstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory(this.abstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory);
return new AbstractListenerBuilderAdvisorProxyVisitorFacade();
}
private final public static volatile transient synchronized protected InterceptorSingletonVisitor interceptorSingletonVisitor(AbstractDecoratorStrategyProxyObserverInterceptorBuilder abstractDecoratorStrategyProxyObserverInterceptorBuilder, AbstractVisitorAdvisorFacadeListener abstractVisitorAdvisorFacadeListener, VisitorFactoryFactoryBuilder visitorFactoryFactoryBuilder, VisitorProxyFacadeFactoryFactorySingletonAdvisorDecorator visitorProxyFacadeFactoryFactorySingletonAdvisorDecorator, AbstractAdvisorBuilderDecoratorInterceptor abstractAdvisorBuilderDecoratorInterceptor) {
AbstractProxyAdvisor abstractProxyAdvisor = abstractFactoryFactoryDecorator.getListenerInterceptorFactoryFactory().getAbstractProxyAdvisor();
AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory abstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory = new AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory();
abstractBeanAdvisorSingletonInterceptor.setAbstractFactoryFactoryAdvisorFacadeStrategy(this.abstractFactoryFactoryAdvisorFacadeStrategy);
AbstractAdvisorProxyStrategyIteratorVisitorObserver abstractAdvisorProxyStrategyIteratorVisitorObserver = new AbstractAdvisorProxyStrategyIteratorVisitorObserver();
if (abstractSingletonFacadeFactoryObserver.isInterceptorListenerFacade()) {
iteratorProxyListenerFacadeBean.setAbstractStrategyBean(this.abstractStrategyBean);
AbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor abstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor = abstractBeanInterceptorIteratorListenerFactoryFactoryStrategyProxyObserver.getAbstractObserverFacadeListenerSingletonProxyAdvisorStrategyVisitor().getAbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor();
abstractProxyBuilderVisitorSingleton.setIteratorAdvisorProxySingletonAdapter(this.iteratorAdvisorProxySingletonAdapter);
if (abstractDecoratorAdapterVisitorProxyObserverIteratorBuilderFactory.isDecoratorFactoryFactoryFacade()) {
visitorIteratorObserverProxyAdvisor.setAbstractObserverSingletonProxyAdvisorBuilderDecorator(this.abstractObserverSingletonProxyAdvisorBuilderDecorator);
singletonFacadeAdapterListenerFactory.setAbstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory(this.abstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory);
while (abstractFactoryAdapterSingletonFactoryFactory.isAbstractStrategyFactory()) {
abstractAdapterBeanStrategySingletonAdvisorBuilderListenerFactory.setAbstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver(this.abstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver);
abstractObserverAdapterFactoryFacadeDecoratorBuilderInterceptorFactoryFactory.setAdvisorIteratorFactoryProxyDecorator(this.advisorIteratorFactoryProxyDecorator);
while (abstractFacadeListenerStrategyIteratorAdvisorSingletonProxyObserver.isVisitorDecoratorInterceptorIteratorAdapter()) {
abstractProxyAdapterInterceptorObserverFactoryFactoryIterator.setSingletonFactoryFactoryProxyIteratorStrategy(this.singletonFactoryFactoryProxyIteratorStrategy);
singletonInterceptorDecorator.setAbstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade(this.abstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade);
visitorFactoryFactoryAdapterIteratorInterceptor.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
}
}
} else {
abstractListenerInterceptorStrategyVisitorBeanFactorySingletonIterator.setAbstractProxyStrategy(this.abstractProxyStrategy);
abstractProxyInterceptorSingletonFactoryFactory.setAbstractSingletonIterator(this.abstractSingletonIterator);
}
} else {
singletonListenerFactoryFactoryIteratorProxy.setAbstractObserverProxyIteratorVisitor(this.abstractObserverProxyIteratorVisitor);
}
return new InterceptorSingletonVisitor();
}
native volatile static final public AbstractSingletonObserver abstractSingletonObserver(AbstractBuilderFacade abstractBuilderFacade, ListenerBuilderVisitorFactoryStrategyAdvisorFacade listenerBuilderVisitorFactoryStrategyAdvisorFacade) {
builderObserverIterator.setAbstractProxyBuilder(this.abstractProxyBuilder);
AbstractInterceptorAdapterFactoryAdvisorStrategyProxy abstractInterceptorAdapterFactoryAdvisorStrategyProxy = abstractDecoratorInterceptor.getStrategyObserverListenerVisitorBean().getAbstractInterceptorAdapterFactoryAdvisorStrategyProxy();
AbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator abstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator = abstractFactoryIteratorStrategyVisitor.getAdvisorBuilderVisitorBeanIterator().getAbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator();
while (facadeStrategyObserver.isAbstractFactoryFactoryFactoryListenerVisitorIteratorSingletonBeanAdvisor()) {
abstractFactoryFactoryAdvisorFactoryInterceptorIteratorObserverProxyBuilder.setIteratorAdvisorBeanBuilderProxy(this.iteratorAdvisorBeanBuilderProxy);
AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter abstractIteratorFactoryFactoryFacadeObserverVisitorAdapter = new AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter();
abstractVisitorObserverBeanSingletonBuilderProxyFacadeIterator.setAbstractProxyFactoryAdapterFactoryFactoryInterceptorIterator(this.abstractProxyFactoryAdapterFactoryFactoryInterceptorIterator);
}
return new AbstractSingletonObserver();
}
transient volatile static private synchronized AbstractFactorySingletonFacadeProxyFactoryFactoryIterator abstractFactorySingletonFacadeProxyFactoryFactoryIterator(ObserverInterceptorAdapter observerInterceptorAdapter, AbstractInterceptorIteratorListenerFacadeDecoratorVisitor abstractInterceptorIteratorListenerFacadeDecoratorVisitor, FactoryDecoratorBeanAdapterProxy factoryDecoratorBeanAdapterProxy, SingletonAdvisorFacadeBuilderStrategy singletonAdvisorFacadeBuilderStrategy) {
AbstractBuilderIterator abstractBuilderIterator = new AbstractBuilderIterator();
iteratorSingletonDecoratorVisitorAdvisorFactoryFacade.setAbstractDecoratorAdapterListenerBuilderFacadeIterator(this.abstractDecoratorAdapterListenerBuilderFacadeIterator);
return new AbstractFactorySingletonFacadeProxyFactoryFactoryIterator();
}
synchronized volatile protected native private DecoratorStrategyBuilderListenerSingleton decoratorStrategyBuilderListenerSingleton(ObserverBuilderFactoryFactory observerBuilderFactoryFactory, AbstractStrategyDecoratorFacadeVisitor abstractStrategyDecoratorFacadeVisitor, AbstractAdapterIteratorListenerBuilderFactoryVisitor abstractAdapterIteratorListenerBuilderFactoryVisitor, AbstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator abstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator, AbstractStrategyFactoryFacadeVisitorListenerBean abstractStrategyFactoryFacadeVisitorListenerBean) {
advisorStrategySingleton.setAbstractSingletonObserverAdapterDecorator(this.abstractSingletonObserverAdapterDecorator);
return new DecoratorStrategyBuilderListenerSingleton();
}
}
SingletonDecoratorAdapter singletonDecoratorAdapter = new SingletonDecoratorAdapter();
AbstractFactoryFactorySingletonBuilderProxy abstractFactoryFactorySingletonBuilderProxy = new AbstractFactoryFactorySingletonBuilderProxy();
VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory visitorBeanSingletonProxyAdvisorBuilderFactoryFactory = new VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory();
IteratorListenerBean iteratorListenerBean = new IteratorListenerBean();
AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator abstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator = new AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator();
synchronized final private protected void setAdvisorFacadeObserverFactorySingletonBeanProxy(AdvisorFacadeObserverFactorySingletonBeanProxy advisorFacadeObserverFactorySingletonBeanProxy) {
this.advisorFacadeObserverFactorySingletonBeanProxy = advisorFacadeObserverFactorySingletonBeanProxy;
}
public synchronized static protected native volatile transient private void setAbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy(AbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy) {
this.abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy = abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy;
}
native public static synchronized protected private transient final void setAbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator(AbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator) {
this.abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator = abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator;
}
protected public native synchronized final void setAbstractBuilderFactoryFactory(AbstractBuilderFactoryFactory abstractBuilderFactoryFactory) {
this.abstractBuilderFactoryFactory = abstractBuilderFactoryFactory;
}
static private protected volatile transient SingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory getSingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory() {
return this.singletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory;
}
transient private final static public VisitorAdvisorFactoryAdapterProxy getVisitorAdvisorFactoryAdapterProxy() {
return this.visitorAdvisorFactoryAdapterProxy;
}
synchronized protected public final volatile private AbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener getAbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener() {
return this.abstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener;
}
public transient private AbstractListenerAdvisor getAbstractListenerAdvisor() {
return this.abstractListenerAdvisor;
}
public protected transient final synchronized volatile static native private AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter abstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter(ObserverDecoratorAdvisorAdapterBuilderSingletonFacade observerDecoratorAdvisorAdapterBuilderSingletonFacade, AbstractBeanInterceptor abstractBeanInterceptor, AdvisorFacadeSingletonDecoratorListener advisorFacadeSingletonDecoratorListener, AbstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder abstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder, AbstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver abstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver) {
decoratorProxyBean.setProxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter(this.proxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter);
return new AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter();
}
transient native private final synchronized volatile protected static DecoratorSingletonIterator decoratorSingletonIterator(ObserverSingletonListenerFactoryFactoryBuilder observerSingletonListenerFactoryFactoryBuilder, VisitorDecoratorSingletonObserverFactory visitorDecoratorSingletonObserverFactory, AbstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory abstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory, FactoryVisitorProxyDecoratorListener factoryVisitorProxyDecoratorListener) {
factoryInterceptorListenerSingletonFacadeDecoratorAdapter.setAbstractBuilderDecorator(this.abstractBuilderDecorator);
InterceptorProxyFacade interceptorProxyFacade = new InterceptorProxyFacade();
abstractAdvisorAdapterVisitorBean.setAbstractAdapterObserver(this.abstractAdapterObserver);
abstractInterceptorListenerBuilderSingletonAdapterStrategyFactoryAdvisor.setAdvisorStrategyDecorator(this.advisorStrategyDecorator);
return new DecoratorSingletonIterator();
}
synchronized volatile private final protected public static native transient AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade abstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade(ObserverListenerBeanFactoryFactoryAdvisor observerListenerBeanFactoryFactoryAdvisor, ProxyObserverVisitorFactoryBuilderDecoratorStrategy proxyObserverVisitorFactoryBuilderDecoratorStrategy, AbstractBeanInterceptorObserverAdvisor abstractBeanInterceptorObserverAdvisor) {
abstractStrategyFactoryFactoryBeanVisitorBuilderSingleton.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
AbstractListenerAdvisorSingletonObserver abstractListenerAdvisorSingletonObserver = abstractBuilderDecoratorVisitorFactoryBeanProxyFacadeSingleton.getAbstractAdapterProxyBuilderFacadeListenerAdvisorInterceptorFactory().getAbstractListenerAdvisorSingletonObserver();
return new AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade();
}
volatile static transient public native protected AbstractListenerBuilderAdvisorProxyVisitorFacade abstractListenerBuilderAdvisorProxyVisitorFacade(DecoratorSingletonAdvisorFactoryInterceptorListenerBuilder decoratorSingletonAdvisorFactoryInterceptorListenerBuilder, AbstractDecoratorBuilderBeanListenerSingletonObserver abstractDecoratorBuilderBeanListenerSingletonObserver) {
AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter abstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter = new AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter();
adapterAdvisorDecoratorFacadeProxy.setAbstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory(this.abstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory);
return new AbstractListenerBuilderAdvisorProxyVisitorFacade();
}
private final public static volatile transient synchronized protected InterceptorSingletonVisitor interceptorSingletonVisitor(AbstractDecoratorStrategyProxyObserverInterceptorBuilder abstractDecoratorStrategyProxyObserverInterceptorBuilder, AbstractVisitorAdvisorFacadeListener abstractVisitorAdvisorFacadeListener, VisitorFactoryFactoryBuilder visitorFactoryFactoryBuilder, VisitorProxyFacadeFactoryFactorySingletonAdvisorDecorator visitorProxyFacadeFactoryFactorySingletonAdvisorDecorator, AbstractAdvisorBuilderDecoratorInterceptor abstractAdvisorBuilderDecoratorInterceptor) {
AbstractProxyAdvisor abstractProxyAdvisor = abstractFactoryFactoryDecorator.getListenerInterceptorFactoryFactory().getAbstractProxyAdvisor();
AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory abstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory = new AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory();
abstractBeanAdvisorSingletonInterceptor.setAbstractFactoryFactoryAdvisorFacadeStrategy(this.abstractFactoryFactoryAdvisorFacadeStrategy);
AbstractAdvisorProxyStrategyIteratorVisitorObserver abstractAdvisorProxyStrategyIteratorVisitorObserver = new AbstractAdvisorProxyStrategyIteratorVisitorObserver();
if (abstractSingletonFacadeFactoryObserver.isInterceptorListenerFacade()) {
iteratorProxyListenerFacadeBean.setAbstractStrategyBean(this.abstractStrategyBean);
AbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor abstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor = abstractBeanInterceptorIteratorListenerFactoryFactoryStrategyProxyObserver.getAbstractObserverFacadeListenerSingletonProxyAdvisorStrategyVisitor().getAbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor();
abstractProxyBuilderVisitorSingleton.setIteratorAdvisorProxySingletonAdapter(this.iteratorAdvisorProxySingletonAdapter);
if (abstractDecoratorAdapterVisitorProxyObserverIteratorBuilderFactory.isDecoratorFactoryFactoryFacade()) {
visitorIteratorObserverProxyAdvisor.setAbstractObserverSingletonProxyAdvisorBuilderDecorator(this.abstractObserverSingletonProxyAdvisorBuilderDecorator);
singletonFacadeAdapterListenerFactory.setAbstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory(this.abstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory);
while (abstractFactoryAdapterSingletonFactoryFactory.isAbstractStrategyFactory()) {
abstractAdapterBeanStrategySingletonAdvisorBuilderListenerFactory.setAbstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver(this.abstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver);
abstractObserverAdapterFactoryFacadeDecoratorBuilderInterceptorFactoryFactory.setAdvisorIteratorFactoryProxyDecorator(this.advisorIteratorFactoryProxyDecorator);
while (abstractFacadeListenerStrategyIteratorAdvisorSingletonProxyObserver.isVisitorDecoratorInterceptorIteratorAdapter()) {
abstractProxyAdapterInterceptorObserverFactoryFactoryIterator.setSingletonFactoryFactoryProxyIteratorStrategy(this.singletonFactoryFactoryProxyIteratorStrategy);
singletonInterceptorDecorator.setAbstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade(this.abstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade);
visitorFactoryFactoryAdapterIteratorInterceptor.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
}
}
} else {
abstractListenerInterceptorStrategyVisitorBeanFactorySingletonIterator.setAbstractProxyStrategy(this.abstractProxyStrategy);
abstractProxyInterceptorSingletonFactoryFactory.setAbstractSingletonIterator(this.abstractSingletonIterator);
}
} else {
singletonListenerFactoryFactoryIteratorProxy.setAbstractObserverProxyIteratorVisitor(this.abstractObserverProxyIteratorVisitor);
}
return new InterceptorSingletonVisitor();
}
native volatile static final public AbstractSingletonObserver abstractSingletonObserver(AbstractBuilderFacade abstractBuilderFacade, ListenerBuilderVisitorFactoryStrategyAdvisorFacade listenerBuilderVisitorFactoryStrategyAdvisorFacade) {
builderObserverIterator.setAbstractProxyBuilder(this.abstractProxyBuilder);
AbstractInterceptorAdapterFactoryAdvisorStrategyProxy abstractInterceptorAdapterFactoryAdvisorStrategyProxy = abstractDecoratorInterceptor.getStrategyObserverListenerVisitorBean().getAbstractInterceptorAdapterFactoryAdvisorStrategyProxy();
AbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator abstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator = abstractFactoryIteratorStrategyVisitor.getAdvisorBuilderVisitorBeanIterator().getAbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator();
while (facadeStrategyObserver.isAbstractFactoryFactoryFactoryListenerVisitorIteratorSingletonBeanAdvisor()) {
abstractFactoryFactoryAdvisorFactoryInterceptorIteratorObserverProxyBuilder.setIteratorAdvisorBeanBuilderProxy(this.iteratorAdvisorBeanBuilderProxy);
AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter abstractIteratorFactoryFactoryFacadeObserverVisitorAdapter = new AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter();
abstractVisitorObserverBeanSingletonBuilderProxyFacadeIterator.setAbstractProxyFactoryAdapterFactoryFactoryInterceptorIterator(this.abstractProxyFactoryAdapterFactoryFactoryInterceptorIterator);
}
return new AbstractSingletonObserver();
}
transient volatile static private synchronized AbstractFactorySingletonFacadeProxyFactoryFactoryIterator abstractFactorySingletonFacadeProxyFactoryFactoryIterator(ObserverInterceptorAdapter observerInterceptorAdapter, AbstractInterceptorIteratorListenerFacadeDecoratorVisitor abstractInterceptorIteratorListenerFacadeDecoratorVisitor, FactoryDecoratorBeanAdapterProxy factoryDecoratorBeanAdapterProxy, SingletonAdvisorFacadeBuilderStrategy singletonAdvisorFacadeBuilderStrategy) {
AbstractBuilderIterator abstractBuilderIterator = new AbstractBuilderIterator();
iteratorSingletonDecoratorVisitorAdvisorFactoryFacade.setAbstractDecoratorAdapterListenerBuilderFacadeIterator(this.abstractDecoratorAdapterListenerBuilderFacadeIterator);
return new AbstractFactorySingletonFacadeProxyFactoryFactoryIterator();
}
synchronized volatile protected native private DecoratorStrategyBuilderListenerSingleton decoratorStrategyBuilderListenerSingleton(ObserverBuilderFactoryFactory observerBuilderFactoryFactory, AbstractStrategyDecoratorFacadeVisitor abstractStrategyDecoratorFacadeVisitor, AbstractAdapterIteratorListenerBuilderFactoryVisitor abstractAdapterIteratorListenerBuilderFactoryVisitor, AbstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator abstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator, AbstractStrategyFactoryFacadeVisitorListenerBean abstractStrategyFactoryFacadeVisitorListenerBean) {
advisorStrategySingleton.setAbstractSingletonObserverAdapterDecorator(this.abstractSingletonObserverAdapterDecorator);
return new DecoratorStrategyBuilderListenerSingleton();
}
}
Миддл - это не тот, кто делает миддловые таски. Джун плохо делает миддловые таски, миддл делает их хорошо.
Если тебе не нравится, то зачем ты выбирал тырпрайз?
Эта паста появилась задолго до копилота, да и задолго до того, как все ебанулись с этим вашим вкатом в айти.
Если это --- не бред чьего то скудного интеллекта, не вывозящего тьюринг-тест, то что это? Как рофл от организма разумного --- кг/ам.
Что значит мидл делает мидловые таски хорошо? А джун плохо что ли спустя какое-то количество времени? Если ревью проходит решение и одного и второго, то разницы нет, как по мне. Не надо мне рассказывать, что мидлы по большей части сидят чет выдумывают эдакое, чтоб максимальную пользу проекту принести
6:00 падьем
6:10 атжуманя
6:20 бегить
7:00 джавараш
10:00 писать круды
13:00 сматрить евгиний барисов
14:00 - 22:00 такси работа
22:00 атбой
Ревью - только часть реальности. Иногда ревьюишь костыли, написанные джунами, понимаешь, какие проблемы это может вызвать в будущем и всё равно приходится мержить, потому что до релиза совсем мало времени.
Ну да, а че такого
Всегда есть числовой id, генерируемый по автоинкременту, даже если это суррогатный ключ, кажущийся сейчас ненужным.
И отдельно может быть (а может и не быть) уникальное поле с UUID, оно нужно только тогда, когда записями в базе управляет не только база, это могут быть различный импорт-экспорт, интеграция с другими системами, генерация сущностей на клиенте и другие условия, где невозможно централизованно выдавать айдишники по автоинкременту.
Это всё при использовании реляционных СУБД. В нереляционных ебутся как хотят с костылями и без стандартов/соглашений.
У меня на проекте нет числовых, только юиды. Зачем нужны числовые с инкрементом прям обязательно?
А я вот начинаю подумывать о том, что было бы неплохо использовать именно синтетические вычисляемые айдишники, т.к сам по себе айдишник не несет в себе никакой полезной информации, но его, получается, так или иначе, нужно где-то хранить, а если он вычисляемый, то и хранить его не надо, оставив только полезную информацию, дубликатов все равно в таблицах быть не должно, если она вообще нормализована
Так смысл суррогатных ключей в том, что они не зависят от состояния остальных полей.
А так у тебя где то в другом месте хранится айдишник твоей сущности. Ты поменял поле в сущности и айдишник по хешу полей поменялся. И те части приложения, что хранили этот айдишник остались с ничем.
Прям обязательно ничего не нужно. При нагрузках автоинкремент быстрее уидов из-за отсутствия необходимости долго генерировать их через рандом, индексы по ним строятся эффективнее, но в среднем на это можно забить.
>>501788
Отредактировал поле - и все внешние ключи развалились. В лучшем случае будет ошибка с constraint violation, в худшем записи из других таблиц будут молча указывать на что попало.
Так и подумал про генерацию и индексы. Ну и размер ещё у юида больше. Но для моего проекта это не критично.
А не будет ли у автоинкремента проблем, если сущность будут создаваться через несколько инстансов сервиса?
Не будет, каждый инстанс работает в своей сессии, и СУБД сама контролирует, чтобы один и тот же ID не генерировался в разных сессиях, даже если два инстанса одновременно сделают инсерт.
Там какие-то модули непонятные...
Аппроксимируется до интерфейсного программирования как требование.
Да, надо зубрить все паттерны, 10 деревьев, 15 сортировок, 30 классов для ввода-вывода, хоть что-то забудешь - не перезвонят.
Нахуй их учить, даунитос. Ты никогда не пользовался спрингом, свингом, стрингом? java.util? java.io? Ломбоком? Все паттерны на поверхности
Там учить то надо обскурную парашу всякую типа медиатора
На поверхности там только паттерн Магия.
Dependency inversion principle декаплит зависимости между компонентами (не важно какими --- принцип общий для всего что может иметь зависимости и переиспользоваться), разделяя их на два типа: абстракции (компоненты с миниумумом зависимостей, декларирующие цель. В джаве --- обычно интерфейсы) и конкретики (компоненты, описывающие конкретный алгоритм достижения поставленной цели. В джаве это обычно --- класс, имплементирующий интерфейс).
Принцип, общим языком, гласит, что одна конкретика никогда не должна зависеть от другой, равно как абстракция никогда не должна зависеть от конкретики. Вместо этого конкретика должна зависеть от абстракций. На языке джавовых артефактов принцип можно перефразировать так: вместо того, чтобы каплить один класс на другой, лучше выдели у одного класса интерфейс и его уже и используй во втором классе.
А причина существования принципа --- в том, что зависимости это источник волатильности: чем зависимостей больше, тем больше будет вероятность, что зависимый компонент будет рано или поздно поимпакчен (явно или неожиданно) его зависимостями. Когда импакт неожиданный, его еще называют регрессией, и регрессия --- один из самых отвратительных видов баг в софте. Причем эта особенность работает транзитивно: если есть цепочка зависимостей А -> Б -> B, то изменения в В порегрессируют не только Б, но и А. Когда такие цепочки достигают большой длины, регрессий становится настолько много, что отследить их становится настолько сложно, что зашуганная команда разрабов просто перестает трогать эту цепочку (знаменитое "работает --- не трогай"). Кроме того, чем длиннее цепочка зависимостей, тем сложнее ее тестить.
Разрывают ее путем введения абстракции, которую на одной стороне имплементируют, а на другой --- используют: вместо "А -> Б" получается "А -ссылается_на-> Б' <-имплементирует- Б".
Выбор Б' при этом --- отдельное искусство: его нужно выбрать таким, чтобы он был:
1. Стабилен (не часто менялся под гнетом внешних обстоятельств, иначе регрессии от него поползут вниз по графу зависимостей)
2. Независим (любая зависимость --- источник нежелательных регрессий, в абстракциях зависимости крайне нежелательны)
Dependency inversion principle декаплит зависимости между компонентами (не важно какими --- принцип общий для всего что может иметь зависимости и переиспользоваться), разделяя их на два типа: абстракции (компоненты с миниумумом зависимостей, декларирующие цель. В джаве --- обычно интерфейсы) и конкретики (компоненты, описывающие конкретный алгоритм достижения поставленной цели. В джаве это обычно --- класс, имплементирующий интерфейс).
Принцип, общим языком, гласит, что одна конкретика никогда не должна зависеть от другой, равно как абстракция никогда не должна зависеть от конкретики. Вместо этого конкретика должна зависеть от абстракций. На языке джавовых артефактов принцип можно перефразировать так: вместо того, чтобы каплить один класс на другой, лучше выдели у одного класса интерфейс и его уже и используй во втором классе.
А причина существования принципа --- в том, что зависимости это источник волатильности: чем зависимостей больше, тем больше будет вероятность, что зависимый компонент будет рано или поздно поимпакчен (явно или неожиданно) его зависимостями. Когда импакт неожиданный, его еще называют регрессией, и регрессия --- один из самых отвратительных видов баг в софте. Причем эта особенность работает транзитивно: если есть цепочка зависимостей А -> Б -> B, то изменения в В порегрессируют не только Б, но и А. Когда такие цепочки достигают большой длины, регрессий становится настолько много, что отследить их становится настолько сложно, что зашуганная команда разрабов просто перестает трогать эту цепочку (знаменитое "работает --- не трогай"). Кроме того, чем длиннее цепочка зависимостей, тем сложнее ее тестить.
Разрывают ее путем введения абстракции, которую на одной стороне имплементируют, а на другой --- используют: вместо "А -> Б" получается "А -ссылается_на-> Б' <-имплементирует- Б".
Выбор Б' при этом --- отдельное искусство: его нужно выбрать таким, чтобы он был:
1. Стабилен (не часто менялся под гнетом внешних обстоятельств, иначе регрессии от него поползут вниз по графу зависимостей)
2. Независим (любая зависимость --- источник нежелательных регрессий, в абстракциях зависимости крайне нежелательны)
Какие? Пук пукичи? Ну это дааааааа. А ты, видимо, не джавист? Или ты всё таки тоже сейм, тоже пукнул?
Смеялись, когда рассказал, что делал перевод 1 фоллаута от 1С. Ржали с Битьё и Возрождения
А где читать?
Куда возьмут, пчел, куда придется. Ты же, пчелишка-вкатунишка, низшая раса, дерьмо ебанное, никому не нужное ничтожества, хуже червя пидараса. Поэтому кто смилостивится - вот туда
Топ тир: ФААНГ/МАНГА, но тебя вкатуном туда не возьмут
Хай тир: любая компания, кто возьмёт тебя на полный день по ТК
Лоу тир: Все остальные. У тебя опыта нет, а ты еще выбирать вздумал?
Двачую. Лоу тир - это где нужно доплачивать конторе, если у них работаешь
Нет, будешь решать ебанутые задачи про лягушонка Линка с жёсткими алгоритмами.
>>502581
Я конечно понимаю, что когда вы устраивались со знаниями жаба кора и немного сиквеля, то выбирать не приходилось, но у меня парочку офферов уже есть и еще собесов прилично осталось, поэтому и вопрос такой. бтв че такое фаанг? Это типо топ конторы вроде гугла эпла амазона? Если да, то на них понятное дело не претендую, именно варианты российских компаний интересуют, из тех, которые еще остались само собой, хотя против релокейта в русскоговорящую страну ничего не имею. Еще понравилось проходить собесы без ебли с литкодом, они прям так по лайту проходят и достаточно быстро, в общем ——— топ.
Я всем пизжу, что у меня 2 года опыта на проекте с дичайшим легаси и таким же эндиэй.
ААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА БЛЯДЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Для крудов 1с самое заебись, базарю. Там по сути даже из всех операций только read, остальное платформа сама за тебя делает.
1с не язык, говно для старперов дебилов только абски для пятерочек на нем программировать. Не то что божественная джава с таким же спрингом. Бля, да у 1с даже название уебанское. что блять вообще такое 1с? Еще и на русском, значит на язык автоматом за пределами рф всем похуй. Вот java это сорт кофе такой, звучит пафосно, плюс пориджи любят кофе. правда все равно от джавы почему-то веет старостью, но хотя бы не гнилью, как от 1с хуйни. Она еще раньше диски лицензировала с хуевыми играми, фу блядь, фу нахуй. Если кому-то меньше 50 и он решил начать изучать 1с, то с головой скорее всего какие-то проблемы, надо спочно к врачу.
>Если кому-то меньше 50 и он решил начать изучать 1с, то с головой скорее всего какие-то проблемы, надо спочно к врачу.
Не в том дело. Порог вхождения низкий, англюсик учить не надо, работы дохуя(правда бОльшая часть вакансий говно). Вот прикинь, ты такой мамин корзина, пытаешься вкотиться в веб, мамка тебя на работу гонит, а вкатиться никак не получается. И тут, хопа, чудо-вакансия - приходи к нам, мы тебя обучим всему если ты знаешь что такое циклы. Короче, это я пять лет назад, и таких дохуя.
В Москве не знаю, в мухосранях в моё время за еду начинал, 16к гдет.
Неиронично двачую, потыкал как-то на досуге. Всё автоматизировано и заточено под бизнес-круды настолько, что дальше некуда, можно создавать достаточно большие приложения практически без программирования. 1С даст фору всем инфоцыганским no-code платформам. Вообще, немногие знают, что в конфигурации 1С не обязательно программировать на русском языке, там и инглиш поддерживается, впрочем, большинство вообще думает, что там ничего кроме бухгалтерии нет, хотя это всего лишь одна из конфигураций, которых можно создавать сколько угодно.
Правда, есть некоторые проблемы с масштабируемостью, интеграцией с другими технологиями и маленьким сообществом.
У нас в галере большой отдел с 1-сниками. Так у них ни гита, ни таск-менеджера нет - все в платформе их.
Так же, как нет докера, нет тестов(и то и другое в теории есть, но пользуется ими доли процентов, поэтому я уверен, что оно пиздец какое кривое), иде тоже внутри платформы.
И два года назад, когда я начинал вкатываться - я посмотрел на комьюнити и там пиздец. Оно есть, но все какие-то злые и мелочные. Попросить денег за ответ на вопрос уровня стековерфлоу - это если и не норма, но реальность.
Мне кажется русский синтаксис и ограниченность языка ничто по сравнению с ебовым вендор-локингом и отсуствием инструментов. Например для пользования кафкой питонисты им писали прослойки на питоне поверх питонячего клиента.
Короче общался с 1сниками два раза про 1с. И в итоге это мне дико подняло настроение, что обошел 1с стороной и вкатился в жабу.
Но вот если бы вместо begin/end были фигурные скобки, то язык сразу стал бы серьёзным и энтерпрайзным, ага.
Во первых "Процедуры", пиздец просто, максимальнейший антипаттерн выведен как стандартное средство языка (и это только на одном твоем пике), во вторых да, фигурные скобки лучше.
Всё так, 1с это вещь в себе тупа. Аналоговнет гита есть, но он очень убогий. Комьюнити состоит из максимально душных скуфов, которые ненавидят конкурентов, потому что бояться что ты уведешь их клиентов.
Методы в Java никто не использует в чистом виде, почти всегда всё обёрнуто в объект функции для параллелизма и в принципе для удобства. А в твоем гипертрофированом КуМире есть такое?
>обёрнуто в объект
>объект функции
>для параллелизма и в принципе для удобства
Шта?
Бля, если б здесь было просто написано что в джаве не существует методов без классов, я б просто мимопрошел, но вот эта вот тирада вызывает столько вопросов, что не знаю даже с чего начать :\
Да и в целом у вас тут намечается зачотная ветка, с процедурами-антипаттернами. Чем вы там упарываетесь, поделитесь?
Мимокрок
> Методы в Java никто не использует в чистом виде, почти всегда всё обёрнуто в объект функции для параллелизма и в принципе для удобства
Ебанулся?
>Статикодрисня
Обрати внимание --- я сказал "часть класса", а не "часть обьекта". Статики --- первый случай, они не существуют без класса.
Фактически ничего не меняет его приписанность к классу. Кроме того, есть ещё одна дрисня под названием статический импорт.
Слит.
Не скажи. От классов в джаве так просто не уйдешь: хоть укодься на статиках --- пока класс со статиками не закласслодится, и не выполнится его static-инициализация, статики выполняться не начнут.
Он на буржуйском языке!
На хохлине можно вроде без классов в синтаксисе писать.
Там тоже самое все с класслоадерами, просто скрыто?
Вот думаю учить котлин, чтобы на нет так же на спринге шарашить или нет.
Из спрингового кода в интернете не так мало на котлине - процентов 10 наверно.
А как ебать байты указателями?
Я бы выпилился нахуй.
Аппаратная JVM.
Более чем годное. Знакомый в сбере работает за 110к, но у него опыта уже 1.5 года.
>как ты на собесы БЕЗ ОПЫТА залетел, зеленый?
В понедельник собеседовался на стажера за 25 тысяч в месяц. Целый час решал алго задачи. Пока что HR молчит, никакого фидбека тоже не дали. Видимо придется идти проситься в другую помойную контору взять за еду...
Как по мне, 100 - середина рынка зп для ждуна сейчас. Мне предлагали и 130 до вычета я без попыта. Думаю, можно выпросить и 140 или 150 но я не смог, хотя не каждый сможет раскошелится, сейчас конечно сотка, это вообще не то же самое, что сотка год назад, когда я заканчивал универ и почти все мои знакомые с ит факультета уходили работать в банки за сотку плюс минус, по хорошему зп бы поднять уже для жава ждунчиков.
>Чел, никаких подниманий зп больше не будет, забудь об этом. Не в то время живем.
Да всё уже, закончилась сво-шиза. Всё вернулось на свои места. И будет спокойно и мирно до 2023.
>закончилась сво-шиза
Как она могла закончиться, если СВО все еще продолжается и будет продолжаться еще долго?
Любое повышение дохода означает взятие на себя дополнительной ответственности.
>Всё вернулось на свои места
>путлер отменил могилизацию
> имплаинг зарплаты хоть как-то зависят от могилизации, а не от разваливающейся экономики
))))))))))))))))))))
>>503556
>какой средний потолок зп у джавистов
Джавистов много, и некоторые сидят в проперженном легаси за еду, а некоторые джобхопают по два раза в год, каждый раз не проседая по деньгам. Так что средний потолок тут такой же средний, как и температура в больнице. Но если уж надо назвать сумму, то назову 300к, не уходя в управление ни в каком виде. Выше либо ты работаешь в редких компаниях, либо начинаешь вести проект/команду, управлять архитектурой или чем-то еще дополнительным к кодингу.
>вообще реальная зп в перспективе
А вот тут уже очень сильно зависит от экономики в целом страны. Так как многие компании уходят, большинство сокращает бюджеты, судя по всему, вакансий и дальше будет всё меньше, и они будут сосредоточены по намного более узкому кругу компаний. Соответственно тут вопрос, как много людей с опытом уедет и как много вкатунов без опыта придет не забывай, реклама быстрого вката в ИТ с "огромными" зарплатами и удаленной работой уже года два везде, а сейчас из России ушло/уходит большое количество компаний в разных секторах. Не думаю, что зарплаты пойдут вниз в абсолютном выражении, может лишь временно и совсем немного, но получить реальную прибавку станет явно сложнее. Нахуя начинать платить тебе 300к, если рядом с тобой еще пять таких же, готовых работать за те же деньги? "Наша команда HR провела исследование рынка IT, и согласно ему, у вас всех уже и так зарплата выше рынка. А теперь работать."
> 300к через 3-5 лет
Когда я был еще джуном, я для себя решил, что в будущем, когда буду сеньором, буду получать 180к. Ведь это настоящая серьезная сеньорская зп. Хуй знает, откуда я взял 180к, но была именно эта сумма. Потом прошел 2014 с 2015, рубль улетел в два раза, а я в какой-то момент стал получать те самые 180к, только будучи мидлом. И знаешь, как-то так похуй было на эти 180к, да и не сеньорские они уже были. Так и с твоим желанием получать 300к. Смочь сможешь возможно, я же не знаю тебя, чтобы утверждать наверняка, но насколько ты будешь им раз через 3-5 лет, это уже точно никто тебе не скажет.
>Какой вообще идеальный план развития с вашей точки зрения для джунчика по годам?
1 год. Пресс Качат
2 год. т) Бегит
3 год. Турник
4+ год. АНЖУМАНЯ
>Всё вернулось на свои места
>путлер отменил могилизацию
> имплаинг зарплаты хоть как-то зависят от могилизации, а не от разваливающейся экономики
))))))))))))))))))))
>>503556
>какой средний потолок зп у джавистов
Джавистов много, и некоторые сидят в проперженном легаси за еду, а некоторые джобхопают по два раза в год, каждый раз не проседая по деньгам. Так что средний потолок тут такой же средний, как и температура в больнице. Но если уж надо назвать сумму, то назову 300к, не уходя в управление ни в каком виде. Выше либо ты работаешь в редких компаниях, либо начинаешь вести проект/команду, управлять архитектурой или чем-то еще дополнительным к кодингу.
>вообще реальная зп в перспективе
А вот тут уже очень сильно зависит от экономики в целом страны. Так как многие компании уходят, большинство сокращает бюджеты, судя по всему, вакансий и дальше будет всё меньше, и они будут сосредоточены по намного более узкому кругу компаний. Соответственно тут вопрос, как много людей с опытом уедет и как много вкатунов без опыта придет не забывай, реклама быстрого вката в ИТ с "огромными" зарплатами и удаленной работой уже года два везде, а сейчас из России ушло/уходит большое количество компаний в разных секторах. Не думаю, что зарплаты пойдут вниз в абсолютном выражении, может лишь временно и совсем немного, но получить реальную прибавку станет явно сложнее. Нахуя начинать платить тебе 300к, если рядом с тобой еще пять таких же, готовых работать за те же деньги? "Наша команда HR провела исследование рынка IT, и согласно ему, у вас всех уже и так зарплата выше рынка. А теперь работать."
> 300к через 3-5 лет
Когда я был еще джуном, я для себя решил, что в будущем, когда буду сеньором, буду получать 180к. Ведь это настоящая серьезная сеньорская зп. Хуй знает, откуда я взял 180к, но была именно эта сумма. Потом прошел 2014 с 2015, рубль улетел в два раза, а я в какой-то момент стал получать те самые 180к, только будучи мидлом. И знаешь, как-то так похуй было на эти 180к, да и не сеньорские они уже были. Так и с твоим желанием получать 300к. Смочь сможешь возможно, я же не знаю тебя, чтобы утверждать наверняка, но насколько ты будешь им раз через 3-5 лет, это уже точно никто тебе не скажет.
>Какой вообще идеальный план развития с вашей точки зрения для джунчика по годам?
1 год. Пресс Качат
2 год. т) Бегит
3 год. Турник
4+ год. АНЖУМАНЯ
>Можно вообще рассчитывать, что дойду до 300к через 3-5 лет
В целом можно, но это сугубо зависит от твоего навыка пиздежа и твоих скиллов. 300к просто так не платили даже в самое жирное постковидное время.
Ну и все, что больше 250к сейчас, это банки и гос. энтерпрайз, где есть помойные проекты, на которых ты можешь деградировать быстро.
200-250к это потолок для среднестатистического джависта в Москве, ИМХО. А так как тебе интересно кодить (а не заниматься всякой хуетой по типу тимлидинга или рисования блок-схем будучи архитектором), то это и есть твой потолок. За 5 лет достигнешь.
С другой стороны, курс развития нашей страны понятен и очевиден, поэтому айти, которое может уехать, отсюда выезжает. Как следствие монополизация рынка айти, меньшее количество работодателей. Гоняться за джава сеньорами, как гонялись в 2021, уже вряд ли будут в обозримом будущем.
Мой совет: особо не рассчитывай на спокойную сытую жизнь, больше инвестируй времени и денег в изучение иностранных языков, в тот же английский и немецкий, плюс учись решать литкод. Не засиживайся годами на помойном легаси в банках (хоть и с хорошей зп). Не иди работать туда, где тебе гарантированно закроют выезд из РФ (тот же гособоронзаказ).
Времена наступили тяжелые, и рассвета не будет еще очень долго, возможно если мы его и увидим, то в старости, либо не увидим вовсе при наших жизнях.
>Там тоже самое все с класслоадерами, просто скрыто?
Класслодеры --- тема JVM. Все, что компилируется в джавовый байткод и запускается на JVM, работает по тем же законам что и джава, это неизбежно. А байткод в свою очередь --- ни что иное как набор класс-файлов.
Другое дело что ты заранее не можешь предсказать, какой байткод компилятор соберет из этих пересахаренных языковых конструкций, поэтому весь этот разговор в контексте не-джавы утрачивает смысл.
Жить и работать нужно так, чтобы в случае пиздеца в стране ты мог в тут же момент уехать куда-нибудь в Грузию/Сербию, подождать там пару-тройку месяцев пока тебе делают визу где-то в Нидерландах или Германии, после чего переехать туда. И все это без потери работы, поиска новой работы, выноса мозгов по поводу того, что ты не можешь работать из-за рубежа, и т. д.
В общем, мобильность наше все. А как к этому прийти, решает каждый сам. В сбере этого трудно достичь, как и во всяких других классических энтерпрайзах.
Ага. У меня по идее примерно то же самое по опыту, просто он несколько специфичный, и не формирует мейнстримные скиллы, которые легко продать.
>>503474
Да ничего особенного, тупо правду, и очень кратко (правда в том, что я по сути хорошо знаю только Core, остальные мои скиллы больше смотрят вглубь (в лоу-лвл и архитектуру), чем вверх (в сторону прикладных фреймворков, с потерей умения создавать что-то "с нуля"))
На самом деле хз соответствуют ли там задачи джуновым, надо будет смотреть, если я приму оффер
Вот есть у меня логика, которая более одного раза использует один и тот же объект, положим, из индексированной коллекции, или тупо геттер какого-то объекта. Начиная с какого количества доступов к одному и тому же айтему, целесообразно его, как говорится, "хэшировать" в локальный скоуп? Вместо
{
list.get;
list.get;
list.get;
}
делать
{
Obj loc = list.get;
loc;
loc;
}
Не заморачивайся на таком уровне микрооптимизаций — компилятор и жвм это сделают лучше тебя. Лучше возьми два правила, когда следует создавать переменную:
1. Если есть вычисления
2. Если это улучшает читаемость
>Если есть вычисления
Как это понимать? Разумеется, то что я получаю какое-то значение подразумевает, что с ним будет что-то сделано, в том числе и вычисления.
> не заморачивайся
делаю такие попытки только в потенциально очень нагруженных местах. само собой если это одноразово делается в каком-то обоссанном конфиге приложения при старте - я тупо забью. Но согласен в том что пути оптимизатора неисповедимы, и большая часть такого дрочева бесполезна.
>Как это понимать?
Если это пустой геттер, то вычислений нет. Если это list.getFirstElementSatisfyingThreeLambdasWithExternalEnrichmentCall(), то вычисления есть.
>в потенциально очень нагруженных местах
Идёшь сюда https://github.com/openjdk/jmh, читаешь, а потом проверяешь свои потенциально нагруженные места для реального понимания, как что будет работать
>Если это пустой геттер, то вычислений нет
>JMH
Спасибо. Но если я знаю что у меня что-то будет вызвано в for 100к раз для разных объектов - я без всяких изучений оптимизаторов и бенчмарков могу понять, что это будет сделано не менее 100к раз.
С первого же list.get. Потому что улучшает читаемость и написание кода.
Смотря на какой уровень легальности метишь. Если уровень "зп в крипте" - то хоть в Нигере находись. А если по ТК РФ там устраивают, то хуй.
Ну разумеется чтение из переменной дешевле чтения из хэшированной коллекции, как иначе? Во втором случае ты пока посчитаешь хешкод, пока по нему найдешь бакет, пока в этом бакете найдешь ключ... а чтение переменной это литералли один опкод в байткоде.
Если есть возможность сохранить и переиспользовать первый гет в локальном скоупе, следует так и сделать. Другое дело что не всегда такая возможность есть --- коллекция может изменяться, изменения могут быть конкуррентны чтению, могут встать вопросы изоляции измениний, вобщем пынимать надо.
Есть что-то встроенное в идею?
Что-то начал путаться в логике.
Так пиши на Java EE 6.
Репорт хохлу-петушарперу за порашу.
+1, tovarisch. Хейт спринга --- это база, спринго-фанбои должны быть преданы публичному порицанию.
Поведай же, друг, от чего пригорело?
В ЦЕЛОМ ОТ ЕГО УЁБИЩНОСТИ!!!!! ЗАЧЕМ ЛЕПИТЬ РЕФЛЕКСИЮ ТАМ, ГДЕ МОЖНО ОБОЙТИСЬ БЕЗ НЕЕ, ОБЫЧНЫМ ООП С ДЖЕНЕРИКАМИ!!!! А КОГДА НЕЛЬЗЯ, СПРИНГ ДЕЛАЕТ ВСЁ НАСТОЛЬКО УЁБИЩНЫМ ОБРАЗОМ, ЧТО ХОЧЕТСЯ НАХУЙ РАЗБИТЬ ЕБЛИЩЕ КАЖДОМУ, КТО ПРИКОСНУЛСЯ К СОЗДАНИЮ ЭТОГО!!!!!!!
Как же знакомо, дружище, как же знакомо. Я тоже считаю что много где можно обойтись без рефлективных выкрутасов.
>ЗАЧЕМ ЛЕПИТЬ РЕФЛЕКСИЮ ТАМ, ГДЕ МОЖНО ОБОЙТИСЬ БЕЗ НЕЕ, ОБЫЧНЫМ ООП С ДЖЕНЕРИКАМИ
А приведи конкретный пример? Как ты себе это видишь? Я просто собираю подобные кейсы, мне интересно.
Чел, какая разница какой синтаксис. Паттерн стратегия, обычные ифы, orElseGet опшионала, свичкейс или еще что. Я про про количество ветвлений, которое сразу не помещается в голове.
Сегодня только появилось время раскурить гайд, который мне скинули выше (https://spring.io/guides/gs/accessing-data-jpa/).
Это пиздец.
>>504148
Ну вот без всей этой залупы с инжектом зависимостей в рантайме (пик 1). И ещё желательно облагородить, чтобы было красиво, как на пике 2.
Ясно. Не скажу что полностью разделяю тейк, ибо ORMы я ненавижу как саму концепцию (в отличие от спринга, в случае с которым я еще готов со скрипом мириться с фреймворком, ненавидя лютой ненавистью его фанбоев). Но понимаю твою боль, товарищ.
Я показал саму базовую базу, как спринг можно было бы облагородить. Я тоже не особо люблю ОРМы, но не могу придумать, чем их заменить. Наверное, их заменить и нечем, только прятать под интерфейсами как-то по умному. А вот автоинжект зависимостей - это зло всех зол, пиздец и говнище.
Я в общем то охуел в основном с пика 1, с какого то абстрактного метода, валяющегося в гиперпространстве, который в мейне не вызывается, которому суётся какой-то абстрактный кастомер репозиторий, созданный из непонятно чего.
Пик 2 это просто мои выебоны, терпеть убогую реализацию от спринга в принципе можно.
Алсо реквестирую, как можно получить CustomerRepository из этого туториала https://spring.io/guides/gs/accessing-data-jpa/ по понятному (CustomerRepository repository = something), не требуя у спринга предоставить его как зависимость?
>не могу придумать, чем их заменить.
JOOQ --- лубовь. Если взять докер, какой нить schema migration типа flyway и JOOQ-кодогенерацию, можно прям на этапе билда сгенерить актуальные JOOQовые классы к своей базе и просто сразу брать все это и лабать через них типобезовасные запросы. Без душных персистенс контекстов, без детачед энтитей, у которых ленивая жопа отваливается чуть что не уследишь, без n+1 от вкатунов. Честный скуль, database-first approach.
Подкинешь по братски какой-нибудь гайд по жуку, типа этого https://spring.io/guides/gs/accessing-data-jpa/ по спрингу, чтобы быстро и понятно?
Но тебе непонятно по тому гайду оказалось.
У тебя изначально реквест был идиотский. За 15 минут что-то понять в спринге.
Спринг это фреймворк для инъекций зависимости в первую очередь. И если ты хочешь понять, как и нахуя - то надо начинать с хмл-внедрения зависимостей. https://www.youtube.com/playlist?list=PLAma_mKffTOR5o0WNHnY0mTjKxnCgSXrZ Смотри 4-13 видео.
С гайдом непросто, каюсь. Я все колхозил сам: у меня была связка из самопаисного мавен плагина который подымал мне пустую БД в докере, используя testcontainers, flyway-maven-plugin который накатывал актуальные схемы на поднятую БД, и jooq-codegen мавен плагин, который брал БД и генерил на ее основании JOOQовые классы. Получившиеся сорцы компилировались и упаковывались в джарник, а дальше просто берешь этот джарник, заводишь DSLContext на базе своего дата сорца и делаешь brrrrrr.
Самописный плагин пока открыть не дали, но его впринципе написать не так сложно. Или можно поискать замену. Testcontainers мне зашел тем, что он сам за собой чистит все контейнеры когда процесс, их запустивший, заканчивается.
Мы так же делаем. Разве что докеры руками из докер-компоузов поднимаются.
Я где-то читал, что жуковские классы можно напрямую генерить из скриптов миграций? Не пробовал такое?
>>504202
Почитал это https://habr.com/ru/post/488522/ не намного лучше голого sql, точно также ручками придётся собирать репозитории.
>>504228
>У тебя изначально реквест был идиотский. За 15 минут что-то понять в спринге.
Я уже имел представление о том, что такое спрингопараша и с чем ее едят, так что реквест выполнился, я понял, как натянуть jpa со спрингом на бд и работать с этим.
Не пробовал. Я не очень доверяю этому способу. Как он будет работать? Через что? Через какую то эмуляцию БД? Мне проще по честному БД развернуть и значть что все будет как в проде.
Намного лучше. Тут маппинг типов и имен колонок по их названию и поэтому типобезопасность. Я писал петы на голом ждбс и на джбс темплейте. Ебля с роумапперами требует больших трудозатрат.
Я --- принципиальный противник хранения генерируемых классов в гите. Неважно каких --- JOOQовых или нет, если сорцы генерируемы, они должны оставаться генерируемыми. Генерируемые сорцы всегда генерирую в target/generated-sources (в случае мавена).
Обычно их сохраняют, чтобы иметь возможность делать в них свои правки, и я стремлюсь пресекать такую инициативу на корню. Потому что в долгосрочной перспективе команда 100пудово либо проебет момент, когда эти классы должны были быть перегенерены, либо забудет после перерегенерации перенести свои фиксы. И это будет повторяться снова, и снова, и снова, и обязательно по закону подлости будет происходить тогда, когда придет время релиза. Либо аукнется позже в проде.
У нас хранят, но никто ничего в них не правит. Не могут на ci-cd настроить генерацию. Пытались, но то-то у них там не вышло. Так как я в сисидях не шарю совсем - приходится хранить генереный код в src
Так че тебе не нравится в спрингопараше? Репошку эту из контекста можно кучей способов достать. Этот просто самый компактный.
Бля, чёт затупил нахуй. Спасибо.
Box может содержать в себе много Product, @OneToMany
Запушишь в отбренченную, она сама создастся в ремоуте. Если я правильно все помню.
Я сделал пуш, и в гитлаб залилось отдельной, новой origin веткой, или хуй знает что это, а мне надо было пушить в рабучую ветку, куда пушат все.
Бамп
Refresh может быть? UPDATE нет. И почему именно UPDATE, можешь объяснить по человечески что каждый из них делает?
В гитлабе создался новый бренч, с одним коммитом. А я хотел чтобы как бы моя ветка запушидась туда, откуда я ее отбренчевал. Всего в гитлабе 2 ветки было, куда все пушат, и я создал вот эту хуйню 3-ей веткой.
Гспди, 3 ответа и все дегенератские. Полон джава тред "синьоров".
Во-первых, ставишь ManyToMany, потому что один и тот же вид продукта может присутствовать во многих коробках, и одна и та же коробка может содержать разное кол-во продуктов. В CascadeType конкретно для удаления ничего не надо ставить, при удалении коробки продукты и так не удалятся
Чел, когда хочешь спросить, пишешь вступительное и сразу же вопрос. Це азы корпоративной переписки, привыкай, потому что ты не заставляешь собеседника ждашь самого вопроса. Че хотел?
>по хорошему зп бы поднять уже для жава ждунчиков
По хорошему да, в реальности рынок сужается начиная с февраля. Большая часть айти уехала из России и продолжает уезжать...
Но продукт это не вид, а конкретный продукт, то есть он может лежать только в одной коробке, очевидно. Если каскад тайп вообще не прописывать, при удалении коробки товар перестанет ссылаться на коробку и ссылка на коробку будет null? Я такое поведение хочу, вот мой код:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@With
public class Box {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private String id;
@OneToMany
private List<Product> products;
}
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@With
public class Product {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private String id;
private String name;
@ManyToOne
private Box box;
}
Но продукт это не вид, а конкретный продукт, то есть он может лежать только в одной коробке, очевидно. Если каскад тайп вообще не прописывать, при удалении коробки товар перестанет ссылаться на коробку и ссылка на коробку будет null? Я такое поведение хочу, вот мой код:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@With
public class Box {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private String id;
@OneToMany
private List<Product> products;
}
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@With
public class Product {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private String id;
private String name;
@ManyToOne
private Box box;
}
Там выше обсуждение просто. Мне надо запушить изменения в девелоп ветку, на шитлаб, туда пушат все девелопы. Я склонировал проект в идею и сделал бренч от девелоп ветки. Продлил ее и сделал пуш. Я предполагал что пушусь в девелоп ветку, обратно. Вместо этого в гитлабе создалась вот такая хуйня origin/фича, отдельной веткой. Как это исправить?
Это всё со Spring JPA
никак создаешь пул-реквест из фича ветки в девелоп с галкой удаления фича ветки и скидывешь этот реквест ревьюверу.
>Но продукт это не вид, а конкретный продукт, то есть он может лежать только в одной коробке, очевидно.
Зачем тебе тогда вообще оставлять продукт, если он может принадлежать только одному заказу? Зачем их хранить в БД, если они уникальны и могли были быть только в одном заказе и больше ни в каком больше? Ты либо крестик сними, либо трусы надень.
Ну епртс, мне просто нужно хранить товары в коробках, усё. Зачем наезды, я же нормально попросил. Так как это сделать и будет ли работать мой код?
А как это сделать? Вот ветка. feature-666, надо спушить в develop. Что в консоли написать и в гитлабе, я должен в ручную пулл-реквест создать? И ту , старую origin/feature-666, в гитлабе удалить? Тогда и мои локальные изменения поедут. Я делал всё идеевским клиентом, понадеялся на него, зря.
В гитлабе вручную сделать мердж-реквест. Из идеи создать мр нельзя(можно с платным плагином). Погугли как, это просто.
А я этот мердж реквест могу сделать из моей кривой ветки? (origin/feature-666) Или надо как-то через терминал хуй знает как ее переносить?
Ну тогда делай по кальному. Говорю, как будет выглядеть метод удаления коробки: достаешь коробку, достаешь у неё лист продуктов, проходишься по листу продуктов в форыче и каждому продукту в поле box сетишь null, после чего пересохраняешь продукт. И только после этого удаляешь коробку, и тогда у тебя остаются продукты с полем box, равным null.
Если бы у тебя была не bidirectional связь, иными словами, если бы ты не оставлял ссылку в классе продукта на box, тогда бы обошелся без этой бы ебли и просто бы удалил коробку, продукты бы остались без всяких каскадов. А так, т.к. у тебя двунаправленная связь между сущностями коробки и продукта, так нарушалось бы целостность и выбрасывался бы exception
>Ну тогда делай по кальному. Говорю, как будет выглядеть метод удаления коробки: достаешь коробку, достаешь у неё лист продуктов, проходишься по листу продуктов в форыче и каждому продукту в поле box сетишь null, после чего пересохраняешь продукт. И только после этого удаляешь коробку, и тогда у тебя остаются продукты с полем box, равным null.
Я думал, для этого существуют штатные методы, и мне не придётся ручками это говно трогать.
> как можно получить спринговый репозиторий без спрингового контекста
Прямо то, что ты хочешь, в рамках spring data никак. Однако есть возможность добавить свои реализации методов поверх тех, что за тебя реализует спринг
А почему ты так не хочешь брать его как зависимость? Он лежит себе в контексте, никому не мешает. Потребовался — достал и используешь
Открываешь ПР МР по гитлабовскому и мержишь свою ветку в целевую.
А для понимания, что ты вообще делаешь, почитай что-нибудь типа https://www.atlassian.com/git/tutorials
Да я просто затупил, ничего плохого в контексте нет. Раз уж ты тут, подскажи, есть ли штатные методы в спринге для удаления коробки >>504435? Или может чем можно спринг дата заменить, чтобы вот такое вот бойлерплейтить не пришлось, или чтобы там был ООП, чтобы я мог сам добавить что угодно без залезания в дебри рефлексии, процессинга аннотаций, и всей этой залупы.
thnx bro
"Скопировать" коммит из одной ветки в другую.
Говорят можно удобно использовать для мониторинга и для трейсов.
Че такое трассировка сервисов?
Что думаете, может Котлин поучить, чтобы потом поменять работку на место потеплее и за х1.5?
Ты охуел тут шарпохуйню упоминать? Брысь отсюда под шконку, петушарпер
Никакой.
Реактивный проявляет себя лучше там, где требуется выполнять сотни тысяч запросов в секунду, но девелопить на нем сложнее на порядок. В остальных случаях берут всем привычный стек на сервлетах и не выебываются --- он простой и всем привычный.
Проблема в том, что я все время работы использовал свой личный гитхаб репозиторий для удаленного хранения проектов. Есть ли способ как-то, желательно в Intellij, отвязать проект от гитхаба, чтоб не осталось никакой связи с ним? И есть ли способ вообще пидорнуть гит из проекта (на случай если я вообще решу не оставлять истории и коммитов привязаных на мой личный ящик), тоже желательно через Идею? (если просто снести .git директорию, то идея скажет что проект подпортится, ибо какие-то там конфиги проекта останутся настроены на связь с гит)
>в спринге
Это не задача спринга, это задача ORM. Почитай про cascade и выбери, что тебе там нужно https://www.baeldung.com/jpa-cascade-types. Можешь банально всё перебрать и посмотреть, какой будет результат. И это всяко полезнее будет, чем если тебе просто скажут ответ на каком-нибудь форуме для маленьких девочек
>>504455
-> >>504442
>>504472
Судя по тому, как ты рассуждаешь, у тебя около года опыта, так? Поучи пока что БАЗУ и сам спринг. А синтаксис языка приложится, тем более что просто переехать на котлин, не используя его уникальных относительно жабы фич, можно за два вечера.
>>504474
Тот, который подходит под твои требования и ограничения, вызванные используемыми либами. Потому что иначе ты будешь тратить больше времени на говнокопание, чем на полезную разработку. Если ты смотришь с целью дальнейшего трудоустройства и по этому принципу выбираешь между вакансиями, то скажу так. В традиционном будет всё примерно одинаково, а в реактивном будет стильно-модно-молодёжно, но с вероятностью в 80% ты попадёшь в компанию, где спринговый подход не осилили при смене стека, и начали лепить костыли на ровном месте.
>>504546
Как же вы заебали. Иди туториал по гиту почитай, тут ни жава, ни идея не имеют отношения к делу.
-> >>504442
Надо в этом треде автоскрытие по слову "гит" настроить
Ебать ты половине треда ответил одним постом.
Исхожу из того, что на проекте используется сборщик. Тогда следом за папкой .git дропаешь папку .idea, и рестартуешь IDE. Все, гита на проекте нет, идея не бузит. Если задача стоит грохнуть проект на гитхабе --- логинишься на гитхаб, идешь в settings проекта, листаешь в самый низ, там есть кнопка "удалить проект".
Микросервисы — это набор сервисов, которые деплоятся независимо друг от друга. А как именно это организовано, несколько отдельных репозиториев или один большой монореп https://monorepo.tools/#what-is-a-monorepo, тут уже зависит от команды. Самое главное — возможность независимого деплоя отдельных сервисов при изменениях в них
Каждый war и ejbjar - это микросервис, и они все упаковываются в ear.
>Поучи пока что БАЗУ
Можешь накидать кейвордов, что ты считаешь самым попсовым в базе и спринге?
Да, опыта около года, сейчас читаю статьи и книжки по базам и микросервисам. Ну нынешние книжки дочитаю месяца через 3, думаю что дальше читать. Или лучше не читать, а что-то более практическое, взять туториалы по какой нибудь хуйне и пет написать. Один из вариантов хуйни был котлин.
Если сервисов немного и проект небольшой - то в отдельных репошках, монорепо это дополнительные навороты.
Есть много опций. Но я не рекомендовал бы сразу пускаться бить микросервисы по отдельным гитовым репам: чем больше репов, тем больше оверхеда на их содержание. Чем больше репов, тем больше возни с релизом, CI/CD, мерж-реквестами. Когда большое количество репов обслуживает одна не очень большая команда, участи этой команды обычно не позавидуешь.
ИМХО там засели соевые евангелисты, которые просто поленились проанализировать мавен по своим же критериям. Если сделать это самому, можно обнаружить что мавен ничем не лучше и не хуже всего остального.
Не, сами проекты на гитхабе мне нужны полностью сохранными - я их использую как резюме, в частности (ибо там все проекты полностью мои). Да и вообще там довольно прикольные штуки.
>>504669
>используется сборщик
Кринжово, но нет. Я юзал менеджер сборки проекта самой идеи в почти всех случаях.
Ладно, как нибудь разберусь
>>504631
>Надо в этом треде автоскрытие по слову "гит"
Надо автоскрытие всяких токсиков поставить. Отношение к Intillij это имеет, так что и в какой-то степени к джаве. Ваш спрингопиздежь тоже не имеет отношения к самому языку, если уж быть точным, никто же вас за него хуями не кормит.
>Не, сами проекты на гитхабе мне нужны полностью сохранными
И? git remote remove origin их и не удалит. Он удалит только связь твоего локального репа с гитхабным --- пушить больше не сможешь. Звучит аккурат как то, что тебе нужно:
>отвязать проект от гитхаба, чтоб не осталось никакой связи с ним
Вообще --- в целом непонятно чего ты добиваешься. Как гит и гитхаб коррелируют с твоей инициативой мигрировать из одной пораши в другую?
Есть мысли по поводу технологий для пета мидловского уровня?
3-4 микросервиса на спрингбуте, кубер и деплой в публичное облако? Можно что-то из спринг клауда(service discovery интересным показался) притащить. Вроде кубер и aws это популярный кейворд в мидловых/сеньковских вакухах. Может замена aws на рфные облака, хз че там с амазоном из-за санкций.
Ну про кубер, aws и спринг-клауд я вообще ничего не знаю, кроме общих концепций зачем они.
А с другой стороны там много околодевопсовских штук придется делать, да и вообще такие технологии не совсем для петов.
>что ты считаешь самым попсовым в базе и спринге?
Для самого начала как БАЗУ посоветую прочитать про эту самую базу. А именно реляционные базы данных. Как можно работать с БД, что за индексы, оптимизации, транзакции вот тут ты очень сильно зайдёшь на территорию спринга и сможешь разом охватить еще пару-тройку тем, если не поленишься, да и какие вообще есть БД. Для чего нужны все эти sql и nosql и что же выбрать а вот тут ты прямо сходу влетишь в распределенные системы и понимание транзакций поможет. И сразу же ответишь себе на 700% вопросов о микросервисах и как их строить. Понимая банальные ограничения той или иной технологии БЕЗ привязки к реализации весьма полезно
>взять туториалы по какой нибудь хуйне и пет написать
Если хочешь понабраться кейвордов и джобхопнуть через полгода на х1.5 без понимания, что делаешь, то хороший вариант. Плюсы очевидны, но есть неиллюзорная возможность нахуевертить на очередной работе такого говна, что самому стыдно будет. Я так с одним айос-синьор разрабом работал, так он для валидации вводимого числа на >0 проверял строки, и в итоге "0" и "0.00" у него не проходило, а "0.0" и "0.000" проходило. Вот даже если ты будешь чисто по туториалам учиться, старайся не запоминать, а понимать
>>504798
Вообще похуй на технологию. Кинул первую ссылку гугла, чтобы кейворды были
>>504813
>Отношение к Intillij это имеет, так что и в какой-то степени к джаве
В /hw напиши, что у тебя компуктер сломался. В какой-то степени же тоже имеет отношение
Ну а если ты всё еще не разобрался, не смог прочитать туториал и не сумел воспользоваться правильным советом >>504676, то и пухом, куда ты лезешь, блядь, иди в zero-код тред
>>504828
>Есть мысли по поводу технологий для пета мидловского уровня?
Лишь бы интересно было, иначе забросишь же.
>3-4 микросервиса на спрингбуте, кубер и деплой в публичное облако
Заебись, разрешаю. Алсо, обычно от мидлов не ждут досконального понимания, как там что разворачивается, так что общего понимания и умения что-то развернуть в миникубе хватит для 99% вакансий. Оставшийся 1% будет кукарекать про "you build it you run it" для каждого члена команды, забывая про всё остальное.
>что ты считаешь самым попсовым в базе и спринге?
Для самого начала как БАЗУ посоветую прочитать про эту самую базу. А именно реляционные базы данных. Как можно работать с БД, что за индексы, оптимизации, транзакции вот тут ты очень сильно зайдёшь на территорию спринга и сможешь разом охватить еще пару-тройку тем, если не поленишься, да и какие вообще есть БД. Для чего нужны все эти sql и nosql и что же выбрать а вот тут ты прямо сходу влетишь в распределенные системы и понимание транзакций поможет. И сразу же ответишь себе на 700% вопросов о микросервисах и как их строить. Понимая банальные ограничения той или иной технологии БЕЗ привязки к реализации весьма полезно
>взять туториалы по какой нибудь хуйне и пет написать
Если хочешь понабраться кейвордов и джобхопнуть через полгода на х1.5 без понимания, что делаешь, то хороший вариант. Плюсы очевидны, но есть неиллюзорная возможность нахуевертить на очередной работе такого говна, что самому стыдно будет. Я так с одним айос-синьор разрабом работал, так он для валидации вводимого числа на >0 проверял строки, и в итоге "0" и "0.00" у него не проходило, а "0.0" и "0.000" проходило. Вот даже если ты будешь чисто по туториалам учиться, старайся не запоминать, а понимать
>>504798
Вообще похуй на технологию. Кинул первую ссылку гугла, чтобы кейворды были
>>504813
>Отношение к Intillij это имеет, так что и в какой-то степени к джаве
В /hw напиши, что у тебя компуктер сломался. В какой-то степени же тоже имеет отношение
Ну а если ты всё еще не разобрался, не смог прочитать туториал и не сумел воспользоваться правильным советом >>504676, то и пухом, куда ты лезешь, блядь, иди в zero-код тред
>>504828
>Есть мысли по поводу технологий для пета мидловского уровня?
Лишь бы интересно было, иначе забросишь же.
>3-4 микросервиса на спрингбуте, кубер и деплой в публичное облако
Заебись, разрешаю. Алсо, обычно от мидлов не ждут досконального понимания, как там что разворачивается, так что общего понимания и умения что-то развернуть в миникубе хватит для 99% вакансий. Оставшийся 1% будет кукарекать про "you build it you run it" для каждого члена команды, забывая про всё остальное.
Не, сам думай.
Для меня экспертиза, начиная с миддловой --- это в первую очередь "способность делать дело от начала до конца без помощи", нежели знание каких то технологий. Дрочить текстек любой дурак может. Миддл ценен именно тем, что способен от начала до конца спроектировать и сделать фичу, задав правильные вопросы правильным людям. Синьор --- то же самое, но в масштабе проекта. Поэтому миддловый пет --- это не менее чем полноценный продукт, который решает какую то конечную задачу, и удовлетворяет нужды каких нибудь людей. Хоть бы даже нужды одного пет-оунера --- уже лучше чем ничего. Если у пета нет цели существования кроме как пощупать стек, это не миддловый пет. Лично в моих глазах он не даст никаких преференций пет-овнеру выше джуниорских.
Поэтому твой вопрос я нахожу некорректным. Но это только мое мнение, кто-то может оспорить.
>>504840
>Лишь бы интересно было, иначе забросишь же.
Это кстати хороший критерий выбора. Делай в качестве пета то, что интересно тебе. Что принесет тебе какой то профит в быту, чем ты сам будешь пользоваться как пользователь. Если ты найдешь такую тему, и будешь честен с собой, ты быстро обнаружишь что для того чтобы сделать что-то действительно хорошо, качественно и удобно для себя, нужно нечто большее чем копипастить со стековерфлоу и задрачивать кейворды.
Спасибо.
>Для чего нужны все эти sql и nosql и что же выбрать
Так то у меня на работе есть несколько носикуль баз, на одной из них я шарашу. Параллельно читаю кабанчика, следующим пунктом у меня книжка по постгресу.
>транзакции вот тут ты очень сильно зайдёшь на территорию спринга и сможешь разом охватить еще пару-тройку тем, если не поленишься
как раз сейчас читаю кабанчика по транзакции. А про спринг с транзакциями это ты о чем? Всякие @Transactional и TransactionTemplate, транзакшинал менеджеры и их кишки? Тут как раз буду переписывать с носикули на постгрес. Если ты об этом, то насколько там глубоко можно зарыться? У коллег стоит @Transactional над сервисами с больше чем одним вызовом в репо и даже без параметров.
>Что принесет тебе какой то профит в быту, чем ты сам будешь пользоваться как пользователь.
Честно говоря с этим большие проблемы. Я даже для вкатунских петов искал наполнение со скрипом. Я как вкатился, так софтом для себя пользоваться стал меньше и на разные сайты ходить тоже.
Да и даже тогда я убил много времени на фронт - ковырял жс, чуть не начал учить реакт. Если для себя, то мне очень много фронта придется ковырять. А фулстечество на рынке не особо нужно.
Проще тогда уж рабочее место грохнуть нахуй. Ну дропнешь ты ремоут --- найдут по почте в истории коммитов. Или по названию проекта. Или по именам пакетов. Заебешься шифроваться, кмк.
Удали аккаунт, а свои проекты перенеси на другой, делов то.
Это обычная ментальная установка анальников - они обожают работать евангелистами и маркетологами за бесплатно. Это даже не лахта, это просто промытки с синдромом утенка. Причём присуще не только шарпистам, но этих почему то именно на двачевом джаватреде много. В цивилизованных местах шарпистов ни разу не видел, но встречал много растаманов и скалистов с такой же установкой.
Скала и раст евангелизм это еще большая шиза. У шарпа хоть большая взрослая экосистема есть. А скала и раст известны тем, что посложнее большинства промышленных языков. Там наверно евангелизм связан с проецированием батхерта от долгих потраченных часов на эти языки.
Пошел нахуй, школоботовод.
Значит, и спрашивать надо в майнкрафт-треде.
А если я сеньер таксист 5 лет попыта?
> Што по пет-проектам для портфолио?
Ничего, это мем вкатышей, при рассмотрении кандидатов на личные проекты всем похуй. Так что их ты пишешь для себя, чтобы закрепить теорию небольшой практикой.
> Нужно ли расписывать в сопроводительном письме как я писал свой говнобложик?
Боже, нет. Если спросят на собесе, рассказываешь за пару минут.
> на каком стеке?
На таком, какой требуют в вакансиях.
Спасибо!
Он сразу стал тимлидом. Был тимлидом на 1с, потом ему дали собрать команду джавистов. Во время 1серства джаву как-то параллельно ковырял, может что-то там поддерживал на джаве в одного, я точно не знаю.
Нет.
Универсального способа не существует, для каждой программы и для каждого сайта надо писать свой алгоритм. Для веба есть Selenium, и это в лучшем случае, если тебе попадётся настолько васянский сайт, что там нет защиты от брутфорса, но ценность данных на таких сайтах стремится к нулю. С десктопными программами есть свои сложности, там надо эмулировать действия клавиатуры и мыши.
Можно пример простенький для веб ?
Если у этого твоего "места" нету SDK который предоставляет прокладку какого-то вида, и нет интерфейса командной строки, то ответ - "никак". Разве что писать что-то вроде эмулятора действий человека, когда ты будешь своей софтине скармливать координаты места на дисплее для логина и пароля, и кнопки входа.
Нет, конечно есть какие-нибудь хакерские приколы, вроде дизассемблирования или того чтоб все это говно разобрать с каким-нибудь CheatEngin-ом и найти места в памяти у процесса хакаемой приложухи, и пробовать туда заносить логин и пароль, а потом как-то найти адрес функции входа и ее запускать (понятия не имею как это делать), но судя по степени тупизны твоего вопроса ты в этом понимаешь еще меньше, и не стоит даже пробовать
А что, все велосипедостроители хуярят пакеты реально привязанные к доменным именам или чему-то такому? Всегда юзаю тупо какой-то сравнительно уникальный длинный нейм, и внутри стараюсь организовать подпакеты. Вероятность что когда-то в одном проекте придется сращивать какой-нибудь myspecialohuennystringprocessor.zalupa.engine.core.utils с другим точно таким же даже наверное меньше чем то что два UUID совпадут.
А чем 1С-ники так плохи?
Если ты пишешь в стол, то да, похуй. Но, например, чтобы распространять свои джарники через мавен централ, ты должен сначала застолбить за собой определенный подсет groupId по доменному имени (при условии что ты владелец этого доменного имени, правда я уже не помню как они это пруфают), и для деплоймента тебе доступен только он. Типа, владелец домена vpupkin.com сможет пушить артефакты с groupId=com.vpupkin.. Ну или еще есть github-based опция для нищебродов. Типа, если ты владелец github-аккаунта vpupkin, то можешь рассчитывать на groupId=com.github.vpupkin..
В любом случае полностью анонимно в цивилизованные места пушиться не выйдет. Более того, помимо вышеописанного, каждый артефакт, идущий в централ, проходит кучу проверок, включающих в себя в том числе то, что в помнике указана ссылка на сорцы и координаты разработчика. И я вот щас с наскоку не вспомню --- может эти проверки включают в себя и проверку того, что пэкеджи соответствуют groupId.
У лобка пакеты начинаются на lombok. Всё равно нормальному проекту никто не даст такое пиздоглазое название.
Я в своих проектах пакеты называю com.example или app, ибо уверен, что никто ими пользоваться не будет.
СУКА! ВОТ ИЗ ЗА ТАКИХ КАК ТЫ, МНЕ ПОСТОЯННО ПРИХОДИТСЯ ЕБАТЬСЯ С СИСТЕМАМИ СБОРКИ, ПЕРЕИМЕНОВЫВАНИЕМ ПРОЕКТА, И ВСЯЧЕСКИ ПЕРДОЛИТЬСЯ ДЛЯ ПОДКЛЮЧЕНИЯ ЭТОГО К СЕБЕ В ПРОЕКТ!
А нахуя ты наши васянские пакеты юзаешь? Они не отвечают требованиям надёжности и безопасности, не говоря уж о полезности фич.
От недержания мочи, вегетососудистой дистонии и давления. А что?
Ламотриджин и детримакс.
У вкатышей сегодня очередная смена в яндекс такси
есть идеи чего-то полезного или хотя бы прикольного?
А ты вообще чьих будешь? Студент яйцеголовый очередной на первом курсе, прошедший уже for/do/while?
Я уже давно изучаю джаву, был даже оффер, но по личным причинам на галере за лавеху грести пока не могу до начала некст года, вот думаю, че б мне такого интересного сделать, чтоб навыки не растерять и мб еще в чём-то полезном разобраться, а то я чет последнюю неделю вообще забил на все, сижу в доте деградирую.
Что такое "грохнуть рабочее место"? Строго говоря, код принадлежит компании, на которую ты работал, и тебя за это полноправно отъебут.
Олсо, решение выдает гугл в первой же ссылке, тупо заходишь в Settings -> VersionControl -> directoriyMapping и сносишь нахуй ссылку на директорию где у тебя .git. Сразу после этого из идеи пропадает все что касается поддержки гита на этом проекте.
После этого идешь в проводнике в директорию и сносишь там саму папку .git, после чего у тебя остается тупо голый код, без всяких коммитов и историй, девственно чистый (главное перед этим всем не забыть зачекаутиться на самое законченное решение в проекте)
да ты же хлебушек ебаный. если выбор стоит между "нихуя" и "му хмрю момжет я мне смправлюсь" следует выбирать второе, ответственность за неудачный выбор все равно будет лежать на нанимателе, а ты бы получал скиллы и еще и деньги за это, а не задрачивал тут сейчас нас тупыми вопросами, чего бы тебе поделать.
>выбирать второе
> му хмрю момжет я мне смправлюсь
Так я это и выбрал, пчел…
Или тебе лишь бы доебаться, а не посоветовать что-нибудь?
Хотя, наверное, на джаве со спрингом мало чего интересного можно придумать, всё-таки язык не для маленьких петиков, а для ебли в тырпрайзе
В дополнение, мне еще пока рано идти на реальный проект, я даже кубернетис пока только в качестве теории знаю, не говоря уже о всяких тонкостях жвм жмм и многопоточки, надо реактовщину хотя бы мельком пощупать, и протестить в своих петах всякие архитектурные решения типо гейтвея, жук посмотреть и прикрутить к пету, популярная нынче технология. С гитом у меня из-за того, что пишу в соло, проблемы имеются, если бы ушел на зп, сидел бы тут и задавал по нему тупые вопросы как челы выше. На самом деле, это только часть того, что я бы хотел еще доучить и только потом идти и писать что-то более-менее серьезное.
>кубернетис
>реактовщину
Ты с нуля в архитектора чтоли вкатываешься? Зачем тебе это все со старта? Иди и не комплексуй --- две трети работодателей что ты встретишь на своем пути сами не знают нихуя из тобою вышеперечисленного.
Просто как мне во всем этом разбираться, будучи уже на проекте? Там же времени свободного сразу станет в разы меньше… На выходных что ли сидеть и учить кубер и тд? Будут же однотипные задачки и 9 кругов ада дебагера каждый час. Так у меня хотя бы будет хорошая теоретическая база и я не засижусь на одном месте на пару лет, да и шансов на норм место изначально будет больше…
Так в том то и дело что база теоретическая. Работодатель в большинстве своем в гробу видел теоретиков, отдавая предпочтение практическому опыту. Если у тебя есть стаж и ачивки, им по большей части похуй будет работал ты с вебфлаксом или нет --- все понимают что при желании чел со стажем вкатится в него как нефиг делать. А по настоящему ценят именно умение пройти через девять кругов дебаггинга, решить задачу и выйти оттуда вменяемым.
На пет проекты почти всем похуй (смотрят на то чоо есть, но это слабо котируется в любом случае)
>>507913
Сыглы
>>507925
Относительно недавно, сел на галеру 6-8 жабы, хотя учил спринг и всё что с ним связано, чел на наставнике (15 лет работает в компании, на джаве писал ещё когда я пешком под стол ходил), не умеет писать стримы и только примерно знает как они выглядят, зато нереально шарит за хибер, glassfish, maven, Jenkins, sql, транзакции, многопоточку и прочее, этот стек тебе пригодится в большем количестве случаев, чем дрочка спринга и прочих новых штук, ибо новых проектов на жабе хрен целых ноль десятых думаю сваливать оттуда, т.к. хоть и прокачиваюсь ощутимо как программист (личинка его точнее), но по проекту, которому 10+ лет нет документации впринципе, а всё знает только он один из 300+ людей в компании, чел нереально душный, вспыльчивый и очень плохо объясняет, тупо закидывает кусками кода, в основном типо разбирайся сам как это работает, почему так и какие подводные и иногда может сам рассказать, плюс отсутствие онбординга впринципе
>glassfish
вряд ли пригодится, этого говна мамонта уже очень мало
>Jenkins
>хибер
может пригодиться, но он этого говна пытаются отказываться.
>многопоточку
нахуй в обычном бекенде не надо.
>maven
пока стандарт, но медленно сдает позиции градлу, но актуально будет еще долго
>sql
>транзакции
Ну это всем бекендерам надо знать. И на спринге и на ее-говне и на любом другом языке. Правда если твой наставник перд он может быть не знаком с кучей новых фишек реляционных баз, типа jsonb или двухфазных коммитов.
На оракле небось сидите в этом вашем легаси?
>На оракле небось сидите
А чем тот же постгрес так хорош, что почти везде используется? Какие вообще преимущества у этой субд? Лично я, хоть и пользуюсь им, никакие фичи именно постгресовские, вроде, не юзаю.
По сравнению с мускулем куча всего. А остальные популярные реляционки - оракл и мс - платные.
Из-за того, что в HTML-файле ты подключаешь скрипты с использованием относительных ссылок без / в начале.
В любом случае, не копай дальше эту тему, в проде это никогда не пригодится.
Пойти в какой-нибудь другой язык.
15 лет в джаве. Ни одного года - в банке. За все это время был проект в сфере биоинформатики, несколько IoT проектов, и даже один СКУД. Нормально все с проектами. Было, по крайней мере, сейчас ещё не успел прочувствовать.
Двачую этого господина. Хоть и не 15 лет, но к банкам не прикасался ни разу, пейсал сервисы обработки всяких данных, конвертеры интерфейсов между системами и прочее такое говно.
Хз как у остальных энтерпрайз систем, но банки плотно сидят на этой игле легаси, кроме, конечно, сбера, тинька и втб
Новые фишки, а что это?))0) кроме хибера ещё mybatis, юзаем named-query для хибера и nativeQuery для батиса
Бд: oracle, postgre и mysql (на всех должна прога уметь работать)
Инжект репозитория в школьниксервис
Правильно делают. Еще в тырпрайзе научились.
Бери уж выше, че. Нейросетью.
На жабе не только лишь банки сидят. Походи по собесам во всякие помойные галеры, наверняка там будут проекты и из телекома, и из каких-то крупных ведомств и контор, которым нужны системы по учету очередной хуиты.
>Так у меня хотя бы будет хорошая теоретическая база и я не засижусь на одном месте на пару лет, да и шансов на норм место изначально будет больше…
Шансов на нормальное место больше, если у тебя уже есть какой-либо опыт. Пока ты вкатун, то будь хоть мастером кубера, будут брать только на самое помойное легаси.
И что там? Жаба 7? Сколько плотят за легаси в банке?
java ee на том же хх.ру 10% вакансий от вакансий со спрингом.
Речь скорее идет про хуйбирнейт. Java EE в старом своем исполнении в виде аппликейшен серверов уже давно мертва.
>>509080
Апп серваки не мертвы если проекту 10+ лет, стек JEE 6-9, JPA,JTA,JMS,JAXB,JAX-RS, JCE, НЕ
Либы я думаю не имеет смысла описывать))
И это не банк если что, это штука/штуки для банков
Вкатился джуном без опыта, за 55 тонн, думаю перекатиться в другую компанию, ибо отсутствие доки впринципе, трекер, легаси, душка и прочие прелести жизни
Кстати был на подобном стеке. И ничего из этого, кроме jaxb в описании вакансий не было. Было написано про спринг. Но от него там только di оказался. Да и то не везде.
В ФАКе написано читать 4 версию Spring in Action. Я начал, но чёт как будто воды дохуя. И оказалось, что 6-я версия тем временем на русском появилась. Так вот, стоит ли дальше 4-ю читать? Или забить, и начать 6-ю, тем более, что на русском всё равно попроще читается, т.к. родной язык.
получается жаба как язык - говно, используемое онли для перекладывания джсонов. а ведь сейчас могли бы писать софт для микроволновок и всего остального, что же жиды из оракла сделали с жабой...
Из вводных - после выпуска из уника в рогах и копытах два года (по сей день) крутил-вертел джангу. Sql, гит, докер и кубернетес знаю. Так же в универе был год шарпов и год джавы, так что с ООП более менее знаком, collections, generics, maven и даже немного spring'a были в курсе, но я мало что из этого помню.
Сколько часов в неделю учил жабу? Есть какие-то лайфхаки (насколько я понял жабакор можно особо не задрачивать и сразу переходить к спрингу)?
Часов 10-15, хз. Я её глубоко не учил, что-то вспомнил с прошлых попыток её изучения, в чём-то быстро разобрался после других языков. Пролистал книжку по кору и сразу начал тыкать спринг по туториалам и курсам на ютубе параллельно с написанием учебных проектов.
Лайфхаки явно не выделяю, интуитивно понимаю, где надо выучить хорошо (коллекции и другой кор), где можно прочитать пару страниц и потом при необходимости вернуться (треды, работа с файлами, ввод-вывод, дата и время, парсинг XML), а где можно забить хуй (swing, локали, иерархия эксепшенов).
2.5 года учу жабу, до сих пор не вкатился. Но ты уже вкатился, думаю за полгода осилишь обучение. Сколько времени на перекат в жабу уйдет я даже не знаю. Наверное от месяца до полугода прибавляй к 6 месяцам изучения.
>>509124
Современный java ee (9 и 10) кстати вполне юзабелен, но увы в основном java ee6 используется, если уж про ee говорим.
>>509124
>если проекту 10+ лет
А много вообще таких на рынке? Я вот ни разу не встречался. Самое старое что я помню из своей практики, это третий спринг с xml и 7 жаба, правда кое-где там уже восьмерка была.
> используемое онли для перекладывания джсонов
Это факт, у каждого языка своя ниша.
Ты же не жалуешься, что твои парсеры сайтов не пишут на С, С++ или Расте, или что джаваскрипт никто всерьез не использует в микроконтроллерах.
>жаба как язык - говно
Нет, язык как раз задизайнен нормально, кроме разве что дженериков, которых изначально не было.
Многие языки не используются для того, для чего был изначально предназначены, ибо рыночек порешал.
И ещё рактика показала, что чем универсальнее язык - тем сильнее он сосёт во всех областях.
Чем он лучше реакта? Тормозит сильнее, да и заставляет бэкендогоспод заниматься чёрной работой клепания формочек, хотя для этого должна быть отдельная команда рабов. Не говоря уж о ноде в зависимостях.
Да, ничего интересного.
Да хули ты доебался то до треда. Раз спросил, два спросил - адеквату бы уже давно стало очевидно что ни у кого для тебя-корзины идей нет, да и похуй вцелом. Че за тупой вопрос вообще - тебе в первую очередь и лучше всех должно быть ясно, что тебе интересно сделать
Пиздец вкатуны никчёмные пошли.
Это ещё ладно, тут пару лет назад один шиз написал велосипедную реализацию MessageFormat и потом несколько тредов задавал вопрос "Что бы написать такого...".
Да ладно бы велосипеды, против оных вообще ничего не имею. Но вот эта логика мерзкая, типа "ой ляля, я работать не иду, учу пубернетисы и берегу себя для интересного проекта, ой а где бы чебы интересного покодить Ляля тополя". Ну не чмо ли? Это как мамкин стартапер щас придёт в интернет к предаринимателям и начнёт у всех спрашивать как ему бабла поднять, вместо того чтобы взять и сделать уже хоть что-то.
Хз анонче, это же полноценный анализ надо делать
Потому что фронт на джаве не пишут, это долго и заебно, когда есть js. Весь современный движ во фронтенде исключительно в js происхоит, там все либы и весь тулинг. Vaadin я даже не знаю зачем вообще нужен.
>неужели на джаве вообще ничего интересного не напишешь
Что для тебя интересное? Джава это энтерпрайзные круды в 95% случаев, гигантские формочки в банках, автоматизация документооборота, отчетов, накладных и прочего. Звучит как супер скучная хуйня, и так оно и есть на самом деле, но а чего ты хотел? В принципе никто не заставляет сразу начинать погружаться во все это энтерпрайзное болото, jasperreports, формы отчетов, итд, можешь написать какой-нибудь стриминговый сервис по типу твича на минималках. Думаю, будет интересно.
Хочешь что-то супер интересное, учи си, кресты и питон, машоб там всякий, компьютер вижн, может быть в железках чего интересное есть или в системщине. Но там, я думаю, ты максимум какие-то демки по туториалам от индусов сможешь сделать, не более, да и математика тебя быстро в уныние вгонит. Для чего-то серьезного придется идти в магистратуру и аспирантуру с хорошим научником.
Да. Меня тоже наебал в свое время препод, посоветовав всем джаву как яп общего назначения. Если бы я снова оказался в 2018 на выходе с универа то мейнил бы дальше плюсы, шарп или питон, потому что единственный кейс для использования джавы это круды для корпораций
inb4 just use kotlin
Ну шарп то же самое, что и жаба по факту. Те же энтерпрайзные круды, только не на спринге, а на asp.net, либо юнити с винформочками.
Плюсы и питухон поинтереснее, но работу искать имхо тяжелее, рынок труда узкий. В ML/DS/DL нужно еще математику знать хорошо, плюс корочку топвуза иметь.
В нулевые для всего этого были билиотеки и на джаве, просто сейчас это все заброшено и не обновляется. Когда очередной скуф будет тебе пиздеть про богатую экосистему жабы то под этим имеется ввиду корпоративная зеленая лужайка вокруг спринг поебени и апач фоундейшн
Из последнего мне нужно было запилить туй для знакомого из ебучего закрытого предприятия, но лантерна и джексер мертвы
Ну так и "померли" они только в прошлом году, судя по динамике фиксов и апдейтов. А ты говоришь --- нулевые. Сам пробовал лантерну пару лет назад --- нормальный либ был на тот момент, свою задачу решает, щас не знаю.
Мож еще примеры будут?
Сказать спасибо за это надо ублюдкам, пиздящим в сети на джаву. Все вот эти вот гондоны с тезисами аля "на джаве только круды пишут", и "джава как язык --- говно". Впечатлительные чмони им верят, и забивают на все остальное.
я хочу
А почему ты тогда в питон на джанге не вкатываешься, раз уже крутил-вертел?
Даже если это действительно так, то какая разница?
В крудах большая часть времени уходит на обращение в базы и внешние сервисы.
Нехватка быстродействия самих бекендовских языков и либ - супер редкий случай.
А по предметной области сайтики на джанге интереснее корпоративного говна на спринге.
Потому что в целом вакансий для джанги сильно меньше, зп, насколько я понял, в среднем тоже ниже. Ну и я через полгода перекатываюсь за бугор и мне кажется что с джавой будет сильно проще устроиться. А джангу я всегда успею расчехлить если что
В голову лезет только тот случай, когда сущность создана, но не заперсистена в БД – тогда id будет равен null
Во-первых, смотря что за сущность
Во-вторых, какую цель ты при этом ставишь
Если под сущностью подразумевается объект, каким-то образом получится id не уникальный, то сравнение может пойти по пизде из-за различающихся полей внутри объекта, если примитив (или пара примитив/ид), то в целом похуй должно быть
Работаю начинающим наносеком на аутсурсной галере. Уже месяц сидел на бенче, поэтому начал подыскивать работку, подстраховываться. Прошел собес в зеленый банк, ща звонила хрюша, сказала, что неплохо справился и рассказала про конкретные условия работы на проекте. Но блять сейчас, буквально на днях, в моей компании, в которой трудоустроен на данный момент, появился проект и меня туда цепляют. Собственно, вопрос - как отказаться от оффера в зеленом банке? Есть ли вероятность внесения в черный список, если сегодня я потверждаю, что заинтересован в оффере, а завтра говорю мол ой нет извините досвидания?
Ну конечно, предложения Сбера никто не отклоняет и сам из него не уходит. Если уж попал в Сбер - всё, обратно никак, будешь там до пенсии.
>лантерна и джексер мертвы
Если год либа не обновлялась, то она уже мертва? Тем более либа для такой вещи как tui, которую мало кто на жабе пишет сейчас.
>имеется ввиду корпоративная зеленая лужайка вокруг спринг поебени и апач фоундейшн
Так и есть. А тебе что нужно? Библиотеки для обработки изображений и звука? Цифровая обработка сигналов? Графика? Жаба уже давно сидит исключительно в энтерпрайзном бекенде, это ее ниша. Никто не будет начинать или продолжать пилить либу для каких-то там юзер интерфейсов в жабе, просто потому что она никому не нужна.
Чего? Как это?
А, и еще хотел спросить - не научишь, как держать оффер? Допустим, у меня в компании на проект мою кандидатуру еще не утвердили, а в другой компании предлагают оффер - есть ли возможность этот оффер подержать неделю-две, пока не решен вопрос по поводу буду ли я на проекте или нет в своей нынешней компании?
>запилить туй
Почему решил пилить на жабе, а не на питоне или голанге? У последнего вообще все в один бинарник бы запаковалось и все. Как раз удобно для консольных хуиток.
А вообще питон топ если по быстрому что-то нужно сделать.
Смириться.
Опа! Нука-нука-нука?! Проверочный вопрос :)
Те 50 наследников интерфейса --- как много среди них классов, у которых абсолютно все поля и методы --- final, но сам класс при этом --- не final?
Есть мнение, что черные списки HR --- это миф.
Либо чтобы туда попасть, нужно быть совсем уж в край отбитым опасным для общества беспринципным дегенератом, а не отказником. Мнение не мое, но я склоняюсь к тому, что скорее всего так и есть. Если у кого есть опровергающие пруфы, инетресно было бы их почитать.
Да ничего, просто паттерн выглядит знакомо. Вот и решил проверить.
Бамп вопросу. Челы, которые в жабе уже много лет и скачут по интервью как мамаши шарпистов по хуям, ждем от вас бест практисы. Или тут одни вкатыши, которые делают вид, что что-то понимают в жабе?
Пока ты думаешь, потенциальному работодателю тоже нужна гарантия, что через несколько недель раздумий ты не ответишь отказом, им тоже нужен сотрудник да побыстрее, и время они тратить не хотят, будут продолжать процесс поиска разрабов. В Сбере в зависимости от проекта могут дать неделю подумать просто в силу того, что найм здесь вообще не быстрый, но две уже менее вероятно. Просто отвечаешь, что пока рассматриваешь другие варианты, это нормально, все всё понимают, могут сказать, сколько тебе даётся времени на подумать. В любом случае вносить в мифические чёрные списки не будут, но если в итоге отказываешься, изволь явно это озвучить вместо того, чтобы тупо перестать выходить на связь.
А мне кста после того, как я расписывал большое сообщение с отказом и извинениями за потраченное время вообще нихуя не ответили. Это норма или в сбере просто в ста процентах случаев пидорасы на хрюшках работают без представления о вежливости как таковой?
Подключение к 127.0.0.1 устанавливается, но файл не передается.
Дело не в вежливости, правила поведения для кадров расписаны, но их не всегда выполняют из-за нагрузок и бюрократии. В Сбере такой пиздец в HR творится, что могут, например, не успеть согласовать ответ кандидату, а писем хрюши получают сотни в день, если и успевают написать ответ, произойдёт это только через несколько дней в лучшем случае. Тимлидам самим приходится по нескольку раз созваниваться с кадрами, чтобы выяснить, как там дела с кандидатом.
Ну у некоторые да, забивают на правила общения и решают не отвечать ничего.
Какой ещё OpenServer? У PHP-шников спрашивай, что за хуйню они намудрили, дело может быть даже в DLL-ке неправильной версии в модулях апача, такое говно, хз, как они это в проде юзают.
Хэх, в Москве(!) есть всего парочка джун вакансий на ххру(с требованием 1.5 года коммерческой разработки) и на них по 500 откликов, вот и подумай, какие у тебя шансы вката
> машоб там всякий, компьютер вижн,
Ты же понимаешь, что это маркетинговый буллшит и баззворд. Хуйня без задач и вакансий. Ничего полезного кроме распознавания лиц с камер не сделали и не сделают. Спойлер: автопилота на автомобилях не будет.
Отклоняют ещё и как, когда па2ы предлагают работать по 9 часов за зп ниже рыночной
драйвера уметь писать или оси
или хотя бы фреймворки
умею тока пукать жсонами в кафку и писать тесты
Нужно просто подаваться во все места где 1-3 года опыта просят. Через 500 отказов может быть и пригласят на собеседование...
>драйвера уметь писать или оси
Не программист, а задрот.
>или хотя бы фреймворки
Ну вот это да, нужен ум.
А кстати, как часто вообще жаба разрабы лично пишут интеграционные/юнит тесты? Согласно тдд все пишут кучу тестов на класс и потом только приступают к его реализации? Я интересуюсь исходя из того, что написание тестов для меня всегда казалось рутиной и было впадлу этим заниматься, а если придется большую часть времени писать только их, то это пиздец боль.
Лично я стараюсь писать их всегда, что юнит- что интеграционные. И не рассматриваю их как нудную рутину. Но проблема в том, что позволить себе это я могу только в том случае, если я на проекте либо один, либо главный, и могу зафорсить свои архитектурные принципы.
В чужих же проектах обычно пиздец и сервисы, и там либо спринг тест с действительно пустопорожними тестами, которые никогда не детектят косяки, но постоянно нуждаются в переписывании, либо по старинке --- отдельная QA команда которая мейнтейнит регрессионный тест сьют на всё. Так что я могу понять людей, считающих тесты рутиной и болью.
Такое мнение я тоже могу понять. Человек, видевший в своей жизни лишь говнопрактики написания автотестов, закономерно в них разочаровывается.
Нет, просто я пишу говнокод, который нет смысла автотестировать, там всё анально связано друг с другом и легче просто вручную погонять.
Ты промахнулся тредом, дружок. Клуб любителей анальных утех находится по соседству.
Ты --- в зоне риска вступления в культ спринга в роли бездумной промытки. Будь аккуратнее.
Борисов --- хороший чел когда нужно разобраться в кишках спринга. Спринг потрошитель --- нетленка. Но когда он начинает говорить о каких то практиках хорошего кода --- он пиздит.
Ок
Просто блин, он так интересно рассказывает, что даже когда я не понимал 90% того, что он говорит, все равно смотрел и кайфовал. Не уверен, что вообще есть еще подобные персонажи в джава комунити, хотя может и за пределами жабы таких можно по пальцам пересчитать. Бтв, что он прям такого плохого рассказывает по-твоему? Вроде он приверженец тех самых принципов и ничего прям говнокодистого с моей дилетантской точки зрения не показывал.
Да просто рассылай свое резюме в большие конторы вроде мегафона, билайна, мтс, теле2, плюс всегда открыт набор в яндекс и раз в 3 месяца стартует набор в тинькофф и сбер. Всякие банки поменьше тоже нанимают, правда меньше, чем в прошлом году уже.
>Просто блин, он так интересно рассказывает, что даже когда я не понимал 90% того, что он говорит
Это называется "профессиональный спикер со стажем". На профессиональных конфах впринципе такие часто встречаются. Презентовать что-то --- тоже скилл.
>Бтв, что он прям такого плохого рассказывает по-твоему?
Ну мне например совершенно не понравился спринг-построитель. На память щас всех моментов не скажу, но когда я его смотрел, там было много мест где я кринжевал.
Зато сколько восторга в комментах, ппц... Если кто-то хочет увидеть сходку культа спринга воочию, комменты под докладами Борисова --- лучшее место.
>тех самых принципов
Ну и вопрос: тех --- это каких?
Щас по приколу после твоего мессага решил освежить свое впечатление от спринг построителя. И он в самом начале задвинул про SOLID, где такой "Ну я L и I оставил без пояснения, потому что нахуй они нужны (https://youtu.be/rd6wxPzXQvo?t=392)". Ну и моя первая реакция --- "пошел нахуй". Это LSP не интересен? Да это литералли определение сабтайпинга нахуй! Да весь солид можно вывести логически с нуля через LSP и DIP! Сука! Ну хоть чуть чуть более понятно теперь, почему у спрингокультисов всратые сервисы в таком почете.
А ну да, спринг построитель единственный видос с ним, который я так и не досмотрел, мне он с первого раза не очень зашел, почему-то не особо интересно, как спринг строился. Я скорее говорю о видосах про какие-то дизайн паттерны или аля потрошители, вот там мне интересно. Еще видос на 5 часов про спринг дату не осилил, так что мб я так от него фанатею из-за того, что тупа скипал видосы, которые никак не относятся к тому, что я и сам изучаю в этот момент или изучал и никак не связаны с реальными задачами, ведь вряд ли мне когда-то понадобится писать свой спринг, так что захламлять голову ненужными знаниями лишний раз не хочется, поэтому и не смотрю.
Ну я буду пробовать сразу прыгнуть на джуна+ или вообще мидла, потому что я хоть жабу и не знаю, но у меня есть 2 года реального опыта работы на джанге, так что я прилично потрахался со всей обвязкой тырпрайза, по-факту мне нужно выучить на хорошем уровне жабу+спринг ну и по мелочи всякого
В августе ситуация была ещё хуже, по итогу меня взяли туда, где требовался опыт от года, на джуна (жалею правда, галера пмздец), так что пробуй и не робей главное
Как-то я тоже думал, что на ментальное здоровье похуй, пока не ловил истерики 3 дня подряд из-за жутких кранчей, недосыпов, лишней ответственности и т.д., после чего начал более серьезно относиться к ментальному здоровью)
А так везде прав, если не заебёт постоянно изучать океан информации, ну и ещё годик работы за еду в худшем случае
>на ментальное похуй
>анальники более-менее уважаемые люди с достаточно интересной работой
>в чем я не прав?
Хехехе. Та неее, во всем прав) План надежный как швейцарские часы))
Чуть больше сотки. Но тут в целом вопрос не в деньгах, а в потенциальных возможностях. Имхо за бугром будет проще найти хоть какую-нибудь работу на джаве, чем на питоне, а это для меня самое главное
Ну пчел, для менталки есть алкоголь, таблетки, легкие наркотики Главное не становится прям совсем поехавшим, которого только дурка спасет, а для этого достаточно уметь в свое время послать всех нахуй, хули они тебе сделают ты в другом городе.
>>510972
Я не уверен даже, что там закупаются помидоры-наносеки с десятилетним стажем, про себя так я вообще молчу, пятерочка это скорее всего просрок из азбуки в другой упаковке.
Алкоголь не варик, когнитивка и мозг очень сильно просаживаются
Таблетки тоже очень аккуратно надо пить, иначе тормозом станешь
Лн'ы прикольно конечно, но это ради них работать придётся
Вот над посланием всех нахуй надо тренироваться)) полезный навык)
Тебя лишняя либа беспокоит? Посмотри на спринг, там один модуль тянет за собой сотни мегабайт зависимостей.
Васянскими называют технологии, сделанные на отъебись, типа проектировал рандомный Вася, а не специалист. Непопулярность- следствие хуёвости.
В шутку, конечно, васянским называют что угодно.
Держать слишком много зависимостей в либе нежелательно по многим причинам: разработчику либы нежелательно потому, что каждая зависимость для его либы --- потенциальный источник регрессий, которые в его случае не просто могут привести к багам, но и заруинить доверие пользователя; для пользователя либы избыточность транзитивных зависимостей может привести к гемору.
Это не значит что зависимостей вообще не должно быть, но чем меньше тем лучше.
>>511015
Спринг здесь --- не показатель. Спринг давно вырос из локальной либы в обширную экосистему, и обычно используется через spring bom и стартеры, где все зависимости держат под контролем разрабы спринга. Для маленькой либы такая стратегия не подойдет: с большой вероятностью разраб на спринге не станет использовать либу в кучей зависимостей в паре со спрингом, если увидит что зависимости либы клэшатся с зависимостями спринга, и ему чтобы ее завести придется ебаться с эксклюдами.
Надо в зависимости либы добавить сам спринг, тогда будут пользоваться, а разраб либы и так найдёт в спринге небо и аллаха.
Можно) Но тогда бедного разработчика либы будет ебать сам спринг. Будет у него из под ног зависимости менять в любой рандомный момент.
>разраб либы и так найдёт в спринге небо и аллаха.
Это врядли. Разве что если либа --- коллекция бинпостпроцессоров какая нить, или стартер, тут уже без вариантов.
Это копия, сохраненная 11 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.