Вы видите копию треда, сохраненную 15 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>2630498 (OP)
Придётся писать свою систему контроля версий как Яндекс сделал, тк гит хуево работает с огромными репами когда проектов становится много: хуилион комитетов веток и тд, приходится все эту хуйню клонировать на локальную машину чтоб что-то разрабатывать, нельзя разграничить права доступа на разные сервисы…. Пиздец короче. Но плюсы тоже есть, думаю ты их знаешь, главное чтоб монотонна не разрасталась до абсурда
Как я понимаю есть два варианта:
1) сделать запрос в БД целиком, сконвертировать данные в CSV, отдать
2) вычитывать данные из БД построчно, построчно преобразовывать в CSV-строки и потоком отдавать
Как добиться второго варианта используя Spring/webflux, чтобы не держать огромные данные в оперативной памяти?
Если я объявляю возвращаемое значение эндпоинта как org.springframework.http.ResponseEntity<org.springframework.core.io.Resource> то это какой подход будет 1й или 2й?
https://www.youtube.com/watch?v=kwS3OeoVCno
Да.
Вычитывать из базы в виде csv.
>Loom
Лет через 50 подтянутся библиотеки и фримверки и можно будет переползать. Но джэва проиграла войну и сейчас просто неумело тащит в себя всякие конструкции из других языков. Только делает это абы как и с характерной для джэвы многословностью и нелогичностью
Нет, не нужно.
Не нужна.
Вопросы не нужны.
>Как можно хостить петы в облаке
Ты имеешь ввиду гитхаб, или что-то типа дропбокс ? :/
У меня все репозитории private, а когда начинается сезон собесов, я делаю их публичными.
Держи лайфхак: не показывать петы работодателям.
Шта? Не понял, из-за чего ты уезжаешь на парашу. В чем проблема удалить все что тебе дауны накидали?
>приходится все эту хуйню клонировать на локальную машину
Монорепа обычно монтируется как внешний диск со специальной файловой системой, которая сама подгружает файлы в момент обращения. Никто не выкачивает гигабайты сорцов ради одного пука.
>>51165
Проще управлять версиями, когда например у тебя есть набор самописных библиотек-велосипедов, которые чуть ли не в каждом сервисе используются. Вот тогда с монорепой жить проще. А так особых преимуществ имхо нет.
Там вроде отдельный рантайм поднимается.
javax.annotation.processing апишка очень многословная, неприятная и кривая, хуже рефлексии.
Попробовал рефлексией читать содержимое классов, параметры аннотаций, и сигнатуры методов. С рефлексией код попроще, но компилируется медленнее.
Еще почему то в AnnotationValue.getValue() параметр с типом String[] не кастится String[], идея в дебагере пишет, что там под капотом com.sun.tools.javac.util.List<String> вместо массива и пока не нашел как его скастить или сконвертировать.
Какие подводные вызывать рефлексию из аннотейшн процессора? Ну кроме скорости компиляции.
Ты говоришь
>Хочу из аннотейшн процессора на этапе компиляции вызвать рефлексию для обработки компайл-тайм аннотаций.
А я слышу
>Вжж ж вжж-вжж вжж-жж-ж жж жж вж-вж-жж вж-вж-вж жжж вжжжж вжжж-вжжж вжжжжжжж.
Обезумевшие джавамухи, зачем вы обмазываетесь подобными вещами? Разве вам самим не противно этим заниматься? Посмотрите как в нормальных языках программирования решены эти проблемы.
И как?
Ну и я не сказал какая у меня проблема.
Ну кроме вот этих штук с массивами в кривой апишке. Но я думаю я просто пока плохо знаю апиху процессоров.
Кстати при выдергивании значения типа Сlass там бросался эксепшон всегда и надо было его ловить, но значение потом из эксепшона можно вытащить.
>Проще управлять версиями, когда например у тебя есть набор самописных библиотек-велосипедов, которые чуть ли не в каждом сервисе используются. Вот тогда с монорепой жить проще
Сколько ты будешь ждать билда, если монорепа подразумевает зависимость по исходникам, а не по артифактам?
https://www.youtube.com/watch?v=yj3sndjLHEA
А зачем вы лезете в Джэву, если там все уже занято молодыми и упругими?
Пожалуйста объясните мне если возвращаемый тип ResponseEntity<Flux<String>> и в хедерах указыается контент-тайп "text/csv" будет ли все flux построчно отдаваться или сначала соберется полностью в оперативке а затем выплюнется наружу?
блять, сначала собирает и потом отдает. Как блять сделать потоком это? неужели нужно байтоебить как здесь описано https://stackoverflow.com/questions/62137881/iterator-of-strings-to-inputstream-of-bytes
Сап, джаваны. Что можно дать почитать по жабе ребенку тян 12-13 лет? Относительно современное, при этом хорошо структурированное для самостоятельного изучения. В английский умеет, базовый пистон тоже.
Нет, не либертарианец педофил - просто поддерживаю благие начинания младшей сестры.
Точно, вспомнил про эту серию книжек. Отзывы слышал разные, надо будет самому посмотреть, спасибо.
Для написания калькулятора подойдёт Swing. На этом этапе надо осознать, что джава не предназначена для написания десктопных приложений, и забыть об этом говне.
Или плюсы. В шарпе гуй только для винды.
я забыл, сорян =)
а мне понравилось. Хотел бы делать десктоп на жабе, только нету его
Этот тред был создан, когда в предыдущем не было 1000 постов, так что условие не выполнено.
Шилдт
Хих
КАК ЖЕ ЗАЕБАЛ ЭТО Т ПУССИПАСС НАХУЙ БЛЯДЬ!!!!!!!!!!!!!!!!!!!!!! СУКА!!!! МНЕНИКТО НИХУЯ В 12 ЛЕТ НЕ ОБЪЯСГЯЛ Я ВСЁ САМ ИУХАЧАЛ БЛЯДЬ И НЕ В 12 ЛЕТ А УЖЕ В СКУФ ЛЕТ МЕНЯДАЖЕ НА ФОРУМАХ НАХУЙ СЛАЛИ БЛЯДЬ ТОЛЬКО ОДИН — ОДИН РАЗ БЛЯДЬ — ПОМОГЛИ С КОНФИГАМИ ВС!Ё!!!!!!!!!!!!!! А БЛЯДЬ ПИЗДЕ ТУПОЙ СУКА С ДЕТВТВА ОБЪЯСНЯЮТ ВС!Ё ПОМОГАЮТ ЧТОБЫ ОНА СУКА НИХВ НЕ АПРЯГЛАСЬ И ПОШЛА РУБИТЬ БЛЯДЬ СОТЫГИ НАХУй СКОЛДЬКО Я БЛЯДЬ ГЕМОРРОИЛ БЛЯДЬ НАХУЙ И ВСЕ РАВНО БЛЯДЬ ЛЮБАЯ ПИЗДА С РОЖЖДЕНИЯ НАХУЙ ИМЕЕТ ВСЁ БЛЯДЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! А НЕ ОХУИЛЕ ЛИ ОНА БЛЯДЬ!!!!!!!!!!!!!!!!
Хуя разрыв. Я был в такой же ситуации, собственно, как и ты - почему из-за этого я не могу помочь ей с хорошими материалами для обучения?
Ты куколдище. Тебя поимели, а ты и рад дальше очко подставлять.
Иди в писку прогуляйся.
Вообще не понял, как переписать with, also, apply на джаву. Читаю что эти выражения значат, а как переписать на джаву не понимаю.
Я пробовал идеевским Kotlin - Show bytecode - Decompile.
Там лапша какая-то выходит невразумительная.
https://github.com/cray33/jnom
http://jnom.fvds.ru:8080
не работает
Карты и ГИС интересная тема.
Только вот автокомплит во время поиска названия города, улицы, дома тупит очень сильно. Я бы это еще пофиксил раз у тебя пет развернут и ты его готов в живом формате показывать.
Плюс я бы еще каких-нибудь фичей накидал, например выводить информацию про найденный объект на фронт, а не просто на карте показывать.
https://www.youtube.com/watch?v=VTktC3dmjE0&t=169s
Попустился бы, старина. Нормальные ребята в Скэйлу перекатываются и идут в Вертикали
На JavaFX вполне себе неплохо пишется, сложновато, конечно, но интересно и работает нормально.
По сравнению с tkinter на питоне так вообще сказка (PySide не пробовал)
Какого хуя ты ссылку на перекат в прошлом треде не запостил блять мудило?
Не шарю во фронте, но наверное событие изменения текста в поле срабатывает только после какой-то задержки.
Меня волнует почему тред до сих пор называется Java если все давно свитчнулись на котлин
Хуя се блядь меня приложили стрелочкой нахуй.
Котлин умер и остался в легаси. Новые проекты пишут на джаве.
Если проект осмысленно месседж брокер использует, то это уже бизнес идея. Кто тебе бизнес идею просто так отдаст? А так никто тебе не мешает кафку в тудулисте исользовать. Сделай тудулист в виде микросервисов.
1. Фронтенд
2. Апиха для фронтенда
3. Интеграция для телеграмма.
Между апихой и телеграммом может быть кафка.
Как же я проиграл с гадких джавамух, лол. Вы зачем пишите свои помойные интерфейсы, а потом создаете один класс с окончанием импл? Вы идиоты? Зачем вы раздуваете кодовую базу? Какой-то нездоровый дроч на Ункла Бэба и его гнойный СОЛИД, лал. Вы прекращайте херней заниматься, лол. А ваша анемичная модель? Еще в начале 00-х было показано как надо делать. Как же я проорал с ваших гадких контроллер-сервис-репозиторий, ахахахахахахах! А модель - обычный класс с полями, чтобы было что на табличку в базе мапить! Поганые джавамухи! Фу!
как на первой галере показали так и делаем
>Еще в начале 00-х было показано как надо делать. Как же я проорал с ваших гадких контроллер-сервис-репозиторий
Ну и как надо делать?
Ты только что петушарп...
это кстати интересно
Я не просил, мимо проходил. Да и тот анон, очевидно, реквестировал что-то адекватное, для чего использование кафки оправдано.
тогда ему нужно владеть инфраструктурой уровня линкедина или подобного. Только тогда это будет оправдано
Блин я уже оффер принял, че реально душнина какая-то? Я просто во многих вакансиях ее видел, думал дефолт кейворд
Мне на одном собесе один чел посоветовал подтянуть эту херню, тк везде нужна. Я чет тогда кекнул прям.
Ну в целом вроде вещь полезная, хотя и не очень интересная.
Воссоздай это.
В говношапке ничего толкового не написано. Там просто все обсирается и говорится, что нужно все самому учить.
Ну а как по другому-то? Только самостоятельно двигаясь ты чего-то сможешь достичь по-настоящему.
Если знаешь ангельский, то hyperskill, поглощаешь все что там есть по джаве, далее строишь свои пет проекты, по-ходу восполняя проблемы в знаниях, что не дал гиперскилл.
Если ты самостоятельно начнешь двигаться с нуля, то с высокой вероятностью ебанешься, сгоришь и пошлешь все нахуй. Нужна какая-нибудь база, где тебе скормят с ложечки основы. Даже если это какой-нибудь джава-раш.
мне например понравилось программировать на турбопаскале в путяге. Пошел в библиотеку взял книгу по турбопаскалю.
Потом ковырялся с модным php/js/css. Потом прочитал книгу по плюсам. Ужаснулся.
Потом ради интереса решил прочитать про модную жабу - очень зашло своей простотой и дуракоустойчивостью по сравнению с плюсами. Потом была проблема вкатиться, кое-как сделал тестовое задание. Так и вкатился. Щас такое наверно не прокатит
ты в любом случае все дропнешь нахуй маня
3 (три) месяца регулярного(!!!) изучения макакинга или иностранного языка или занятия спортом и т.д и т.п это АБСОЛЮТНЫЙ МИНИМУМ чтобы говорить о том, что ты что-то там выучишь или куда-то там вкатишься и что-то тебе серьезно советовать
три месяца
Я уже где-то 9 полных месяцев задрачиваюсь почти без выходных, ты мимо.
Два основных паттерна простого использования кафки без стримов это уведомления и репликация.
Сервис А реплицирует половину таблиц своей базы в сервис Б через достаточно большой объект, около мегабайта. Это первый топик
Сервис А и Б отправляют уведомления о изменении в их сущностях в сервис В в виде коротких уведомлений. Это второй топик.
Двачую гиперскил.
Инфа для очень нулевых, тысячи простых задачек и очень простой инлиш, написанный русскими.
Там еще есть бесплатные триалы? Года два назад проходил полгода бесплатного триала и прошел 2/3 трека по жабе. В целом понраилось.
А сейчас мне дали лычку мидла уже.
Спасибо. Звучит как именно то, что надо.
Короче, сервис А - хранилище кулинарных рецептов, с апи для юзера. Сервис Б - резервное хранилище, туда иногда отправляется таблицы из сервиса А. Все они шлют уведомления на сервис С - это админский сервис, где админ мониторит в логах консоли обо всем произошедшем. Норм же? Или что добавить/поправить можно? Завтра приступаю.
Есть бесплатные триалы по рефералке где-то на 3.5 месяца, без нее меньше. Я несколько аккаунтов сменил лол. Прошел вообще все курсы что есть по джаве, где-то 40 проектов их сделал в сумме. Доволен как слон и вообще не жалею. Читается легко и приятно, проекты под разные аспекты языка и спринга.
Ну второй сервис это какой то мусор.
Нужны два настоящих сервиса, чтобы ты понял зачем нужна репликация. Они используют частично одинаковые данные, но у них разный функционал и разные апи.
И тебе должно хотеться соеденить их синхронно по ресту. Типа когда приходит запрос на один сервис он обращается во второй за частью данных. Но так плохо, это распределенный монолит. Если первый упадет - второй тоже не будет работать.
А тебе нужно чтобы функционал был тот же, но без хождения по ресу, а репликации нужной части.
Ну типа есть сервис рецептов и сервис ингредиентов. В сервисе ингредиентов там есть подробная инфа о продукте. Его кбжу, нутриеты, лактоза, глютен, клетчатка, страна производства и еще что-то. На сервису рецептов нужно только айдишник, наименование и калорийность. И ты три эти колонки реплицируешь кафкой в сервис с рецептов.
>А тебе нужно чтобы функционал был тот же, но без хождения по ресу, а репликации нужной части.
>Ну типа есть сервис рецептов и сервис ингредиентов. В сервисе ингредиентов там есть подробная инфа о продукте. Его кбжу, нутриеты, лактоза, глютен, клетчатка, страна производства и еще что-то. На сервису рецептов нужно только айдишник, наименование и калорийность. И ты три эти колонки реплицируешь кафкой в сервис с рецептов.
Не понял как сделать, чтобы не было распределенным монолитом. Если на сервисе рецепты три колонки, а всё мясо на сервисе ингридиентов, то если один упадет, то вся приложуха перестанет работать. Или на сервисе ингридиентов должно быть все вместе? Гугл на "kafka replication" выдает про фактор репликации, разжуй, плиз.
Нет времени особо пояснять подробнее.
https://libgen.is/book/index.php?md5=392B994975B53BC21EDB7F7BA26AEB86
Страница 33-61.
Спасибо, прочту.
То есть метод полл читает вручную когда я его вызову,а листенер нон стопом сам чекает топик на наличие новых сообщений? Посоветуйте че почитать по кафке в связке с бутом
В том что его сообщение не имеет ничего общего с реальностью
Всю доку спринг кафки и читай. Там не так много.
?
В том, что кроме лума подобные механизмы в языке есть только у го и эликсира/эрланга насколько я знаю
Нихуя, не знал что есть такой сайт. СпасибО!
https://www.codewars.com/kata/5f70c883e10f9e0001c89673
В 3д тож интересно
Спасибо
Выгладишь как говно сейчас - ты, со своими бессмысленными выебонами.
В Linux/Mac есть ANSI-коды (через ESCAPE), но как оно работает под Windows?
Исходники Мавена открыты же, можешь сам посмотреть.
Мавен использует библиотеку Jansi, которая смотрит, в какой среде запускается JVM, для юниксовых терминалов выводит ANSI-коды, для виндовой командной строки дёргает WinAPI, в остальных случаях ничего не раскрашивает.
>эксепшенов
Те самые эксешпоны, которые из лямбды не прокинуть и нужно либо тупо проглотить в трай кетче, либо лепить свои умные интерфейсы которые кидают эксепшоны)))))))))))))))))))))))))))))))))))))))))))))
>Так, по словам депутата, на сегодняшний день в стране наблюдается нехватка врачей, учителей и IT-специалистов.
Согласны???
Конечно нормально. Это же спринг...
Нет, те самые эксепшены, которые из лямбд кидаются без трай/кетча и своих умных интерфейсов. Благо, что легаси чекед эксепшены остались в нулевых.
Проблема в старых пердунах, которые дизайнят помойную джэву
>Благо, что легаси чекед эксепшены остались в нулевых.
Аннотации в спринге настроил? контроллер, сервис, репозиторий - анемичная модель. Сервис уже написал на несколько тысяч строк? Все хорошо? Все хорошенько?!
При чём тут спринг?
Что сделать можно попробовать, чтобы на локалхосте со включенном csrf робило?
В application.properties стоит server.port=8080.
Ну джава как яп общего назначения использовалась буквально пару лет в 90ые/нулевые, упор в экосистеме идет на энтерпрайз. Естественно для питона пизже либы будут, там и комьюнити больше всех остальных языков вместе
Для тех кто не понял, джетбрейнс больше ничего не продает в Россию, но русские разрабы у них все еще работают, а значит поддерживают джетбрейнс, а значит работают против других русских разрабов, у которых доступа к продуктам нет.
А отдельный пинок по почкам получают те кто пилит непосредственно Intellij Idea
И че? Jetbrains - монополисты в области разработки IDE. Майки пыжились со своей сраной студией, но та даже не умеет текст анализировать и строить деревья
/
ЛИЦЕНЗИЯ КТО УКРАДЁТ ТОТ ЛОХ!!!!!
Online Java Compiler.
Code, Compile, Run and Debug java program online.
Write your code in this editor and press "Run" button to execute it.
*****************************************************************************/
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws InterruptedException {
Scanner sc = new Scanner(System.in);
//int b = sc.nextInt();
String a = "/";
boolean c = true;
System.out.println(a);
while (true) {
if (c) {
for (int i = 0; i < 13; i++) {
a = " " + a;
System.out.println(a);
Thread.sleep(30);
}
c = false;
}
else {
for (int i = 1; i < (2 + 12); i++) { //13 - 14
a = a.substring(1);
System.out.println(a);
Thread.sleep(30);
}
c = true;
}
}
}
}
/
ЛИЦЕНЗИЯ КТО УКРАДЁТ ТОТ ЛОХ!!!!!
Online Java Compiler.
Code, Compile, Run and Debug java program online.
Write your code in this editor and press "Run" button to execute it.
*****************************************************************************/
import java.util.Scanner;
public class Main
{
public static void main(String[] args) throws InterruptedException {
Scanner sc = new Scanner(System.in);
//int b = sc.nextInt();
String a = "/";
boolean c = true;
System.out.println(a);
while (true) {
if (c) {
for (int i = 0; i < 13; i++) {
a = " " + a;
System.out.println(a);
Thread.sleep(30);
}
c = false;
}
else {
for (int i = 1; i < (2 + 12); i++) { //13 - 14
a = a.substring(1);
System.out.println(a);
Thread.sleep(30);
}
c = true;
}
}
}
}
И чё? Просто рисует бесконечно лесенку вниз.
А теперь сделай так, чтобы кривая черта поворачивалась в нужную сторону.
Гугли Jansi
Говно только рот твоей мамахи занимает.
Да, нода и го. Но ты живешь в России и тут всем похуй - сидеть на джаве с пыхой будут десятилетиями если уже совсем не прижмет
Почему этого душевнобольного так сильно корёжит именно циферка версии джавы?
Вакансии на Линкедине в Бельгии по Java и GO. Подозреваю подобная ситуация примерно во всех странах Европы.
РРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРРЮЮЮЮЮ
>>джетбрейнс больше ничего не продает в Россию
С подключением. С начала войны не продают. Для них мировой рынок важнее РФ.
>>русские разрабы у них все еще работают
Полтреда мечтают свалить в асашай или европку на сотыгу (долларов в год).
>>работают против других русских разрабов, у которых доступа к продуктам нет.
Я до войны лицензию купил, все работает. Похуй на модные свистелки и перделки в свежих версиях.
Порватка, нахуй отсюда.
Да
Там работают либерахи-нацпредатели.
После начала СВО всем разрабам предложили либо уехать из РФ, либо увольняться.
Это больше про Go или JS. Питон это современный Бейсик для тех, кто не умеет программировать на полноценных языках.
а рвп в загранице они дают? Или крутись как хочешь?
на входе строка, там может лежать дата + время в разных видах:
yyyy-MM-dd'T'HH:mm:ss
yyyy-MM-dd'T'HH:mm:ss.SSS
yy-MM-dd'T'HH:mm:ss
dd-MM-yy'T'HH:mm:ss и т.д.,
вопрос в следующем:
Как элегантно, без квадриллиона форматтеров/trycatch привести/спарсить из стринги в UNIX или обработать все возможные варианты для того чтобы положить в Date/Tiestamp?
> yy-MM-dd'T'HH:mm:ss
> dd-MM-yy'T'HH:mm:ss
Никак. 01-02-03 это 3 февраля 2001 или 1 февраля 2003?
Нет
Когда же я уже сдохну
ну это и есть по сути динамический маппинг, тогда проще чтобы они сами указали формат, а я его уже применил, но пока не первостепенно, буду внешкам мозг ебать, пусть сами там хренью страдают с csv-шкой
Software Engineer, магистратура ?
я пишу своё пту. И диплом приношу тоже птушный
так и собираюсь сделать анонче, пощажу и дам вариативность в миллисекундах, но с остальным пусть нахуй идут
Ты хоть знаешь, что такое csrf и зачем он нужен? Все у тебя должно работать, если ты в браузере дергаешь эндпоинты, а если в постмане или через курл, то не удивительно
Че ты глотку то рвешь - первый год живешь чтоли?
Все кто хоть чето из себя представлял - свалили вместе с галерами. Нету больше айтишников, одни вкатуны остались. Те немногие, кто пробовал хайрить к себе людей в 2022м, не дадут соврать.
>>57456
Хули теперь бряцать мудями - "нацпредатели-нацптеродактили". У тебя теперь под носом целый анклав с вполне обоснованным общественности казусом-белли наголо, желающий помножить все твои патриотические устремления на ноль; вдобавок к обществу, для которого ты - не более чем пушечное мясо, которое если надо пойдет под нож в государственных интересах; и правительству, которое тебе параноидально не доверяет, но само сделать не в состоянии ничего. О каком патриотизме здесь может идти речь? Тем более, для состоявшегося разраба.
Ни одного конфликта, перенеслось за 5 минут!
Знаю, и что такое цсрф и что такое постман, и что нужно отключать первое когда тестишь через второе. Когда в браузере тыкаю на ссылки требующе ауфа, он выдает 403 со включенной защитой.
А с выключенной не выдает? Попробуй посмотреть в браузере, есть ли у тебя в форме цсрф атрибут. Ты его как-то донастраивал сам или просто в конфиге сделал энейбл? Мб дело не в нем все-таки?
С выключенной csrf.disable() все работает. В формах ничего связанного с цсрф не доделывал, дополнительно сейчас посмотрел - там ничего и нет к хтмл-коде выданной страницы. То есть просто включенное цсрф четыристатрёшит попытки аутефентикацироваться на локалхосте. Звучит как полный булщит.
А ты фронт с помощью шаблонизатора делаешь? У тебя там обязательно в форме должен быть атрибут _csrf, таймлиф сам его подставляет, если ты без него делаешь, то должен сам скорее всего прописать
P.S. - не для новичков.
Ну то что ты даун видно невооруженным взглядом
Не приемлемо !
Это необходимо
Так бывает. Этот подход к разработке ПО называется имбецилокодинг.
Так бывает. Накидали кода из других проектов, чтоб побыстрее стартовать, потом постепенно допиливается под проект. ну или оставляется как есть по принципу "работает - не трожь"
Это проблема спотбага, лагованное дерьмище, куда 17 жабу как-то забыли добавить и прочие приколы
толсто еблан
>В градле же создать новый модуль это одна строчка в settings.gradle.kts
и еще один build.gradle.kts где хуй пойми какие плагину и зависимости наследуются ага) плавали знаем больше к хуядлу ни ногой
Как ты узнал ?
Как же вы надоели. Ни одного нормального аргумента не приводите. Слишком сложно, ага, нормально разобраться, нафига, можно же просто говном полить и всё
Нет чтобы просто один раз почитать чем отличается api от implementation, неееет, нам лишь бы поныть на то, какой градл плохой
Так градл тоже работает, только делается там всё в разы проще, без ущербного XML, и кучи дублирования
Я просто реально не могу понять, что в этом сложного
api это точнейшая копия compile из maven, implementation же просто не подключает зависимости автоматом, если кто то использует модуль.
Те implementation юзаем, когда мы не хотим палить реализацию, например мы сделали модуль для парсинга XML, а тот кто этот модуль будет юзать, ему впринципе поебать какая либа там юзается
Api же надо юзать, когда твой код отдаёт или использует классы из либы, и эту либу надо толкнуть выше
Всё довольно просто. Но опять же, если мозгов понять не хватает, достаточно просто юзать api и всё
Поюзал твою мать, проверяй
Не вижу никакой проблемы ни в дублировании, ни в громоздких хмлях.
А грудл 4 раза ломал обратную совместимость и куча советов на стеке просто не актуальна.
Для меня, как для человека, который даже мавен не знает особо это важно, хотя у меня опыта больше 2 лет. Мавен просто работает, как автомат калашникова.
Когда рыщешь по гитхабу за примерами какой-нибудь хуйни и попадаешься на код с грудлем без врапперов - то просто выяснить скомпилить проект будет дольше, чем разобраться в нужной тебе фиче.
хуйня {
то {
ли {
дело {
скобки {
ебучие {
}}}}}}}}}}}}}}}}}}}}}
It's simply Java, bruh...
>очень вредная книга
Это чуть ли не единственная книга с которой носятся джавамухи. Еще они любят потрясывать томиком JCIP, хотя сами всю карьеру аннотации спринга раскидывали
Так джавамухи со своим бобом как раз таки спринг не любят. Не тру ооп, не по клинкоду. Особо упоротые и на ломбок бочку катят.
Хотят наверное писать абстрактные фабрики, интерфейсы для единственной реализации и простыни текста, как в шарпе.
Джавамухи буквально обмазываются книжкой Ункл Бэба, чел... Они дрочат на СОЛИД и создают интерфейсы под каждый сервисный класс в своих помойных приложениях на спринге. Прямо обмазываются этими МайСервис, а затем лепят единственную имплементацию МайСервисИмпл. И это вершина айсберга, т.к. догматичные правила Ункл Бэба приправляются отборной шизофренией джавамух и выходит эдакий монстр Франкенштейна...
)))))))))
Иронично что в шарпе таких мух еще больше. Если в джаве уже можно встретить сервисы без имплементаций, фабрик и прочего олдфажного говна, то в шарпе это считают чуть ли не золотым стандартом и продолжают называть переменные _peremennaya, а интерфейсы IService.
Так легче читать.
>как настроить правильно блядский хибер
Никак. Использовать хубирнейт в 2к23 - антипаттерн и признак говношараги
>Я в интерфейс выношу большую часть аннотаций. А в единственной имплементации - логика
Это ерунда и не работает в спринге. Руками пиши контроллеры и обвешивай их аннотациями
Бро . я сыглы. Я его блять ненавижу. Но мне на 2 места скинули тестовое и в обоих это обязательное условие.
посмотрел на это и мгновенная ментальная боль. Сижу в гепчике с нового года. Может сменить работу?
Не дает. Но по сути он ожидает как бы класс userEntity на вход , но он возьмет из него только айди по факту. Это видно из запросов которые он генерит.
При использовании хибера считается плохой практикой. Так бы я все в пизду послал и на JDBC сделал
Дак да , я знаю. Просто мне кажется что в задании от меня требуют знание конфигурирования это говна. Я уверен что можно его настроить правльно. В конце концов задача не пиздец какая сложная, полюбому можно.
Спасибо анон за подсказку. Проблема доп запросов решена. Осталось решить проблему бесконечной рекурсии json и сделать так что бы он не грузил не нужные поля.
Пробовал. Слетел ключ. Откатился обратно на 2022.
А потом говорят что сложно вкатиться.
Чудище не осиливает орм настроить на 2 энтити и в жсон положить.
Пиздец.
Тут такое дело, чел... Как-бы тебе сказать.... Хубирнейт, чуть ли не единственный орм где возникают такие проблемы. Там буквально с самых простых кейсов все переусложнено. Про текущие абстракции я вообще молчу. Если есть возможность не использовать хубирнейт, то ей нужно воспользоваться.
Согласен. Я сейчас за 3 часа уже вовсем разобрался. С графами этими, fetch join и пагинациями. Это же пиздец. Почему он изначально делает так много всего о чем его не просят , и что бы заставить этого его НЕ делать нужно дописать дохуя аннотаций и надстроек. Проблема 1 + N это вообще прикол какой-то. Зачем сделали так что , если все зависимые сущности по дефолту выгружаются то надо 2 селекта ебашить.
>>59434
Я уже разобрался , но всеравно спасибо!
Лучше такой хуетой в принципе не заниматься. Что ты там обрабатывать собрался, лол? 2к23 на дворе, ну елы-палы!
В папку configuration
Почему ? Видел на каком из семинаров что через него обрабатывали ошибки , что бы выдавать инфу об ошибке юзеру и при этом не плодить логику в основных контроллерах.
мимо другой анон
Ошибки валидации, которые вылетают при @Valid и @Validated, если их отдельно не трогать, то они руинят с кодом 500.
А если тебе при ошибке валидации надо сделать редирект?
На верхнем уровне так и называешь сontroller_advice. Там не только эксепшоны можно перехватывать, но и сделать общую обертку для всех ответов например.
topics.sh kafka-consumer-console.sh
>Почему он изначально делает так много всего о чем его не просят , и что бы заставить этого его НЕ делать нужно дописать дохуя аннотаций и надстроек
Ну это как раз и есть особенности нацоинального маппинга реляционки на ООП. Без этого - никак. Или так, или твой ORM превращается в очередной диалект SQL на синтаксисе языка. Второе даже - не худший исход. Просто берешь честно учишь SQL и лабаешь на честном JOOQ, и получаешь ровно то, что от них ждешь. А не эти вот все n+1.
А нахуя мне использовать градл? Я мавен знаю в совершенстве, умею лабать на нем пайплайны любой сложности, умею писать для него плагины. Назови мне хоть одну причину обнулять свой опыт и аки вкатун вкатываться в градл? Что там есть такого?
XMLя нет? Ненависть к XMLю отдает инфантилизмом. А в случае с мавеновыми помниками, которые идея литералли за тебя пишет, хейтеры - вообще конченые сопляки.
Дублирование? Не знаю ничего ни о каком дублировании - в моих помниках его нет и не было. Гони пример.
Тирада про паренты - бред сивой кобылы:
>В градле же создать новый модуль это одна строчка в settings.gradle.kts
Так то и в мавене новый модуль - литералли одна строчка в modules корневого помника. А вот будет ли он наследником кого то или нет, решается уже тегом parent в самом модуле. Иногда полезно модуль намеренно не наследовать ни от кого, либо наследовать от не-корневого модуля. То есть, тэг parent - это нихуя не то же самое что запись в modules. Учил бы матчасть перед тем как набрасывать.
Добавлю. Мавен тащемто есть за что критиковать. Взрослый человек подверг бы критике отсутствие миксинов, из-за чего распространять мавен-профили по нескольким проектам может быть затруднительно. Критиковал бы кривую и местами неочевидную активацию плагинов. Критиковал бы то, что функциональность flatten-плагина не исполняется мавеном по дефолту, и нихуя не очевидно людям понять, что этот плагин зачастую маст-хэвный в работе с мавеном и устраняет кучу ошибок и недетерминированных ситуаций.
Но нет - мавен чихвостят дети, ниасилившие XML.
Взрослый человек просто понимает, что все альтернативы — это пиздец, на фоне которых все хотелки в миксины выглядят... просто несерьёзно.
>>59085
Обмазываться солидом != понимать солид. Тем временем единственная имплементация на интерфейс - прямое противоречие солиду.
Единичная имплементация - это не совсем джавистское, это скорее культура спрингокульта эпохи разгулья autowired'ов. Сложилась она из-за того, что спринг очень сильно смотрит на декларацию точек инжекций бина - их тип, имя, аннотации... Даже если ты объявишь интерфейс над сервисом, профита этот интерфейс тупо не даст. Если спринг найдет более одного бина-имплементации этого интерфейса на одну точку инжекции, он пошлет спрингосектанта нахуй до тех пор, пока тот не заменит тип точки инжекции на конкретный тип (литералли приколотит один бин к другому) или не обмажет ее уточняющими аннотациями (приколотит один бин к другому на полшишечки). В итоге выходит, что иметь больше одной имплементации на интерфейс для спрингосектанта зачастую тупо не выгодно, и культура инверсии зависимостей тупо срослась со спрингом и извратилась в их мозгах. Культисты конечно могут оправдывать себя, что это все делается для тестируемости, но это все детский лепет и нелепые оправдания.
В теории, сейчас, когда в спринге появились отделенные от бинов Java-конфигурации, эта культура имеет шанс потихоньку отмереть.
>Обмазываться солидом != понимать солид.
чел, там два боба договориться между собой не могут. Какой тут понимание у рядового гребца. Понимать чью версию?
>>Тем временем единственная имплементация на интерфейс - прямое противоречие солиду.
В джаве это только для юнит тестов и делается. Тесты такие все равно хуйня, но не все еще до этой мысли дошли.
>>нелепые оправдания.
Как ты при классическом подходе стаб со своей реализацией сделаешь без интерфейса?
Но когда делают интерфейсы, а используют моки - выглядит тупо, это да.
Вот эти вот хуевины:
https://www.tutorialspoint.com/spring/spring_java_based_configuration.htm
>Как ты при классическом подходе стаб со своей реализацией сделаешь без интерфейса?
Так всмысле? Претензии то не к интерфейсам. Разве я сказал что они не нужны?
Просто одно дело когда у тебя - обычный слабосвязанный класс с полями-интерфейсами, и ты в тесте просто собираешь его с фейками от этих интерфейсов. А другое - когда у тебя спринго-бин с аннотированными по самые гланды автоварями, и тебе уже нужно для тестирования собирать ебаный тестовый контекст через спринг-тест. И какбэ ок - с интерфейсами будет проще чем без них, но блять, это сука меньшая из проблем.
Бин можно по разному обьявить. Например раньше было принято класс сервисов аннотировать каким нибудь стереотипом типа @Service, а поля - аннотировать автоварями. Ключевое отличие в том, что в случае с джава-конфигурацией вся инфа о том, что-куда инжектить, находится отдельно от класса-бина, а в случае с автоварями на бине - внутри класса.
>>Разве я сказал что они не нужны?
Тогда я тебя не понял нужны они или нет.
Единственный смысл их существования - можно писать дегенеративные юнит тесты. Но если ты не дегенерат, то и интерфейсы выходит не требуются. Выпиливаю их отовсюду.
>>59749
И кстати да, ты прав говоря что:
>это только для юнит тестов и делается
Но в этом то вся хуйня и заключается. Если на интерфейсы смотреть лишь как на заглушки для подстановки фейков, то какбэ похую что имплементация одна. Но интерфейсы - больше чем просто заглушки. Интерфейсы - это каноничный способ инверсии зависимостей в джаве. А спектр применения инверсии зависимостей в разы шире, чем просто для тестируемости.
>Единственный смысл их существования - можно писать дегенеративные юнит тесты. Но если ты не дегенерат, то и интерфейсы выходит не требуются. Выпиливаю их отовсюду.
Ок, а тесты тогда как пишешь? Забиваешь на юниты и сразу тестируешь интеграциями?
Боже спаси анона от спиногрыза-айтишника.
Круды - интеграциями.
Сложную логику - отделяю от зависимостей и покрываю юнитами.
В идеале надо такую логику в чистые функции превратить без сайд эффектов и зависимостей, чтоб по сигнатуре было понятно что получает, что возвращает. Тогда это легко тестируется без моков.
Т.е. "тупой" сервис тянет данные от коллабораторов (база, другие сервисы), вызывает такие "умные" функции передавая им данные.
Получается DDD, гексагональная архитектура - вот это вот все.
В общем случае, если нет желания/возможности менять архитектуру и есть только сервисы в которых вперемешку логика и взаимодействие с коллабораторами - то лучше вообще не писать юниты, чем ебаться с их рефакторингом при малейшей правке. Они очень хрупкие и только вредят, замедляя разработку.
А как метод сервиса с кучей зависимостей от других репозиториев и других сервисов с походом во базы, внешние сервисы, кеши, мидлвари, очереди, интерсепторы и прочее говно превратить в чистые функиции, которым не нужны моки?
Нашел мурзилку с ответом. https://github.com/commonquail/java-hashset-arraylist-contains-benchmark
>Т.е. "тупой" сервис тянет данные от коллабораторов (база, другие сервисы), вызывает такие "умные" функции передавая им данные.
Отлично, глаголишь базу. Но вот скажи, разве у тебя не возникает нужды для своих чистых функций лабать функциональные интерфейсы, например? Для нужд функциональной композиции этих чистых функций? Или у тебя пока что всегда логика адекватно убиралась в тушку сервиса?
>Круды - интеграциями.
Не работает в случае монолитов. У тебя только контекст всего приложения будет несколько минут подниматься. Учти, что у тебя есть стейт в приложении и базе и его нужно как-то "сбрасывать".
теперь из тинька велосипедопетухов пора выгонять
Этот сломался, несите нового
там 400+ страниц в книге но инфа часто повторяется + много картинок, словно для дебилов написана. по ощущениям можно ужать до 150-200 страниц надо было походу лучше spring in action читать
Плохая, негодная книга. Она растянута на 400+ страниц, но там из главы в главу кочуют одни и те же картинки и примеры кода. Пересилил себя и дочитал ее до конца. Жалко потраченного времени, т.к. ничего нового для себя не узнал. В целом автор графоман сраный. У него еще есть книга по спринг секьюрити - там тоже самое говно и народ на амазоне плюется от airport english.
т.е. ты, имея базовые знания + возможно более расширенные, читал книжку "спринг за 24 часа" и удивляешься тому, что не узнал ничего нового?
Я, имея за спиной почти 10 лет гребли, читал эту книжку сквозь слезы, т.к. купил ее на сайте издательства. Теперь данный автор у меня в черном списке.
10 лет гребли? Че ты вообще пытался там найти? Или ты - перекатун с другого стека?
Она с большим опозданием появилась на либгене
Я прорабатываю и читаю книги от корки до корки. На жестком лежит более 10 гб разных книг, которые нужно прочесть и составить по ним конспекты
Там на сайте издательства есть содержания. И по нему ясно, что это книжка для совсем нулевых. Даже слабее pro spring и spring in action.
И опытному разработчику эти книги нафиг не нужны. Ему дока лучше подойдёт.
Мне понравилась обложка и я купил книгу. А у меня правило, что книги нужно читать от корки до корки, даже если они тебе не нравятся...
>>книги нужно читать от корки до корки
У тебя ОКР? Код идеальный пишешь? На код ревью доебываешься до кодстайла?
JVM просто останавливает этот тред дез всяких статусов и предупреждений?
Секунд 10 пытался понять, как ты пытаешься сосачерский тред на ctrl+c остановить.
я думал оно interrupted посылает всем тредам. А оно просто стопает. Тогда кто ставит статус interrupted?
Ну я нет, мб кто-то и юзает, вообще имхо хибер для простых и дефолтных операций, в остальных лучше пользоваться чем-то другим
Ты меня с кем-то спутал
Я только интеграционные пишу от апишки до тестконтнйнера. Реже интеграционные от сервиса, там обычно не база, а кафка или ещё что-то.
Классические юниты пишу только на кастомные валидаторы.
Мой лид запретил писать какие-либо тесты кроме юнит. Он дрочит команду по ТДД и заставляет прямо выдрачивать каждый класс. Мотивирует это тем, что у нас очень сложная логика (беттинг) и ее можно протестировать либо руками, либо писать 100500 юнит-тестов, которые разваливаются при малейшем рефакторинге.
Беттинг на жабе? Не знал лол.
ModelAndView - это хуйня для вкатышей, специально созданная для того, чтобы поиграться с шаблонизаторами HTML и никогда в проде не использовать.
Возвращаться должно DTO с данными, Jackson его конвертирует в JSON, фронтендер берёи этот JSON и делает с ним то, что ему захочется. Никаких "вьюх" у фронтендера нет, у него SPA-приложение на реакте.
Ответь для себя - ради чего существует твой юнит под тестом? В чем его полезное действие? В чем его функциональность?
Вот это и тести.
Я во фронтенд нихуя не шарю, поэтому извиняюсь заранее если вопрос тупой, но разве если ты отправишь в теле ответа JSON, наример, через ResponseEntity<ObjectDTO> или @ResponseBody/@RestController, то на фронт придет просто несколько строчек этого самого жсона. Ни хтмла, ни жаваскрипта там не будет. Как фронт-эндер это обработает то?
>Как фронт-эндер это обработает то?
Не переживай. У фронтендщиков уже как тыщу лет есть все средства и для обработки этого джсона, и для отрисовки странички на основе этого джсона.
Хтмл и жс будут загружены не через твои рестконтроллеры, а из статики, которая, возможно, вообще раздаётся через nginx. А тебе остаётся только отдавать жсоны, клиент их сам загрузит и обработает через AJAX (или его аналог).
Но проблема юнитов не только в хрупкости.
Вот есть у тебя некая апишка. И она задевает 15 методов в 10 классах. Ты их все анально отюниттестил.
И как юниты тебе гарантируют, что вся апишка работает правильно? Все 15 слоев юнитов могут быть зелёными, а апишка делает хуй знает что. И юниты ещё и мокать надо дохуя.
>>61834
>>61837
Понял. Последний вопрос, за редиректы фронт или бэк отвечает? Допустим при удачном логине редирект на главную, при неудачном заново на страницу логина. Это бэк должен делать, или бэк просто шлет обратно жсончик, а фронт-макака уже сама но основании него решает что куда редиректить?
>И юниты ещё и мокать надо дохуя.
Что мы активно и делаем. Мокается все - репозитории, всякие клиенты для других сервисов и т.д и т.п. Прямо задрачиваешь до потери пульса эти моки, а потом их настраиваешь в каждом тесте. Один такой класс может иметь по 7-10 зависимостей, которые нужно замокать.
нихуя вы чушки
а его можно осилить? Думаю даже авторы хибернейта не знают всех закоулков своих кишочек и что этот хибернейт сгенерирует
?
В SPA есть собственный роутинг, там страница по урлу сама решает, что на ней будет отображаться. Формально не редиректы, но смысл тот же. Соответственно, редиректы для авторизации делаются через эот механизм.
> не люблю хибернейт
JdbcTemplate
> не люблю микросервисы
Java EE 6
> не люблю дядю боба и его охуительные идеи
Mr. Nagoor Babu
> не люблю рест
SOAP
Сам попытался сделать
@Autowired
private EntityManager em;
int batchSize = 50;
int i = 0;
for (Foo foo : foos) {
em.merge(foo);
i++;
if (i % batchSize == 0) {
em.flush();
em.clear();
}
}
К примеру скопипастил https://vladmihalcea.com/the-best-way-to-do-batch-processing-with-jpa-and-hibernate/
Но нихуя.
ЧЯДНТ?
кабан кабаныч говорите что хотите
А как же Даг Ли ??!!?!?
Не советую.
И даже не потому, что оно обьективно - говно. А потому что это выдает в тебе токсичного еблана - не то качество которое имеет смысл выпячивать на собесах. Плюс - если ты ляпнешь что что-то не любишь, гарантированным вопросом вдогонку будет вопрос "почему", и в этот момент ты для интервьюеров станешь как открытая книга, они тебя прочитают вдоль и поперек, протыкают во все телесные щели. И скорее всего ты засыпешься, потому что бряцать мудями на двощах - не то же самое что обосновывать свою позицию на интервью.
>И даже не потому, что оно обьективно - говно. А потому что это выдает в тебе токсичного еблана - не то качество которое имеет смысл выпячивать на собесах.
Ницше писал о таких как ты. Это процесс причащения к нечистой совести ценностей низших иерархий. Ведь на деле это ты низшее из существ, пытающееся навязать анону свою мораль, а также своим грубым фарсом выставить честную позицию как токсичное мнение. Нечестивейшее из существ попирающее право сильных, обличил я твой яд и уличил в искусности речи твои. Да не будет анон обманут ложью твоей и не разделит морали твоей, ибо пустыня растёт - горе тем кто несёт в себе пустыню!
О, а ты забавный.
>пытающееся навязать анону свою мораль
Где я навязывал? Анон вопрос спросил - я ответ ответил, а ты чет взял и на залупу залез. По сути - я даже против токсичных ебланов ничего не сказал. Сказал лишь что вываливать это качество на собесах - тактически неразумно.
>честную позицию
На собесах не позицию оценивают, а компетентность и способность пояснить за базар. Если местные балаболки на это способны - ради бога. Только на практике обычно все складывается так, что такой вот мамкин хейтер обычно сильно плывет в предмете хейта, и способен только тупость свою обличить. Собесили, знаем. Да и че далеко ходить - достаточно посмотреть на уровень аргументации местных шизов в этом треде.
ок, давай потренируемся.
Хибернейт - непонятно какую проблему решает, при этом добавляет множество других проблем. Создаёт иллюзию ненужности sql, но это ложная эллюзия. Постоянно требуется проверять что он там генерирует и как это исправить.
Микросервисы - из плюсов - в теории позволяет масштабироваться там, где монолит уже никак не вывозит. Удобно делить разработку по командам.
Минусы: транзакции, сетевое взаимодействие вместо стека/шины, получение огромного количества внешних интерфейсов, по которым теперь надо поддерживать огромную совместимость. Необходимость оркестрации, логирования, мониторинга всех этих десятков микросервисов. Девопсу теперь нужно знать внутреннюю реализацию систему. Если они написаны на разных языках - вообще анал карнавал, теперь надо держать девелоперов для каждого языка. И я ещё не видел ни одной системы, где микросервисы были бы не распределённым монолитом, и где типа при падении одного система продолжает работать.
Дядя боб - в общих словах пишет правильно, как показывает примеры и код - там пиздец. Вместо чистых функций предлагает использовать члены класса. Для меня это зло как глобальные переменные и нарушение инкапсуляции. 100% покрытие тестами - ничего не дает, зато очень дорогое и очень ломучее и затрудняет рефакторинг.
Рест - соап лучше, логичнее и красивее. Рест это для вкатунов, не осиливших соап
Репорт самофорсера.
В производительности. Статики это норма, но умение пользоваться ими так, чтобы не превращать свой код в лапшу — высшее мастерство.
>Они по сути и не нужны больше никому кроме этого координатора.
Очевидно только в контроллере и должно оно лежать (если не рассматривать тот факт, что контроллеры — антипаттерн).
>Вот смотрю все хейтят статик методы
я не хейчю. Статик функция без обращения к внешним переменным - это идеал. А вот бобу они почему-то не нравятся
>Хибернейт
Несмотря на то, что я с тобой согласен, и тоже считаю ОРМы плохой идеей, в этом месте я б задал тебе парочку вопросов в духе "что такое персистенс-контекст" и "4 аггрегатных состояния сущности в нем". Так, знаешь, чисто чтоб проверить что ты осознанный противник концепции и свой пуд соли сожрал на этом говне. А не промытка, начитавшийся чужих виршей.
>Микросервисы
Здесь ты уже приспособился и перестроился. Не хейтишь втупую, а расписываешь достоинства-недостатки. Это приемлемо. Хотя в этом месте я б попросил тебя раскрыть значение термина "распределенный монолит" и рассказать побольше о том, как его избежать в ситуациях, где микросервисы таки нужны (во имя масштабируемости и других их бенефитов).
>Дядя боб
Дядя боб - много лет уже как публичная персона, и виршей понаписал - будь здоров. Без ссылок на материалы, которые ты хейтишь, я вообще не ебу что конкретно у него ты хейтишь, и о чем с тобой тут говорить. Где предлагает, кого предлагает... Хейти тогда уж "чистый код" такой-то редакции, приводи выдержки его кринжа, я не знаю...
>Рест - соап лучше, логичнее и красивее. Рест это для вкатунов, не осиливших соап
Во, вот эта твоя вирша про рест уже звучит как тот самый кринжовый хейт на собесах. Здесь бы я копнул поглубже на предмет того, что ты вкладываешь в слова "лучше", "логичнее" и "красивее". Дополнительно чекнул бы твою эрудицию на предмет того, знаешь ли ты вообще хоть чето кроме REST и SOAP + чекнул, какие вообще API ты лабал на прошлых местах работы.
>знаешь ли ты вообще хоть чето кроме REST и SOAP
а что бывает кроме реста и соапа? Бинарные протоколы?
Хейт к статик-функциям имел смысл до джавы-восьмерки, потому что до восьмерки не существовало простого способа использовать эти т.н. "чистые" статические методы как first-class citizenы, из-за чего был высок соблазн тупо коллить их одну из другой и тем самым их каплить друг на друга. First-class citizenом в джаве исторически был и остается обьект.
Сейчас, с лямбдами и функциональными интерейсами, стало чуток получше. Теперь хотя бы можно относительно немногословно оформить функцию как обьект.
Кто-то вспомнит graphQL, кто-то - gRPC. Некоторые даже RSocket помянут. Неважно. Это вопрос на эрудицию. А то камон - SOAP в 2023м все же отдает нафталином.
Хейчу.
Doomsday Device, устройство судного дня
Видимо, нужно просто заучивать все эти задачки.
Тяжело…
1) какой фреймворк лучше взять для рисования гуя?
2) как компилировать приложение под разные ос? Желательно чтобы это была таска гредла. Нужен не jar, а именно exe под винду и тп
Даже не еби мозг и бери электрон js, но если уж так нужно для jvm то сейчас стандарт это https://github.com/JetBrains/compose-multiplatform
Спасибо. У меня просто логика на котлине под андроид, и теперь надо ту же логику сделать под десктопы. Переписать её на js и потом поддерживать две параллельные ветки - так себе идея.
Составляют доменную модель и ведут разработку от неё.
Ты че, охуел, пёс? Ты загуглить не можешь?
Или так делать нельзя ?
>>63501
Любителям делать контрол флоу через эксепшоны посвящается. Заметил тут паттерн.
Всем нормальным разрабам давно известно, что контрол флоу эксепшенами - антипаттерн и оверхед из-за сбора стектрейсов, которые из-за флоу-контрола один хуй никто никогда не увидит. Но некоторые находчивые индивиды придумали занятный костыль: делают наследника класса эксепшена, и стаббят в них метод fillInStackTrace. Заметил такую штуку в нескольких опенсорцных проектах. Как пример - класс Signal в Netty:
https://netty.io/4.0/api/index.html?io/netty/util/Signal.html
https://github.com/netty/netty/blob/ba804498ac1baf4da91275326eeba45552ab6ebf/common/src/main/java/io/netty/util/Signal.java
Каково, а?
>побэнчмаркать
а как? я бы додумался только время замерить на миллионах иттерациях добавления/удаления и тоже самое для уже реализованного в java линкед листе для сравнения
>ускорить
зная длину списка при каждом удалении (length / 2) и индекс, определять с какой стороны быстрее начать пробегать список (head / tail). еще проверку в самом начале добавить, если индекс выходит за границы, то сразу выходить из метода
>я бы додумался...
Почему бы и нет. Плюсом было бы, если б ты это делал каким нить бенчмарк-тулом типа JMH, а не тупо разницей System.currentTimeMillies. Ну и какбэ - мало и необьективно сравнивать только с линкед листом. Есть еще несколько тред-сейф листов из java.util.concurrent
>ускорить
Цимес в другом. Тупо навешенный на методы синхронайз - это крайний случай. Потокобезопасности ты может и добьешься, но throughput скорее всего будет днище.
Но это все слова. На деле - надо смотреть код и бенчи. Здесь начинается интересное приключение, где ты ищешь косяки с конкарренси, анализируешь и оптимизируешь свое решение, проверяя его эффективность бенчмарками. Интересная задумка на тестовое задание, лол.
такое правда на джуна могут на собесе спрашивать? я смотрю на ютубе всякие "типа собесы", и там вопросы уровня вкатывальщика /b. это наеб все получается?
Не факт что джуна вообще заставят писать коллекции. Но тыж сам пришел с куском кода.
ну так одно дело реализовать базовую коллекцию, другое дело прикручивать к ней йоба навороты до посинения. и на тех собесах, мне частенько попадалось где просили написать линкед лист или хеш мапу. даже пару раз дерево было обычное бинарное, но это считай тоже самое что и линкед лист я не против разобраться и потыкать всю эту хуйню, наверняка на практике все равно бы столкнулся рано или поздно, особенно когда уже был бы бэграунд за плечами коммерческой разработки, но только на непосредственно реальных примерах реальных проектов, а не на голом линкед листе
Ну ок, ладно, наверное от джуна я действительно запросил много.
Вот тебе попроще ремарка. Твой лист - лист интов. Сделай так, чтобы он был дренериковым.
*дженериковым
В джаве не актуальна тема кодстайлов, есть единый стандарт от Sun/Oracle, которому все следуют. Вот в крестах о кодстайлах можно сраться вечно.
Allman тоже mental disorder.
Стоит как-нибудь на собесе на лайвкодинге в хаскелль стайле пописать.
НЕ РАБОТАЕТ НАВИГАЦИЯ К РЕАЛИЗАЦИЯМ И НАСЛЕДНИКАМ КЛАССОВ ИЗ ЗАВИСИМОСТЕЙ
Есть единый стандарт - ctrl+alt+L в идее.
Всё работает.
Да.
С какого эта хрень зовется хаскель-стайлом? Нихуя не похоже.
Хаскель(или питон-)стайл был на прошлом моем проекте. Там была странная мода делать выравнивание списка аргументов метода (даже если они идут в несколько строк) по уровню открывающей скобки, из-за чего любая цепочка вызовов уезжала пиздецки далеко вправо.
Ебанистика лютая.
Это стандартный стиль идеи.
Бля, точняк. Но как по мне, хаскеллю этот стиль тоже не идет.
Ну об этом я сразу подумал, когда только начал писать, надо ли его универсальным делать, решил что разницы нет, реализация все равно будет та же. На собесах же важнее показать, что ты алгоритм понимаешь? В крайнем случае можно с интервьювером обговорить этот момент, я думаю
Мееех, алгоритм-шмалгоритм... Я конечно хз в какой фаанг ты собрался устраиваться джуниором, и всяк анон собесит по своему, но говоря за себя, скажу что на работе листы ты все равно сам писать не будешь, поэтому мне, как интервьюеру, было бы на алгоритм поебать, если честно. Вот другое дело - дженерики. Дженерики пригождаются на практике часто.
И как бы тебе сказать в ответ на "разницы нет". Это на первый взгляд кажется что нет. Простой заменой int на <T> ты бы не отделался.
лист это как пример структуры данных, я сейчас его переписываю иногда, чтобы лучше закрепить алгоритм в голове. тоже самое и с другими базовыми алгоритмами буду делать. цель - дойти до красно-черных деревьев и написать их самому. а что касается дженериков, почему не обошелся бы простой заменой? какие там приколы еще?
Да.
Обработка эксепшенов в спринге декларируется ExceptionHandlerами, а хендлеры в свою очередь вешаются на конкретный тип эксепшена.
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ExceptionHandler.html
С 21-й джавы будут виртуальные треды, которые крутятся на форкджойнпуле. Это будет базой многопоточки в джаве. Поэтому знать надо. Но т.к. ты скорее всего вкатунец, лучше не трать время. Вакансий на джаву нет для джунов. Вообще.
Врядли форкджойнпулы будут строгой необходимостью для зеленых ниток в джаве. Те же комплитабл фьючи, хоть и используют FJP по умолчанию, вполне себе можно запустить и заставить работать на обычных пулах.
Кому не похуй на 21 жабу, много кто с 8 слезть до сих пор не может. да и знать, как под капотом работают виртуальные треды тоже нахуй не надо, как и не надо знать, что под капотом у хэшмапы, чтоб ей пользоваться
и я уже вкатился, так что хуй соси
>что под капотом у хэшмапы, чтоб ей пользоваться
Ага. А потом ебись с просадкой перформанса из-за чьего то кривого хэша. Или утечек памяти из-за кривого equals.
То, что ты написал, это база. Я имел ввиду скорее хуйню типо, что хэшмапа базируется на массиве, в котором линкед листы для разрешения коллизий, которые преобразуются в красночерные деревья и прочую поебень, которую знать не обязательно, чтобы пользоваться этой самой хэшмапой.
На прошлом проекте коллега рассказывал - пробовал с помощью FJP разогнать один очень долгий биоинф-релейтед алгоритм. Говорил - еще медленнее стало, в итоге дропнул.
Ну пон, я так и думал, что это хуйня ненужная, как и линкед лист
Баг-то хоть завели?
Сугак, сука! Почему ИДЕЯ КРАСНИТ?!!!!!!!
прост)
Я тоже понял, куклодаун, пусть это говно разговаривает с уважением, а не как в чятике впараше.
лох
За разработку на жабе начали убивать.
>«Какая трагедия. Я помню код Боба, который генерирует определённые числа. Код Боба написан на Java, но в нём используются умные методы поиска с возвратом для достижения наилучшей производительности среди многих решений на всех языках»
Немного за другое убили.
findByIgnoreCaseOrderBySurnameAsc
findByOrderBySurnameAscIgnoreCase
Не работает.
@Query(native = true, ...)
linkedList() += "мам я долбоеб"
linkedList += ("мам я долбоеб")
Потому что язык не даунский
Да как же ты заебал.
Очень долго. Я через embedded-kafka тестю. В тестконтейнере постгрес.
А так в тестконтейнер еще и минио и кейклок если кидать, то полный набор интеграционных тестов для небольшого сервиса в 30к строк будет идти от 20 минут.
> embedded-kafka
Это как? Поднимаешь у себя кафку и прогоняешь тесты? Или там есть какая-то зависимость как в спринг тестах с эмбедед h2
It's Java, bruh ;)
> Чо вы делаете если хотите низкоуровнево вывести картинку на экран? Уровня SDL
Запускаю Visual Studio и создаю проект на C++.
Видимо придется lwjgl, хотя это оверхед
Нет, не надо.
Вот приходит мне лист с entity, рандомное кол-во будет уже существующими в бд записями, а другое новыми.
Как я понимаю .merge нужно делать на существующие entity, которые в detached, я не могу делать это одновременно на все entity потому что главный айдишник ведь null и получатся будет всегда insert, который потом в ошибку выпадет ибо бизнес id UNIQUE.
Я не хочу каждый entity грузить из базы заранее и смотреть существует или нет, ибо это доп реквест в базу и не имеет смысла для новых записей.
>Или там есть какая-то зависимость как в спринг тестах с эмбедед h2
Да, инмемори эмуляция кафки. Как h2 эмуляция хуже, чем тестконтейнер. Но я в простых тестах на консьюмер/продюсер не заметил разницы c тестконтейнером. Но поднимается быстрее на порядки.
Да это понятно, но я думал можно хибером сделать, чет у меня теряется в него вера.
Это нормально.
Что тебе мешает сделать merge на все entity из коллекции? При вызове merge хибернейт сам решит нужно ему делать запись или обновить существующую
оно тебе сто запростов сделает вместо одного...
Если положить хуй на производительность, никакие абстракции течь не будут. Авторов спецификации ведь не беспокоили несуществующие проблемы типа нагрузок, им хотелось побыстрее высрать API для клепания крудов макаками.
пиши нормальные тестовые именя
Как вкатиться в это ваше крудошлепство?
Есть ли книги по джаве где бы конкретно пояснялась работа крудера в энтерпрайзе?
тестишь только что твой пук ушёл в кафку в нужный топик. Всё
Есть 2 либы. Одна моя, другая чужая. И есть пользователь этих либ.
Как мне в своей либе запретить пользователю пользоваться бином из чужой либы?
Протестируй что во время пука в кафку данные всегда корректно маппятся в кишечные газы и пук работает. От неправильного пука жопа целиком не должна рвануть.
Протестируй что делает жопа если некому занюхнуть пук в течение 30 секунд.
Протестируй что ты можешь пукнуть и сразу же занюхать свой пук через противогаз (read-your-write) поведение. Если это нужно.
Нахуя тестировать внешние инструменты?
Кондишн он бин, возможно
Работаю уже год джава работягой, в проекте есть кафка, раббит, постгря и монга.
Немного загоняюсь что проект не высоконагруженный и нет saas, так как планирую съебать, а за бугром как я понял все в облаках.
Собственно пришел спросить, на работе есть вариант писать сервисы на котле или иногда ковырять реакт/тайп скрипт, выбрать можно только одно, что перспективней для эмиграции? Я посмотрел вакансии на монстре и индид и у меня какое-то двоякое ощущение, иногда от бэкендера требуется джава, шарп, плюсы и все это сразу, есть и вакансии фуллстеков, непонятно что востребование.
>Работаю уже год джава работягой, в проекте есть кафка, раббит, постгря и манга
У меня из этого только джава пятая
я так понял что у себя объявляешь объявляешь бин @Primary и делаешь пустую реализацию
Всмысле. При чем тут сисурити? Клиент сам куки хранит столько, сколько ему нужно, он твоего разрешения и не спросит даже.
еблан яву с яваскриптом попутал
Да.
Мне кажется, книга лучше чем эти статьи...
Все правильно, это O в SOLID.
Ну по идее, можно просто бин прописать в своей либе без кондишена и тогда в случае, если кто-то тот же бин продекларирует, то приложение просто свалится. Хотя эту хуйню легко обойти, если просто имя бина изменить
Как что? Я же написал. Primary id у entity нет и потому жопа считает это новым обьектом. Следовательно хибер генерит insert и пытается засунуть, после чего падает с ошибкой. Я пытался через @NativeId но чет залупа какая-то
>Если хочется почувствовать себя илитарием можешь в самом деле оригинал почитать, кек.
Илитарий уровня джавамухи.
Если хотел выебнуться эрудированностью, говорил бы не "носорог", а "грааль".
Не важны, главное спринг бут выучи.
O и I это важные буквы в SOLID.
Поясните, на айос норм работать джависту?
Я 5 лет работал на убунте и был доволен как слон, потом пришёл в другую компании и тут работаю уже почти 2 года на ебучем виндовсе из-за корпоративной политики. Как же сука он меня бесит. Компания может дать мне мак, вот только я абсолютно ничего про него не знаю. У меня из эпла только айфон и айпад - там всё анально ограничено. В маках так же? Какие вообще подводные? Какие у вас впечатления? У меня много коллег джавистов вроде юзают и им норм.
ебать он тупиздень просто?
Объясни как кластеризировать сервак?
Должна быть какая-та балансировка запросов, кеш общий для синхронизации
Это как проворачивается? Спринг-кластер что-то типо того
Или это уровень выше - докеры, кубы? + редис для кеша?
ehcache в кластере может работать. Это как происходит? Тыкал кто в это?
лучше винды. Бери
Впринципе норм. Есть два подводных:
- будешь по первости путаться с раскладкой (cmd вместо ctrl)
- рискуешь переучиться и стать собачкой Apple
Я бы на твоём месте оформил срыгос из компании, если бы меня заставляли сидеть на неприятной мне операционке. Для задрота операционка это как ноги.
На шинде джсоны не перекладываются?
По спрингу, если ты на нем писал читай доку спринг-кора и сбринг-бута.
>реквестую
>неуверенный мидл - хочется хотябы уверенным стать и начать двигаться к уровную помидора.
Начни с того что перестань реквестировать. Синьор на то и синьор, что самодостаточен, и способен всю инфу собрать сам.
Может быть ты просто не умеешь вопросы задавать?
Двачую.
На работе
Практически нигде и только там, где обстоятельства обязывают использовать его.
Твоя жирная мать умрёт.
>манипуляции провожу с jks файлами
>То что ты описал это стажёрские таски лол
Ээээээээ..... Нет, чел..... Это не стажерские задачи........
А ты не охуел ли свою работу нам передавать?
>Сможешь предложить что то лучше/быстрее йоба парсера стринги? (некоторые жсоны это 40к символов)
PL/SQL?
я бы через текст и регулярки делал
1. рекурсивной сте получаешь колонки jsonpath и значения c юидами через jsonb_path_match(jsonb, like_regex)
2. удаляешь по jsonpath нужные элементы через #- или строишь новый
Ну и упоминание постгреса и версии значит, что ты хочешь это сделать на уровне постгреса, что к java треду не имеет отношения.
В жаве через jsonpath библиотеки это сделать проще. Но придется туда-сюда гонять большие джейсоны.
А вот по дизайну и архитектуре тут полон тред мастеров советы давать. Это как раз можешь не бояться спрашивать.
На такую хуйню обычно тут отвечаю я, в лице джуна с годом опыта в помойной галере.
Да.
Приветствую донов джавы. Вопрос от неофита: если еще какие-то адекватные способы получить IntelliJ IDEA Ultimate бесплатно не создавая каждый раз новый аккаунт?
зачем? Комьюнити хватает
Устроиться на работу.
Легче всего сделать два запроса. Одним сформировать список jsonpath для удаления, вторым сформатировать запрос на удаление: сконвертить jsonpath в формат, который потребляет #- оператор и сделать множественный #-.
Может и в один можно оптимизировать. Почитай про функции для jsonb https://www.postgresql.org/docs/12/functions-json.html
40к символов джейсонка для жаба хипа это посильная задача. А вот туда-сюда в базу несколько раз кидать столько данных это такое себе.
>другие потоки в if statmentы этой переменной не лезут и ждут)
Это задача не для атомик булена. Ты описываешь типичную критическую секцию. Просто заворачиваешь в синхронайзд и все.
>>69074
>Есть AtomicBoolean, который используется в разных частях программы
Можешь даже в качестве монитора этот атомик булеан заюзать (если я ничего не забыл).
Еще есть всякие getAndUpdate, но с ними надо аккуратней, передаваемая в них лямбда может исполняться больше одного раза за вызов, поэтому если лямбда не стейтлесс, получишь конфуз.
Таки объебался - updateAndGet есть в AtomicReference.
>>69117
Во первых - нет. Есть кейсы, когда обьект лямбды создастся единожды, а не на каждый вызов (в случае, если лямбда не делает никаких замыканий на переменные).
Во вторых - для конкарренси это не имеет ключевого значения. Ключевое значение имеет обьект-монитор, а он в свою очередь вовсе не обязан быть обьектом this. В случае с лямбдами по умолчанию вообще не предусмотрено никаких синхронизаций, ибо дорого и оверкильно. Более того, блокировок нет даже в вышеупомянутом getAndUpdate - оный просто лабает лямбду в цикле до тех пор, пока не опубликуется обновленное значение. Так что непонятно, к чему ты об этом заговорил.
Критикуешь - давай конкретику. Иначе иди нахуй.
Тяночка...............
https://youtu.be/YaJcBKjC1ec?t=2350
>Я так и не понял, при чем тут какие-то спецификации :) Ждал, что будет что-то связанное с OpenApi (как проверить реализацию по специализации, да еще и сгенерить это как-то из ямл-схемы)
>Доклад в целом про "модульное" тестирование с разбиением по слоям - делаю всегда так же. Мой типичный шаблон микросервиса - с десяток модулей (rest, service-api, service-impl, data-api, data-impl), и каждый тестируется на моках низлежащего на все тонкие кейсы вдоль и поперек (база - @ДатаДжэПэАТест, веб - на @ВебЭмВисиТест), и сверху интеграционные тесты с простейшими условиями чтобы проверить что всё от контроллера до базы пробегает насквозь
>Но в целом доклад полезный :)
В голосину проиграл с помойных джавамух. Что вы там тестируете на моках, джавамухи? Сначала рест-контроллеры свои помойные на моках дрочите (что вы там тестируете, лол?). Затем базу данных на моках "тестируете". Вы совсем там обезумели, джавамухи? Прямо эталонное вжжжжжжж, лол!
Я и сам частенько в голосину фрустрирую с повадок спрингокульта. Но вот мне интересно - ты сам то свое видение на данный счет поведаешь? Или ссыкло?
Мимо
Есть смысл учить JDBC?
Хоть и не открытие, но это лучший ответ который я когда-либо слышал на свой вопрос в жизни.
Ну хуй с ним просто пойду упорно учить спринг дальше, воодушевил, спасибо.
Для меня никакой разницы. Видел проекты на жаве на всех трех. Для общего развития я бы выбрал рякт, как раз потому, что он максимально непохож на спринг, попробовал бы другой подход.
Если для работы - желательно беку вообще не лезть во фронт. Современный фронт это не так уж просто, особенно по затратам времени. Вместо этого лучше потратить время на изучения жабы, бд, кафки, микрочеликов, спринга и кучи других библиотек, технологий и паттернов для чистого джависта.
Почти все работы с фулстеком на жабе это плохие проекты и компании.
Фронт: ...
Ряякт индусский, ангуляр умер, вью никому не нужен. Пускай вебмакаки в этом говне копаются, не царское это дело - фронт писать.
Пишу impl всех слоев трехслойки. В контроллере удобно разделить кучу аннотаций между реализацией и интерфейсом. Обычные сервисы и репошки иногда мокаю в тестах(но тесты с моками пишу очень редко).
Прочие компоненты, типа хендлеров, раннеров разных имеют часто несколько реализаций. Сервисы иногда тоже. Контролеры тоже видел пару раз.
Фронт: жаба
Фронт: ждет
Я открыл один там нет инфы на русском...
54 сайта с инфой о спринге йо-хо-хо
Я открыл один там нет инфы на русском...
...
1 сайт с инфой о спринге йо-хо-хо
Я открыл один там нет инфы на русском...
...
Нет инфы о спринге...
>нет инфы на русском...
>Нет инфы о спринге...
Зачем ты пошел в программирование, если даже такие базовые вещи не тянешь? Ты понимаешь, что программирования просто не твое? Пошел бы таксовать или грузаном работать в пятерочке - пользы бы от тебя было кратно больше
У Яндекса есть встроенная функция перевода выделенных слов (иногда косячит), позже я скачал firefox и плагин для того же, но более удобно. Я так очень хорошо вкатился в базовые английские понятия во время чтения docs.oracle , если было туго то смотрел курсы или статьи.
Это зависит от стека, обычно в докере запускают всякое питоноговно. Спрингу обычно докер не нужен, хоть он его и умеет
Его обычно для тестовых/промышленных серверов используют, разрабы чаще локально запускают всё без докера.
Давай расскажи нахуя спрингу докер
В шепот с этих «бекендеров»
Сейчас для бэкенда его используют буквально всегда. Даже если на проде приложение не контейнеризируется, для тестов тестконтейнеры сейчас индустриальный стандарт.
>3. являются экземплярами переменных;
Это как ?
В чем шепот, дедуля? Берешь делаешь докеркомпос с постргей+кафкой+зукипером+кейклоком+минио. Кое какие конфиги рядом складываешь.
И локальное окружение поднимается одной кнопкой за минуту. А не надо сидеть все руками устанавливать по списку из 40 пунктов.
Удаленное тестовое окружение это еще хуже. Во первых ты там ограничен, не один ты на нем работаешь. Во вторых тебе надо прописывать всякие хосты у себя на машине, чтобы это говно работало.
Ну и тестконтейнеры это вообще топ. С ним можно не писать идиотские юниты и покрывать все подробно интеграционками.
>зукипером+кейклоком+минио
Прямо буллшит бинго собрал, лол!
>Ну и тестконтейнеры это вообще топ. С ним можно не писать идиотские юниты и покрывать все подробно интеграционками.
А вот и любители интеграционных тестов пожаловали. На каждый покак в базку ты контейнер будешь поднимать, лол? Юнит тесты - это база. Если ты не можешь написать юнит тест на свой код, значит код - говно. Ну и тесты ты свои будешь гонять в лучшем случае полчаса-час, если проект средний по размерам. Когда юнит тесты пробегут за секунды.
щас только весь мир замокаю
Что тестирует юнит тест в жабе?
Класс он тестирует. Абстрактно в вакууме. А поведение он не тестирует. Особенно когда у тебя куча логики под капотом у спринга, хибера, жука, любых других библиотек и фреймворков. И твой собственный код одного сценария использования разнесен по 10-15 слоям бинов.
Юнит-тесты в таком случае тестируют непонятно что. Какую-то маленькую часть логики. Можно для одного единственного эндпоинта на все 10 слоев написать 50 зеленых тестов, а реальное использование ручки они тестировать не будут. Потому что слоев дохуя и еще раз напоминаю, что кучу логики под капотом у спринга. То есть, чтобы юнит тесты не были профанацией, ради покрытия - ты должен в голове у себя держать связь между кучей бинов и досконально знать как с твоим кодом взаимодействует спринг.
А можно написать 5 интеграционных с поднятием контекста и мокать только то что явно мешает. И ты увидишь как работают твои 2 успешных и 3 кейса с ошибкой почти в том же виде, как сервис будет работать на проде.
>ты должен в голове у себя держать связь между кучей бинов и досконально знать как с твоим кодом взаимодействует спринг.
Просто нормальные юнит тесты пиши. Для таких как ты даже воркшопы сделали - >>70130
Просто нужно качественно все мокать. А твои "интеграционные" тесты, когда ты все перемокал - нахуй никому не нужны. Хохочу в голосину с таких мокальщиков, которые тащат какой-нибудь моксервер и начинают мокать ответы хуитки, которую они не контролируют и не владеют.
Тест с таймада в видосе >>70130 - интеграционный.
Слайсовые тесты спринга, типа @DataJdbcTest - это интеграционные тесты. Как и @SpringBootTest
В них поднимается контекст/часть контекста спринга. Поднимается контекст - уже интеграционный.
А в @DataJdbcTest еще и датасурс к бд.
Юнит тест это @ExtendWith(MockitoExtension.class)
Как по-простому написать прокладку, которая будет запоминать значения произвольного метода и вызывать его только в случае, если вызова с такими параметрами нет в кэше? Я не хочу тащить фреймворк или библиотеку для этого
типа Object proxyCall(Class clazz, Method method, List<?> parameters);
Вопрос в другом.
Нахуя вообще лабать прокси через рфлексию, когда написать один декоратор на публичном интерфейсе - дешево и надежно.
For example, class String from Java is a good example of a bad design. It has more than 20 utility methods that should have been provided as decorators instead: trim(), toUpperCase(), substring(), split(), and many others, for example. When I want to trim my string, uppercase it, and then split it into pieces, here is what my code will look like:
final String txt = "hello, world!";
final String[] parts = txt.trim().toUpperCase().split(" ");
This is imperative and procedural programming. Composable decorators, on the other hand, would make this code object-oriented and declarative. Something like this would be great to have in Java instead (pseudo-code):
final String[] parts = new String.Split(
new String.UpperCased(
new String.Trimmed("hello, world!")
)
);
To conclude, I recommend you think twice every time you add a new utility method to the interface/class. Try to avoid utility methods as much as possible, and use decorators instead
Хехехе, я знаю откуда ты это взял)
То что описывает Егорыч, называется функциональной композицией. В функциональных языках оно устроено ровно так, как он описывает - есть тип String, и есть отдельный набор никак друг с другом не связанных (в один класс) функций, которые можно композировать друг на друга и применять получившуюся композицию на стрингу.
Упускает он лишь один момент - в то время как на каком нить хаскеле декларативная натура хаскеля проходит пучок оптимизаций на пути к преобразованию в императивный машинный код, на джаве это будет тупо лишняя аллокация декораторов. На уровне банальной стринги оверхед будет довольно заметен.
Бред.
>It has more than 20 utility methods that should have been provided as decorators instead
Бугаенко писал? Его шизу я сразу узнаю.
Если тебе надо, чтоб колбэк отработал полностью, то ставишь в конце атомик свой. Если просто, что пошел вызов, то можешь в начале. Промежуток там будет это загрузка аргументов метода на стэк в жвм. Это наносекунды буквально. Можешь просто ебануть синхронайзд или лок. Производительность упадет, но паранойи не будет.
Хориков и его книга/выступление это кстати единственное, что я полезного видел с примерами на шарпе.
>Лучше вообще тесты не писать, чем такие - больше времени на переписывание тестов уйдет, чем на дебаг.
Моя позиция такова, что работа на проекте должна быть выстрадана. Должно быть физически неприятно работать с кодом проекта. И я не говорю про какой-нибудь легкий дискомфорт или шероховатости. Здесь речь про невыносимые страдания и истерики, когда ты от бессильной злобы сжимаешь до скрипа зубы. А когда фляга начинает конкретно так свистеть, ты вскакиваешь из-за стола и начинаешь орать во все горло, при этом колотишь со всей дури кулаком в стену
Сцук, ебанаврот, и ведь таких непоследовательных терпил реально в индустрии дохера. Ебануться.
>>71771
Выстраданным должно было быть образование анальника. Кабану ни в хуй не вперлись пиздострадания красноглазых.
А так как айти-образования не существует впринципе как категории (равно как и в целом нормального образования), вы, жертвы ЕГЭ и айтишных курсов, и мечетесь от одной крайности в другую - одни забивают и пинают хуи, а другие выдумывают всякую софт-скилльную ахинею: "терпеть и жрать кактус".
>непоследовательных
В каком смысле? Я тебе расписал как должен выглядеть типичный день разработчика.
Как раз в таком смысле, что ты, напрочь игнорируя и даже не пытаясь искать и понять причины неэффективности практики тестирования в проектах, пытаешься расписывать какую то терпильную софт-скилл-бэйзд ментальность - и кабанам и кодерам.
Последовательность решения любой проблемы, начиная от айтишной баги, продолжая этими пиздострадамиями вокруг тестирования, и заканчивая государственными проблемами, всегда начинается с поиска root cause'а. Поэтому у тебя последовательности нет.
Если че - я мимокрокодил, и комментил конкретный коммент >>71771, так что если я заблуждаюсь - гони ссылки для последовательного разьеба.
>всегда начинается с поиска root cause'а
А Кабану похуй на твой рут коз. Лиду поебать, что ты там не можешь или не хочешь. Есть таска, есть срок - вперед из песней. Улучшениями практик и рефакторингами будешь заниматься у себя в пет-проектах.
Разумеется похуй, кто бы спорил. На этот счет к вышесказанному мне добавить нехуй. Им похуй ровно по той же причине, по которой похуй тебе: они непоследовательные, необразованные, подменившие рационализм софт-скиллами ебланы, которые за деревьями леса видеть не хотят. Результат налицо - эффективные менеджеры не видят смысла тратить дорогой человекоресурс на написание автотестов и оптимизируют расходы. А айтишнички промываются ТДД-евангелистами и придумывают терпильные карго культы.
>не видят смысла тратить дорогой человекоресурс на написание автотестов и оптимизируют расходы
Правильно делают. Нормально делай - нормально будет. Сейчас бы закладывать написание каких-то там тестов, лол. Фитчи нужно катить - заказчик ждет.
>Нормально делай - нормально будет.
Эта цитатка - детектор идиота с архиважным мнением. Обычно если такое говорит, например, спикер на конференции, можно сразу дропать доклад, потому что он гарантированно будет дерьмом, проверено неоднократно.
Не надо так.
Просто пойми, что Кабану похую на налаженные процессы и прочие штуки. Его интересуют только фитчи. Он ебет лида, а лид ебет команду. Все!
Всмысле - пойми. Я спорю чтоли? Как это противоречит с тем что я сказал выше? Что доказать то пытаешься?
Бугаенки аргумент
>Заебали ныть. Хочется документацию как в жабе или шарпе - пишите на жабе или шарпе.
Когда в следующий раз будет ныть, что документация не очень. Вспомните про Говнокодеров и скажите спасибо, за то что есть.
Ну тогда выбираем:
- Орков(Питухон)
- Тау (Голованг)
- Эльдаров (?)
- Некронов (Си)
- Тиранидов(?)
а хорус кто? Скала?
ну я слышал что там есть технология шифрования, чтобы даже dba не могли читать содержимое таблиц. Что ещё?
Четвёртая, без бута и с XML-конфигом.
Я бы дал наверное Программирование на Java для детей, родителей, дедушек и бабушек, сам читал, неплохие задания для начала, но там 1 часть про аплеты, хз сейчас скипать можно, но я поигрался, и эклипс рекомендуют)
Да не плачь, анальник-крудошлёп. Подумаешь, есть люди, которые занимаются программированием, а не вечными миграциями с одной базы данных на другую.
Не нарушают.
Ебанат беспомощный,научись сначала интернетом пользоваться,а потом в айти лезь
Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы.
Крестьянин на заре с сохой
Над полосой своей трудился;
Трудился так крестьянин мой,
Что градом пот с него катился:
Мужик работник был прямой.
Зато, кто мимо ни проходит,
От всех ему: спасибо, исполать!
Мартышку это в зависть вводит.
Хвалы приманчивы, — как их не пожелать!
Мартышка вздумала трудиться:
Нашла чурбан, и ну над ним возиться!
Хлопот
Мартышке полон рот:
Чурбан она то понесет,
То так, то сяк его обхватит,
То поволочет, то покатит;
Рекой с бедняжки льется пот;
И наконец она, пыхтя, насилу дышит:
А всё ни от кого похвал себе не слышит.
И не диковинка, мой свет!
Трудишься много ты, да пользы в этом нет.
Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы.
Крестьянин на заре с сохой
Над полосой своей трудился;
Трудился так крестьянин мой,
Что градом пот с него катился:
Мужик работник был прямой.
Зато, кто мимо ни проходит,
От всех ему: спасибо, исполать!
Мартышку это в зависть вводит.
Хвалы приманчивы, — как их не пожелать!
Мартышка вздумала трудиться:
Нашла чурбан, и ну над ним возиться!
Хлопот
Мартышке полон рот:
Чурбан она то понесет,
То так, то сяк его обхватит,
То поволочет, то покатит;
Рекой с бедняжки льется пот;
И наконец она, пыхтя, насилу дышит:
А всё ни от кого похвал себе не слышит.
И не диковинка, мой свет!
Трудишься много ты, да пользы в этом нет.
Парадигмы - миф. Нельзя нарушить того, что не существует.
В один класс. Всё равно никто в здравом уме не поймёт, чем музыка отличается от звука.
Пошёл нахуй, бугаенкер.
Ты че долбоёб?
Ты даун?
В майнкрафте разница в том, что звук проигрывается в конкретной локации, а музыка транслируется прямо в голову игроку. Но это должно быть два класса реализующих интерфейс Sound/Audio, а не эта хуйня с двумя плеерами, что он там напридумывал.
Потому что ими не умеют пользоваться. Проблема не в геттерах, это следствие. Надо чётко разделять внутренние пакеты и логику. Для первых геттеры это норма (хотя я предпочитаю record-style), как и сеттеры в исключительных случаях, для вторых моветон.
nnmclub точка to/forum/viewtopic.php?t=1474084
С порнхаба.
Чего? Хибернейт - это и есть ORM.
При использовании дефолтной мастурбации мы используем свой член? Или это только когда мы через руку взаимодействуем с хуем?
Кто-то использует член, кто-то влагалище. А у хибернейта половой орган только одного вида.
Пидорашка спок
Java 8/11
микросервисы
Spring
Java Core
паттерны
Git
Docker
Kubernetes
kotlin
maven
PostgreSQL
Jenkins
Agile (Scrum)
Messaging
Gradle
RabbitMQ
REST
SOAP
XSD
WSDL
XSLT
JSON
Protobuf
Hibernate
Flyway
Kafka
OpenAPI 3
Linux
Spring Cloud
Scala
SQL
Алгоритмы и структуры данных
ООП
Cassandra
Elastic Search
Redis
Junit
Mockito
Многопоточка
Spring Batch
ELK
Spring Data
Spring Security
Spring MVC
Spring Boot
Bat/sh
Postman
Spring Core
SOLID
JMS
SOA
JPA
Stream API
Collections API
Testcontainers
Kafka Streams
Prometheus
Grafana
gRPC
ClickHouse
PL/PgSQL
Spring Web Flux
Netty
Groovy
Spring 5
TDD
DDD
Selenium
NoSQL
ActiveMQ
nginx
UML
Java EE
системный дизайн
Liquibase
MongoDB
Tomcat
Jboss
Jackson
облачные технологии
Java 8/11
микросервисы
Spring
Java Core
паттерны
Git
Docker
Kubernetes
kotlin
maven
PostgreSQL
Jenkins
Agile (Scrum)
Messaging
Gradle
RabbitMQ
REST
SOAP
XSD
WSDL
XSLT
JSON
Protobuf
Hibernate
Flyway
Kafka
OpenAPI 3
Linux
Spring Cloud
Scala
SQL
Алгоритмы и структуры данных
ООП
Cassandra
Elastic Search
Redis
Junit
Mockito
Многопоточка
Spring Batch
ELK
Spring Data
Spring Security
Spring MVC
Spring Boot
Bat/sh
Postman
Spring Core
SOLID
JMS
SOA
JPA
Stream API
Collections API
Testcontainers
Kafka Streams
Prometheus
Grafana
gRPC
ClickHouse
PL/PgSQL
Spring Web Flux
Netty
Groovy
Spring 5
TDD
DDD
Selenium
NoSQL
ActiveMQ
nginx
UML
Java EE
системный дизайн
Liquibase
MongoDB
Tomcat
Jboss
Jackson
облачные технологии
Сука, я со всем этим шлаком знаком. Какие же ублюдки, я мог бы это место в голове занять чем-нибудь более полезным.
3 года опыта, профильное высшее образование, идеальное знание джавы, спринга, алгоритмов, паттернов, кафки, многопоточки
Откуда вы блять беретесь...
На двочах есть - нюфаг тред, есть хрюшетред, можно в конце концов открыть стажерскую вакансию и почитать че там требуют. Какой смысл задавать его здесь? Или что, вкатуны сегодня настолько остекломоенные, что реально ожидают, будто один анон щас им распишет за всех? Как в ваших куриных мозгах это работает?
копируешь файл внутрь твоего линукса в докере и из жабы работаешь с этим файлом по пути в линуксе
Ну тебе всё равно как-то систему маунтить придется, если ты хочешь читать файл на винде или где-то еще.
Можно без вольюма, тогда тебе придется сначала залить на сервер файл через апи, потом сохранить его внутрь контейнера, потом сможешь его раздать. Но после перезапуска контейнера, его содержимое сохранено не будет и надо будет по новой.
Да.
>Java EE
>JBoss
Ну сидите, дрочите EJB тогда.
К 90 годам может и закроете этот список, а там глядишь и на пенсию пора. Дети блять.
Никак.
Ну то есть есть lib.jspf которая инклюдится в другие странички.
И в ней есть методы на жяве.
Как на них написать тесты?
Раз уж ты раскопал древнее и никому не нужное говно мамонта, о нормальных тестах можешь забыть. Максимум можно взять встраиваемую реализацию JSP, рендерить страницы в строку и сравнивать с эталоном.
А вообще там не должно быть сложной логики,, которую надо тестировать. Всё это должно быть написано нормальными классами и тупо вызываться из вьюх.
Думаешь, здесь не сидят шизы из мвп, которые ответят то же самое?
Ну от меня требуется добавить санитайзинг и валидацию входных параметров через ESAPI либу.
Ну и нужно обернуть все request.getParameter("name") в мои библиотечные методы.
Но хочется тестики.
Западная экономика уничтожена, так что уже неактуально. Посмотри на Азию, почти везде джава
- java 11
- spring boot 2.7.0
- драйвер postgresql в зависимостях
- подключение к бд есть
и что мне алтимейт идеа нужна что ли?
Скорее Takes.
Нет, он делает это в любых базах.
Использую паттерн "процедурная параша с 10 вложенными if-ами".
Сингльтон
Нет никакой нормы, здесь как повезёт.
Здесь иногда бегает менеджер по продажам из этой шараги, его посты трут в течение дня. Я по фану зашёл на их сайт, увидел пикрил и охуел, это ж насколько надо отчаяться, чтобы подписаться на такое. Куча книг и курсов лежит в открытом доступе, с нуля за полгода можно вкатиться, если есть интерес, и никому платить не надо.
Видимо, как частное агентство занятости, наверняка в одном из законов или постановлений правительства есть подходящие пункты.
В джаве нет DDD.
Никому не понятно, максимально расплывчатый и бесполезный термин. Просто модно говорить про него.
Как это, отказы без собеседования ??
Импорт-экспорт файлов в разные форматы и потоки
give a way to a fool
Вот кстати как это выглядит в дженкинсе
Потому что есть дальние знакомые которых по связям просто после курсов взяли в компанию джуном. Очевидно если таких связей нет после курсов то нужно что-то сделать.
Curlык curlык
перепиши на свин г и апаче хттп компонентс
Юзай jmeter как ч.
В нем и автоматизация есть вполне норм.
А вот soapui так нихуя я замены не нашел
https://hh.ru/vacancy/75529244
Наебалово какое-то с разводом на платное обучение или норм?
как я понял это и есть платное или может даже бесплатное обучение без последующего трудоустройства. В епаме было подобное
Потому что в жидбрейнсе нет программистов
Надо добавить в божественную вижуалстудию поддержку жабы, тогда про злоебучую идею можно будет забыть.
Для этой задачи лучше дергать письку.
О, а это интересно...
Классы, имена которых заканчиваются на "er" это антипаттерн.
Можешь сконфигурировать @Scheduled, выделив ему свой пулл тредов. Либо бери Quartz. Вариантов много.
Проблема в том, что результат дерганья должен быть обработан и если не получено что надо дергаться с интервалом дальше, имеет место быть рекурсия. Кроме того, тот кто вызвал этот метод он не может все время ждать и держать соединение, т.е. типа по апи пришел вызов, создался отдельный поток который его выполняет и если я из этого потока созда другой, то это хуйня идея, основной завершится по таймауту. Отправлять запрос по расписанию тоже не вариант, запрос содержит параметры поступающие из основного потока и при получении нудной иинфы должен завершится.
> Отправлять запрос по расписанию тоже не вариант, запрос содержит параметры поступающие из основного потока и при получении нудной иинфы должен завершится.
А в чём проблема? В основном потоке кладёшь параметры в общее хранилище, например, в БД, причём указываешь статус "ожидает обработки", а из потока, который крутится по расписанию, запрашиваешь эти параметры из хранилища с таким же статусом, дёргаешь REST, если успех, обновляешь статус на "обработано" (либо без статусов просто удаляешь параметры), если не успех, статус не трогаешь.
пиздец
>а из потока, который крутится по расписанию, запрашиваешь эти параметры из хранилища с таким же статусом, дёргаешь REST
Да, как вариант, я ограничен по кол-ву потоков, но я могу из БД получить все записи в ожидающем статусе и отправить их рестом. Спасибо, наверное это самое оптимальное, а то я уже начал думать как нагородить какую-то очередь
>какой вариант лучше всего для этой задачи?
Перестать заниматься программированием. Очевидно, что это просто не твое, если у тебя настолько простые задачи вызывают проблемы. Устройся грузаном или начни таксовать. Иными словами - найди занятие, которое соответствует твоему уровню интеллекта
Очередь на бд есть смысл делать только если задача обсчитывается самой бд. Например хранимка делающая закрытие опердени или еще что.
Иначе лучше хранить стейт инмемори в приложении(дистрибутед инмемори кеш если кластер с раундробином на балансере)
Если и инмемори, надо ещё обязательно проверить, что сообщение сразу сохранилось на диск при создании задачи, а не где-нибудь потом через 10 минут.
>если ты умеешь пользоваться интерфейсами.
>интерфейс МайСервис, класс МайСервисИмпл имплементс МайСервис!
Книжечку Ункла Бэба уже навернул, джавамуха?
Да я тебе просто личину в глаз отложу, чтоб детки тебя сожрали заживо. Благо череп не занят, будет где им поселиться.
Ебанутый...
Это возвращаемое значение на скуфо-байтоёбском.
Этого двачую, только фабрика бесполезное говно, нахуя он нужен?
Выходные это суббота-воскресенье.
Это тот микрочел который стоит между скобочкой и 44 аннотациями
Пчел, тут вопрос про архитектуру, а не о том, какую волшебную аннотацию хуйнуть, чтобы было заебись.
Только давайте без советов выпилить хибер из проекта, если бы я мог…
Я понимаю, что ван ту ван, мне нужно, чтобы дочерняя именно через свой айдишник ссылалась на родительскую
Ну ебать, че ответить не можете
Ну по сути у дочерней сущности айдишник свой айдишник как будто лишний
Быть такого не может, ты либо запускаешь не ту сборку, либо эксепшен кидается раньше, чем ожидаешь.
Двачую. Сам храню все свои заметки в .txt/.yml файлах.
Соотношения и foreign keys — антипаттерн. Запрещено перекладывать логику на БД и ORM.
Уголь прилип.
вернее с созданными таблицами*
Сейчас бы в 2к23 не прорабатывать книги и документацию, лол. Если ты просто читаешь, то ты так ничему не научишься и не запомнишь. Нужно составлять интерактивные конспекты и карточки в Anki, а затем это все повторять с разной периодичностью.
Чево бля? Мне просто нужно сделать дефолт ван ту ван, только, чтобы у дочерней ссылка была еще и айдишником
Иди доку почитай,ты что совсем дегенерат? У меня создаётся впечатление что залетухи используют этот тред вместо гугла,скоро будут спрашивать как переменную объявить
Пиздатый совет, долбоеб тупой, если сам нихуя не знаешь, так не пиши ничего. А то высрал хуйню и считаешь себя охуенно умным.
А как же Open Source репозитории на гитхаб ? Им тоже собак накидывают в ветку ?
А минусы будут?
Есть такая хуйня как JUnit или что. Или assert метод. То есть ученик скидывает тебе залупу на воротник. А ты такой сравниваешь его залупу с эталонной залупой. Если заебись, то заебись. Ну а нет, так пидора ответ. Можешь через (otvet == input) делать или как. Типа главное чтобы что? Чтобы эта хуйня компилировалась. То есть он шлёт тебе код, а ты компилируешь у себя на компе. Затем ты... что там... А, ну да. Затем ты обращаешься к его методам с помощью тестов как раз. И если тесты пройдены, то заебись, ну да. Понятно? Он присылает, ты проверяешь. Ничего сложного.
Ебать я спизданул...
Лет ми гугл фо ю
да у флешки мало ядер
Почему
По факту есть что сказать?
Это из-за неактуальности swing. Сейчас стандарт UI это Avalonia на сишарпе
>но та даже не умеет текст анализировать и строить деревья
Чё ебанулся, долбаеб? В студии просто на голову выше автокомплит в виде интелисенса, который за тебя бойлерплейты пишет из коробки
Ух как ты заебал со своим хибернейтом, раз у тебя так много вопросов по нему, прочитай талмуд на 1000 страниц вместо того, чтобы срать вопросами.
Так и есть. Ждбс твой бро
referencesColumnName
Так говоришь, как будто энтерпрайз это и не есть раздутая бесполезной тысячей методой хуйня.
OneToMany\ManyToOne и JoinColumn читай.
А вообще открываешь чат гпт и задаёшь ему вопросы, профит
Статическмх методов вообще не должно быть, потому что они не вписываются в ООП, и хуй знает, как их наследовать и переопределять. Вместо них должны быть функции.
Статические функции ? Так почему нельзя их переопределить, помимо того, что они принадлежат классу ?
Никто не знает...
Статический метод - это костыль, потому что Ораклу лень добавить функции.
>потому что они не вписываются в ООП
придумали ООП с наследованием и объектами и теперь пытаются впихнуть в каждую дырку, даже если не впихивается
Запилили язык в те времена, когда ООП было на вершине хайпа, считалось, что это серебряная пуля и единственная парадигма, которая останется в будущем. Хорошо ещё, что не все языки на это повелись.
Ну-ка, ёбни мне вот это на процедурах и чистых функциях, манька.
https://pastebin.com/7HNv32KK
или это я тупорылый? если да, объясните, че делаю не так
да нет в книгах нихуя, в ином случае, мне такие читатели талмудов как ты уже давно бы все подсказали
Нахуя ты лепишь @PrimaryKeyJoinColumn в этой ситуации
Ты вообще задумываешься над своими действиями или просто пробуешь все аннотации подряд?
Ровно то, что написано в декларативном коде, который объясняет сам себя.
Да Бугаенкер его знает.
Потому что мне нужно, чтобы айди у аплоадинг был равен вторичному филду у персона, я дохуя всего перепробовал, в доку залез - там нихуя, гопота не понимает или не знает, че от нее хотят
Ни в чем, причем тут спригохуйня?
Нет разницы. Всё равно, на чём писать процедурщину, хоть на спринге, хоть в статиках.
Моментальный триггер спрингокультиста, лол.
Бин не обязательно имеет один экземпляр, он «статический» по умолчанию, но можно настроить чтоб создавался каждый раз
Ебанат безмозглый,никто не будет тебе объяснять элементарные вещи,ты настолько никчёмный что даже загуглить не в состоянии,ни то что книгу прочитать. Возвращайся на кассу в кб где тебе самое место
Какой же ты тупой,надеюсь это троллинг
Обьяснил твоей мамаше за щеку сегодня, еблан тупоголовый. Ты же нихуя сам не знаешь, дегенератина
Ссылку в тред в течении 5 минут на решение проблемы или клеймо пиздабола на тебе до конца жизни, уеба)
Конечно конечно,уже бегу гуглить за тебя,залетуха пустоголовая
MUBP VORPOSE
Да.
Нет, кеш тут ваще не при чём.
Прокси это когда надо на лету добавить новые процедуры в процедурный сервис процедур.
класс В вызывает метод addBlock и нужно положить туда значение. Я хочу вынести значение в константу, где обьявить константу, в классе А или В ?
Ваши мысли ?
Что такое A, что такое B, что за значение? Что делает метод addBlock(), что за блоки? Где ещё может понадобиться эта константа? Нихуя не понятно. С такой постановкой задач я бы им сам не перезвонил.
Вынес бы в интерфейс, где обьединил бы все связаные с бизнес-логикой или доменом константы
Как сортировать залупы по характеристикам для передачи на фронт?
Делать эндпоинт на гейтвее, в котором ходить сначала за залупами, потом за их характеристиками, объединять вместе и отдавать?
Спросить встречный вопрос: "Нахуя? Чтобы что? Какую проблему решаем?"
Решить для себя по ответу - стоит ли продолжать собес, или дропать.
При такой постановке задачи адекватно отсортировать можно только на фронтенде. На худой конец - как ты описал, на гейтвее, но перегружать гейтвей логикой - хуевое решение.
Один хуй проблема архитектурная - микросервисы скорее всего раздроблены там, где не надо было. Почему характеристики залуп отделены от самих залуп?
Еще такая дилемма возникает тогда, когда люди впадают в крайность типа "микросервисы не должны дублировать никакие данные". Типа, что если характеристики залуп есть в одном сервисе, они ни в коем случае не должны дублироваться в другом. Это - хуевая ментальность. Дублирование данных между микросервисами - это обыденность и неизбежность. Избегать ее любой ценой == попадать вот в такие вот ситуации, когда логически нужно сделать джойн, а нет ни данных ни SQLя. Одни зашоренные ресты.
Строка исчезает просто :/
Установлена Intellij idea.
Скучно, что нет функции автоматического удаления неиспользуемого кода. Не успел создать класс, а дохуя умная ИДЕ его уже удалила.
Спрашивай в треде машоба, здесь одни бэкендеры сидят.
Надо ещё оптимизировать эту функцию, чтобы не постоянно на неиспользуемость проверяла, а раз в 30 минут.
>Just stop wasting time with Java and any of its many derivatives. Leave it where it belongs: poorly educating students in uni with terrible OOP practices that’ll take 5-10 years to unwind.
>sbt, gradle has left me with bad memories, working on jvm is a stain on my life
Немного базы
>32 года, неоконченное гуманитарное высшее, не работал в технической сфере ни разу, живу в сибирском полумиллионнике, работы для джависта здесь нет
аххххххапххапахх
Да я в рот ебал жабу, но альтернативы ещё хуже, либо работы нет.
Коллега, это вы hacker news читаете? Последние годы там аудитория резко сменилась на соевых реддиторов, так что мнение комментаторов имеет низкую ценность. Хотя тут конечно сыглы с челом
уже давненько ушедший на пенсию оп-хуй
Вкатун. Написал пару тыщ строк кода. Узнал о ReadWriteLock еще на своих первых говнокурсах.
Вообще, у меня, вкатыша, ощущение, что большинство из того что есть в базовых либах жабы/спринга нахер никогда не понадобится.
потомучто
Но сначала отрефакторить и выбросить обратную совместимость нахуй иначе язык не доживет до 2025
Нет, в то время говорили:
>Нахуй нам эта ваша неизвестная джава без экосистемы если есть делфи, плюсы и бэйсик? Через пару лет хайп спадет и разработчиков не найдем
Это как сейчас скуфы твердят о ненужности котлина, голанга и шарпа, а эти языки всего за пару лет откусили огромный кусок от рынка джавы
Это говорили в 1996.
Нука клоун показывай банковские опердени на говне..
Хуета
Сейчас большинство так называемых сеньоров и миддлов - самозванцы, которые занимают рабочие места. Наверное, таких 90%. В то время как по-настоящему умные люди, которые в совершенстве знают алгоритмы, многопоточку, математику, архитектуру, как я, не могут устроиться на работу. Единственная надежда, что всех этих так называемых сеньоров мобилизуют на фронт и их места займут достойные
>В моем случае он тоже рискнул
Да, я уже заметил. "Техлид" с двумя годами опыта что-то там наговнокодил на полторы тысячи строк говнокода и узнал про ReadWriteLock, лол. Зачем ты туда полез, чудо?
Не 1,5к, а 150к. Полез потому что кушать хочется.
Мне кажется или об этом "ReadWriteLock", пишут в книге "Многопоточность на практике" ?
В чем смысл конспекта по книге если:
а) ты не читал эту книгу
б) конспект написан не тобой
А вообще ты не залетный гуманитарий случайно? Конспекты по программированию это какой то рофл
я например прочитываю книгу через силу и забываю прочитанное через пару недель
Это бесполезная трата времени тогда раз знания на практике не применяешь после прочтения
Школьник, ты?
Как будто что-то плохое.
А в чём смысл книг? А в чём смысл лекций? А в чём смысл энциклопедий? А в чём смысл баз знаний? А зачем читать, на опыте нельзя что ли всё понять, всё смастерить?
Я тоже пишу конспекты по книге, только по своему.
Без книг, лекций, энциклопедий, ты таааакое говнище будешь мастерить... И либо пойдешь за инфой в вышеперчисленное, либо пойдешь нахуй.
https://getmatch.ru/vacancies/9332-senior-net-developer
https://getmatch.ru/vacancies/12423-senior-c-developer-logistika-trekingovaia-integratsiia
https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/
На самом деле все это пишут уже на сишарпе или переводят проекты с джавы на сишарп. Кабаны поняли, что держать ораву настройщиков аннотаций в спринг фримверке попросту невыгодно - те могут годами ссать в уши как у них все сложно и как они трудятся не покладая рук. Но разработка на C# быстрее минимум на порядок, не требует раздутого штата отдела разработки, а конечные сервисы и продукты работают в несколько раз быстрее, надежнее и потребляют значительно меньше ресурсов.
Бери выше. Все айти было обречено с самого начала.
Айти-образования не существует как класса. Инженерные скиллы развиваются лишь отдельными индивидами на чистом энтузиазме, и таких индивидов год от года все меньше и меньше. А в массе своей все айти - это сборище терпильных гибких софт-скилльных лицемерных пидарасов, обученных быть рабами. Все их скиллы и навыки заточены лишь на то, как бы продать свою жопу подороже. Разумеется, в такой экосистеме термины "миддл" и "синьор" не могли не потерять свой изначальный смысл - сейчас это просто лычки, которые пидарасы повыше в иерархии раздают пидарасам пониже, чтобы купировать в последних желание искать, куда подороже пристроить свое очко.
Ну шарп действительно как заменитель джавы не нужен. Хуй на хуй менять - только время терять. Если уж менять мейнстрим, то в сторону развития (Rust, Scala, Haskell, возможно - F#), а не в сторону застоя.
>то в сторону развития (Rust, Scala, Haskell, возможно - F#)
В шарпе уклон в функциональщину уже много лет
В каком месте?
Да, я тоже думаю что-то изучить ещё... Или С++ или что-то из новенького.
>Айти-образования не существует как класса
>Инженерные скиллы развиваются лишь отдельными индивидами на чистом энтузиазме
Какая связь между клепанием крудов на спринг фримверке и инженерией? С чего ты вообще решил, что можешь называть себя инженером? Ты не проектируешь мосты и не запускаешь ракеты в космос. А расставлять аннотации и грузить жысоны, как выяснилось, может и курсовой вкатыш
>Kotlin
За пределами экосистемы Android он нигде не прижился. На сервере доминируют Java (уже идет на спад, т.к. все переписывают на C#) и C# (новые проекты стартуют именно на этом языке)
Один из создателей прямо сказал, что разрабатывали Котлин, чтобы продать побольше лицензий на Intellij IDEA:
https://blog.jetbrains.com/kotlin/2011/08/why-jetbrains-needs-kotlin/
>The next thing is also fairly straightforward: we expect Kotlin to drive the sales of IntelliJ IDEA.
>клепанием крудов
Круды - миф. За 10+ лет в джаве не встречал ни одного чистого тривиального круда, везде была своя специфика.
>С чего ты вообще решил, что можешь называть себя инженером?
О себе я не говорил ни слова. Не приписывай мне того, что я не говорил.
>расставлять аннотации и грузить жысоны, как выяснилось, может и курсовой вкатыш
Как это противоречит с вышесказанным? Расставлять аннотации и грузить джсоны - это по канону и есть уровень джуна (делать небизнесовые мелкие манипуляции с кодом).
Их некогда читать - нужно клепать круды и развешивать аннотации
Изучал все на практике с встроенной докой в идее
Сотыжку имею
Все равно информацию выше джуновского уровня в свободных источниках не найти
>Расставлять аннотации и грузить джсоны - это по канону и есть уровень джуна (делать небизнесовые мелкие манипуляции с кодом)
Курьезный расклад, если подумать. Честные вкатуны не могут вкатиться, потому что вакансии на джунов - всё. А под вакансии синьоров по факту набирают ровно тех же джунов-кнопкокрасов-крудошлепов, у которых единственное отличие от вкатунов зачастую лишь в том, что они успели набить своим очком стажа на синьорную лычку.
Если бы. На работе переписывают все микросервисы на го в срочном порядке. Java все...
Охуенная новость. Я вкатываюсь в джаву только чтобы попасть в большую компанию и внутри перейти в голанг. + мораль
Нихера себе какую ты хтонь раскопал.
>Меньше ресурсов жрет
Не просто меньше, а на порядок меньше. Где джава будет отжирать гигабайты и десятки гигабайт памяти, поднимая по несколько минут контекст спринга, гоулэнг умудряется выдавать кратный прирост в производительности и потребляет десятки или в худшем случае сотни мегабайт. Пока помойная джава с гнойным спрингом начинает кряхтеть на нескольких сотен запросов в секунду, гоулэнг даже не поморщившись обрабатывает десятки тысяч запросов в секунду. При этом тебя не надо нанимать Шипилева для тюнинга JVM и не нужны супердорогие сеньоры, которые наизусть выучили доклады Борисова
Бабах через 3... 2... 1...
КОД САМ НЕ ОПТИМИЗИРУЕТСЯ
ДОБАВЬ ХЕШМАПУ, ДОБАВЬ КЕШИ
ЗАЧЕМ МНЕ НУЖЕН SRPING, У МЕНЯ НЕТ КОМПЬЮТА ЧТОБЫ ЕБАТЬСЯ С НИМ
ЛУЧШЕ ЕЩЕ РАЗ ПООПТИМИЗИРУЮ КОД
Я ОПТИМИЗИРУЮ КОЛИЧЕСТВО БАЙТКОД ИНСТРУКЦИЙ ПО 3 РАЗА В ДЕНЬ
КАЖДАЯ ОПТИМИЗАЦИЯ ЗАНИМАЕТ ДВАДЦАДЬ МИНУТ
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ ИГРАЮ В ИГРЫ
А ПОСЛЕ ЭТОГО ОПТИМИЗИРУЮ КОД УДАЛЯЯ СТРИМЫ
ТУПЫЕ СПРИНГОДЕБИЛЫ ОДЕРЖИМЫ ЗАПУСКОМ JVM
А Я СВОБОДНЫЙ ОТ ЗАДРОТСТВО ЧЕЛОВЕК
СКОЧАТЬ БЕЗПЛАТНО И БЕЗ РЕГИСТРАЦИИ МОКРЫЕ ПИСЕЧКИ
КРЯК УЛЬТИМАТ КЕЙГЕН РАЗБЛОКИРУЙ IDEA
ЛУЧШЕ Я ПООПТИМИЗИРУЮ ЕЩЕ РАЗ ПОТОКИ
И СЛОМАЮ ИХ НАХУЙ ЛУМОМ, СТАБИЛЬНОСТЬ НЕ НУЖНА
Я НЕ ОПТИМИЗИРОВАЛ КОД НЕДЕЛЮ
ПОЙДУ ПООПТИМИЗИРУЮ
В JAVA ВСЕ ПРОСТО И ПОНЯТНО
ААААААААААА
ОШИБКА OUT OF MEMORY ERROR ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ
ПРИШЛО ВРЕМЯ ОПТИМИЗИРОВАТЬ КОД
ККОКОКОКОКОКОКО
ЖМУ/ПИНУС, ШВАБОДКА, ПИТУХИ,
КОКОКОКОКОКОКО
>У вас просто не было нормальных джавистов
Кхе-кхе, ну как-бы тебе объяснить, чел... То, что спринг приложение поднимается за несколько минут и только на старте жрет минимум гигабайт памяти, нужно сказать "спасибо" разработчикам этого поделия
P.S.- они используются внутри класса другими методами.
При всей моей нелюбви к спрингу, все таки сам по себе он стартует нихуя не несколько минут. Несколько минут он может стартовать если в него навернуть с десяток тяжелых стартеров, ОРМ, и насовать в бины какой нибудь тяжелой хуйни в постконстракты или конфигурации. На пиздеже я тебя конечно щас не поймаю, ибо не был свидетелем того, что у вас там с ним за приключения были, но при своем мнении останусь - ваши джависты скорее всего были просто криворукими спрингокультистами.
Ну в целом но оффенс - если на гоу вам лучше, это здорово.
Никак. Сначала рефакторить так, чтобы они не были приватные, а потом уже тестить.
Есть способы подлездь к ним через всякие повермоки, но лучше тогда вообще не тестить, чем тестить ТАК.
Умею жабировать, но надо систематизировать знания, сейчас на уровне "берем вот это, копируем, гуглим по аналогии задачу, делаем вот так вот"
Пишу HTTP апи где клиент ломается от любого изменения и говорю что это RESTful.
Пишу тест который поднимает базу, кафку, редис и говорю что это юнит тестирование.
Тебе 40 лет?
Так еще б стояла цель тебе не платить. Основная цель - чтобы ты не свалил соискательствовать на Юрьев день.
Цимес рабства не в том, чтобы раб голодал и был перманентно избит и унижен - голодный полудохлый раб это просто тушка, от которой никакой пользы и один вред. Опытный рабовладелец даст рабу баланду и внушит идею о том, что "работать и терпеть - большая честь", за что раб в лепешку ради него расшибется. А рабам, которые для него представляют ценность, даст больше баланды и внушит мысль о том, что они - его синьоры любимчики.
ты раб что ли в этом разбираться
Что конкретно не натягивается на гитфлоу?
Гитфлоу говорит четко: стартанул релиз - делай ветку. Зарелизил релиз - мерж ветку и вешай тэг. Что значит твой вопрос тогда? Если нужно несколько веток релизов - делай несколько веток релизов.
Да ты тоже неумный. Сука, стремишься помочь человеку, а вместо человека гнилой анальник, паскуда выебанная - анон у него виноватый за то, что не может свой вопрос сформулировать. Пиздуй нахуй с треда, здесь вообще джава.
В треде есть те, кто проводит собеседования?
Поделись в таком случае. Что спрашиваешь, насколько глубоко. Как оцениваешь кандидата. Скорее всего придется менять работу, а я последний раз проходил собесы 2 года назад.
1."Программируйте на уровне интерфейсов",
2."Предпочитайте композицию наследованию"
?
> 1."Программируйте на уровне интерфейсов",
Твои классы имплементировать интерфейсы,когда тебе в коде понадобится твой класс, например ты будешь передавать этот класс как параметр метода,то ты передаешь (используешь) интерфейс вместо конкретной реализации. Это помогает тебе обеспечить слабую связанность между классами тк реализаций может быть дохуя
> 2."Предпочитайте композицию наследованию"
Когда тебе нужен функционал какого-то класса ты не наследуешься от него,а создаёшь в своем классе поле private TargerClass target и используешь необходимый функционал вызывая методы у target
1. Твой код не должен быть хуже, чем в интерфейсах стандартной библиотеки Java (в java.util.Map и т.д.)
2. Слушайте музыку, а не ебитесь.
Это применимо к литералли всем реальным и будущим языкам программирования, в которых есть/будет такое понятие как переиспользование кода в каком то виде.
Впрочем, в парадигмах отличных от ООП, эти два принципа могут называться по другому.
Ого,тоже перекачусь. Какая из крупных компаниях использует его как основной язык бэка и какую систему они на нем написали?
Че-то походу сишарп всё. Я почитал, везде хвалят JS, и у нас, и на западе, и за ним будущее. Ну так-то если подумать, то JS постоянно развивается, на нём можно писать, что угодно. Игры, машин лёрнинг, бэкенд, фронтенд. Какие у JS вообще минусы есть? Думаю перекатываться из сишарпа в него.
Бамп
Go никогда не позиционировал себя как язык для всего и претендовал исключительно на микросервисные апишки и серверное ПО. В отличие от JS и шарпа, которые в каждой бочке затычка.
Не мержить фич-ветки в develop, пока не будет выпущен предыдущий релиз. Больше никак.
>и претендовал исключительно на микросервисные апишки и серверное ПО
хуйню несешь)
https://freshman.tech/snippets/go/cross-compile-go-programs/
Ты свою ссылку вообще открывал? Там всего лишь сказано, как компилировать goвно под разные платформы.
То, что я пидор, никак мне не мешает рассуждать о Go.
Как то раз я столкнулся с одним шизом в телеге. Он два часа пытался мне продать, что Go - это прежде всего идея, а не язык, и типа что именно ради идеи следует изучать гоу. Скорее всего имел ввиду Goйную ортогональность и минималистичный тулинг, я хз.
Из забавного - упорно агитировал меня к тому чтобы я почитал биографию разработчиков Go, типа "пока я не ознакомлюсь с биографией, я не пойму идею".
Мимо.
В го вообще дохуя сектантов. Развитую экосистему других языков они называют ненужным легаси, которое не позволяет реализовать нужные решения. Т.е. мешает им писать велосипеды и костыли, лол.
Ну блять. А ведь теплилась надежда что если придурки-евангелисты окажутся правы и джава в конечном итоге умрет, то тогда хотя бы утащит за собой в могилу ублюдочный (спринго)культизм. Хуй там.
Сейчас не те времена. Будь евангелисты хоть десять раз правы, жаба продолжить жить и процветать.
Положить конвертер рядом с контроллером, там и превращать энтити в дтохи и обратно.
В жопу се засунь
Ну да. Удобно, если, к примеру, разработка ведётся на маке, а сервера на винде.
Ну а че нибудь что в повседневной жизни используется или хотя бы какие-нибудь технологии для разработчиков известные
Да, докерный Windows Server.
>>84013
Я все в сервисе делаю. У меня контроллеры и репошки максимально тупые, они про сервис нихуя не знают, контороллер не знает какие у меня доменные модельки, только дтошки. А сервисы знают все.
Но мне и тут и тимлидец доказывал, что я не шарю. Уже не помню что тут говорили, может просто потому что потому. А вот тимлид начал ко-ко-ко про ддд, адаптеры и что сервисы дохуя на чебя берут.
Пока вообще не помнимаю на какие я могу грабли наступись, если мапплю в сервисе.
>А сервисы знают все.
Отличный пример анемичной модели данных и программиста на спринг фримверке, лол. А потом удивляются, почему это проекты на спринг фримверке такое неподдерживаемое говно, лол.
Ну да, я такой. Можешь объяснить в чем проблема? Я пока не столкнулся с неподдерживаемостью.
1. В 99% случаем потом понадобиться создать класс BolshayaZalupa, и, чтобы не ломать обратную совместимость, надо изначально делать интерфейсы. А вместо ZalupaImpl называть BaseZalupa.
2. Что конкретно не читается? extends Hui? Ты олигофрен?
Много же тебе говна накидали, я ебал эту петушиную кодлу.
Единственный адекватный ответ - вот этого анона: >>83540
От себя добавлю.
> 1."Программируйте на уровне интерфейсов"
Этот принцип еще имеет второе название: dependency inversion principle. если обьяснять его смысл на пальцах, то проблема формулируется так: если класс A использует напрмую класс B, то изменения в классе B неизбежно будут приводить к регрессиям (поломкам) в классе A, из-за чего класс B править становится сложнее и рискованнее. Выход - выделить новую сущность C таким образом, чтобы нужды ее менять было как можно реже, и уже на нее завязывать классы A и B. В джаве такой сущностью является интерфейс - один класс его имплементирует, второй - держит на интерфейс референс.
Каплинг получается A -> C <- B, вместо A -> B. Но важно понимать, что работать такой дизайн будет только если интерфейс C остается неизменным почти всегда. Об последнем спрингокультисты обычно не парятся, поэтому у них вместо правильного интерфейсного дизайна всегда выходят пары ServiceInterface <- ServiceImpl, к которым они быстро теряют интерфейс (профиту никакого, а писанины дохуя) и просто откатываются на прямой каплинг Service1 -> Service2. Дебилы, короче.
> 2."Предпочитайте композицию наследованию"
Есть два понятия: сабтайпинг и наследование. Сабтайпинг - это база, и основа для любого полиморфного поведения.
В джаве для нужд сабтайпинга есть два инструмента: наследование и имплементация интерфейсов. Проблема в том, что наследование - довольно посредственный инструмент. Дает слишком уж много свободы. Из-за этого, и еще из-за привычки со времен c++, люди по непониманию очень часто используют наследование не для сабтайпинга, а для переиспользования кода. Кончается это плохо. И вот для таких людей придумали чихвостить наследование в хвост и в гриву - пусть лучше они вообще не будут использовать наследование, чем будут использовать ТАК.
Интерфейс, абстрактный класс, или вообще какой нить тайпкласс из ФП - неважно. Это лишь разница в форме. Суть всегда одна - вместо того чтобы делать две конкретные (и как результат, волатильные, изменчивые) сущности зависимыми друг на друга (а зависимость конкретик - всегда и во всех языках и парадигмах источник рисков, регрессий и багов), выделяется некая общая (стабильная) суть этих вещей, и выносится в т.н. абстракцию.
Абстрактный класс тоже может выступать в роли абстракции. Но нужно понимать и отдавать себе отчет в том, что не каждый абстрактный класс и даже не каждый интерфейс уместно звать абстракцией. Абстракция - это в первую очередь сущность, максимально отделенная от конкретной логики, и описывающая конечную выполняемую задачу языком типов и деклараций. Если в абстрактном классе окажется слишком много конкретики, он перестанет быть абстракцией.
Разве интерфейс не определяет "что класс умеет делать" ?
А абстрактный класс "чем класс является".
Получается, нельзя использовать интерфейс в качестве абстракции...
>Разве интерфейс не определяет "что класс умеет делать" ?
>А абстрактный класс "чем класс является".
С чего бы вдруг?
Что определяет конкретный класс или интерфейс, зависит целиком и полностью от разработчика и того смысла, который он вложил в этот класс/интерфейс. Ни больше ни меньше.
По совести - должно быть так: абстракция опредаеляет - "какую задачу решаем, что делаем". Конкретика определяет - "как конкретно решаем задачу". Абстракции удобнее лабать интерфейсами, конкретику - их имплементациями. Что впрочем не означает что интерфейсы и их имплементации - единственный способ лабать абстракции и конкретику.
Двачую этого. Пока не будет пары-тройки классов, не нужно над интерфейсами/наследованием заморачиваться. Это стоит делать когда уже явным образом вырисовываются сходные места и появляется понимание, как удобно всем этим будет пользоваться.
А на ранней стадии заебёшься в нескольких местах править.
Вы видите копию треда, сохраненную 15 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.