OIG1 (90).jfif125 Кб, 1024x1024
Java Thread №281 /java/ 3434087 В конец треда | Веб
Вики по джаве: https://github.com/java2ch/java-thread/wiki (доступна для редактирования всем)
Предыдущий: >>3404287 (OP)
2 3434102
так ракать яву в 2025 перспективно или нет?
прочитал весь тред и нихуя не понял
3 3434112
>>34102
Если ты няшный студент, готовый так сказать к глубокой проработке фреймворков - то вперед. Иначе очень трудно и лучше ракать в го или 1с там
4 3434117
>>34087 (OP)
Какие же вы все - молодцы! Как же джава хороша.

Всем добра.
5 3434119
>>34117

>Какие же вы все - молодцы!


Да! Так и есть. Ух, вот бы каждое утро просыпаться, а тебя хвалят и хвалят.

>Как же джава хороша.


Лучший язык на планете~~
6 3434128
>>34112
недавно знакомы с курсов залетел и вроде нормально все
7 3434130
>>34087 (OP)
Как изучить джаву без привязки к спрингу, если у меня уже есть опыт с другими ЯП? Чтобы мне не начинали в очередной раз пытаться рассказывать, что такое переменные, циклы, классы и прочее.
8 3434136
>>34128
А что за курсы?
9 3434143
>>34087 (OP)
Как выживать на проектах, которые писали лоускильные ноунеймы из провинции? В очередной раз попал в болото из Контроллер - МайСервисИмпл имплементс МайСервис - Рипазитари. Вся логика, разумеется, в сервисе. Сервис - файл на 3.5-5к строк. Тесты? Какие тесты? Сервис и бизнес-логика завязаны на другие сервисы, а они на другие сервисы, а они на друг... Юнит-тестов нет, интеграционных тестов нет. Обещают переписать на микросервисы и тогда все заверт.. но воз и ныне там. Релиз раз в полгода, ручной регрес и жалкие попытки энд ту энд со стороны куашников. Ливать?
10 3434162
>>34143
А что не так?
11 3434175
>>34130
Что тебя конкретно интересует? Синтаксис? Документация или кишочки какие-то?
12 3434180
>>34143

>Как выживать


А что тебя на таком проекте убивает - пойми это для начала?

Так то у тебя один из двух стульев:

Либо мимикрируй под остальных долбоебов и не отсвечивай, Приходи-уходи на работу по графику. Не овертаймь, не рви жопу, ни с кем не спорь, в залупу не лезь. Лутай тихонечко свой оклад, параллельно качайся, ищи альтерннативы, и годика через 2 сваливай.

Либо наоборот максимально лезь в залупу, но по умному. Общайся с стейкхолдерами, понимай что их устраивает не устраивает, предлагай инициативы, выбивай себе большие свободы и полномочия, подминай под себя лоускиллов и учи их хорошим практикам. Это путь high risk high reward - ибо инициатива ебет инициатора. Если ты сам лоускилльный, особенно это касается софт скиллов, тебя просто затраллят и либо ты сам выгоришь и сопьешься, либо тебя начальство отстрелит как токсика.
13 3434187
>>34175
Сейчас только синтаксис и кишки JVM. Для синтаксиса, как я понимаю, можно первый том Хорстманна проштудировать и первую половину второго?
14 3434190
>>34187

>Для синтаксиса, как я понимаю


Для именно синтаксиса ты можешь буквально что угодно открыть, начиная туториала оракла, хорстмана, шилдта, заканчивая вовсе жаварашем каким-нибудь. Вообще не приципиально как по мне, он учится в первую неделю, если ты уже имеешь опыт других яп.
По кишкам есть, например, конференции jpoint и вот у шипилева классные выходили https://youtube.com/playlist?list=PLecCTjz_4ylyyvYExhPAzB4Mqn3Q_kEj6
Можешь начать с этого, как по мне, если ты хоть что-то начнешь смотреть/читать, то источники по этой или смежной теме ты так или иначе найдешь через ссылки в этих же источниках. Просто типичная история, а вот подробнее об этом читайте туть, это не тема книги/конференции и тд.
Selection173.jpg59 Кб, 797x438
15 3434191
>>34143

> В очередной раз попал в болото из Контроллер - МайСервисИмпл имплементс МайСервис - Рипазитари.



Давай конкретный пример. В целом в этом нет ничего плохого.

> Вся логика, разумеется, в сервисе.



Всё верно. А где ей ещё быть? Не в контроллере же. Не в репозитории же.

> Сервис - файл на 3.5-5к строк.



Многовато, но открой серьёзный проект, там одни интерфейсы по 1000 строк, правда 90% это документация. Если нет дублирования кода в классе на 5,000 строк нет ничего плохого.

> Сервис и бизнес-логика завязаны на другие сервисы, а они на другие сервисы, а они на друг...



Это и называется слой бизнес логики. Можно взять целиком все эти сервисы и перенести в другой проект в виде библиотеки и вся бизнес логика будет работать без проблем.

А у тебя где находится бизнес логика?
16 3434194
>>34143
ЦФТ?
17 3434211
>>34190
Спасибо!
18 3434242
>>34191

>Это и называется слой бизнес логики.



Есть нечто смешное в том, что в ответ на высокую связность ты слету ответил что это нормально, мол именно так и проектируется бизнес логика, а вот момент с отсутствием юнит тестов у анона вообще никак не прокомментировал.
17448726949980.jpg241 Кб, 978x653
19 3434257
>>34242

Потому что отсутствие тестов это плохо, что тут ещё комментировать. Пишут серьёзную большую программу и даже просто сами для себя не хотят проверить всё ли в ней работает как надо.

Заказчикам видимо тоже пофигу на это. Если у них чё-то не работает они просто поднимают трубку, звонят и им всё чинят.

Может там руководство и вообще работа в целом построена так, что они не считают нужным тратить время на тесты, ведь это удлиннить сроки в полтора-два раза а значит всё это время придётся оплачивать труд кнопкодавов, а бюджет и так мизерный, да с него ещё и откатить надо половину.

А может там вообще уже давно ничего нового и не делают, просто работает прога и нужен чел который будет туда иногда новые функции добавлять пару раз в год.

В общем я бы избегал такой работы если хочется развиваться как специалист.

Ни какого CI/CD и прочих современных практик, ставших уже нормой во всём мире, там видимо тоже нет.

А значит опыт который там анон получает не является коммерческим опытом разработки. А значит в другой серьёзной компании этот опыт учитываться не будет.
20 3434267
>>34087 (OP)
Чем плох ЮВАО? Погулял по картам по Перово и Измайлово - лампово. Чистенько, пешеходная инфраструктура есть, все эти пандусы, тротуары, ровные дороги, чистые улицы. Дома в основном невысокие - мало панелек, рядом лесопарк.
Открыл престижные Раменки и Крылатское - ну такое. Куча хрущей, которые давят сверху и как-то неуютно..
21 3434270
>>34191
Ну, т.е. ты не в курсе про SRP, low coupling, high cohesion? То, что у тебя один такой сервис на 5к строк зависит от 3-5 еще таких же сервисов на 5к строк каждый, а те тоже зависят от сервисов..
22 3434319
>>34270

Дак он может через интерфейс зависит. Всегда можно поменять или замокать реализацию.
23 3434330
>>34319

>замокать реализацию


Ох уж эти "юнит тесты" где мокают все прямые зависимости и начинают "тестировать". А потом бегают и плачутся, что тесты у них хрупкие и их нужно переписывать на каждый чих
24 3434331
>>34194
чел..
25 3434339
>>34143
Ты на работу идёшь за деньгами. Пока твоё личное уважение к себе не ставят под сомнение я не вижу смысла воротить нос хоть от чего-либо. Говнокод это проблема кабанья, ты что с чистым, что с говном тратишь 8 часов в день.
26 3434347
>>34330

Проблема мокирования, которую затронул автор саркастичного сообщения, связана с чрезмерным использованием моков в юнит-тестах, что приводит к хрупким и бесполезным тестам. Вот основные аспекты этой проблемы:

### 1. Тесты становятся хрупкими (fragile)
- Если замоканы все зависимости, то любое изменение в логике кода (даже корректное) ломает тесты, потому что моки жёстко завязаны на текущую реализацию.
- Пример: поменяли порядок вызовов методов или добавили новый – тесты падают, хотя бизнес-логика работает правильно.

### 2. Тесты не ловят реальные баги
- Моки подменяют реальное поведение зависимостей, поэтому тесты проверяют не "как код работает", а "как он представлен в голове тестирующего".
- Пример:
- Замокали базу данных → тест проходит, но в реальности SQL-запрос синтаксически неверен.
- Замокали внешний API → код работает с моком, но падает при реальном запросе из-за неучтённых полей в JSON.

### 3. Тесты превращаются в "ритуал"
- Вместо проверки логики тесты начинают просто верифицировать, что вызывались конкретные моки.
- Пример:
```python
# Плохо: тест не проверяет логику, только факт вызова мока
mock_db.insert.assert_called_once_with(data) # А если метод поменяет название?
```
Такой тест не упадёт, даже если код полностью сломан, но не вызвал именно этот метод.

### 4. Избыточная изоляция
- Юнит-тесты должны проверять логику модуля, но не обязательно изолировать все-все зависимости.
- Часто лучше использовать
real-объекты (например, настоящие классы-сервисы без I/O) или стабы (заглушки с предсказуемым поведением), а не моки.

###
Когда моки действительно нужны?
-
Внешние сервисы (API, базы данных, файловая система).
-
Опасные операции (например, удаление данных).
-
Сложные зависимости, которые трудно настроить в тестах (например, аутентификация).

###
Что делать вместо моков?
1.
Писать интеграционные тесты – для проверки взаимодействия между модулями.
2.
Использовать фейки (fake) – упрощённые, но рабочие реализации (например, in-memory база вместо PostgreSQL).
3.
Тестировать поведение, а не реализацию – проверять результат, а не "как именно он был получен".
26 3434347
>>34330

Проблема мокирования, которую затронул автор саркастичного сообщения, связана с чрезмерным использованием моков в юнит-тестах, что приводит к хрупким и бесполезным тестам. Вот основные аспекты этой проблемы:

### 1. Тесты становятся хрупкими (fragile)
- Если замоканы все зависимости, то любое изменение в логике кода (даже корректное) ломает тесты, потому что моки жёстко завязаны на текущую реализацию.
- Пример: поменяли порядок вызовов методов или добавили новый – тесты падают, хотя бизнес-логика работает правильно.

### 2. Тесты не ловят реальные баги
- Моки подменяют реальное поведение зависимостей, поэтому тесты проверяют не "как код работает", а "как он представлен в голове тестирующего".
- Пример:
- Замокали базу данных → тест проходит, но в реальности SQL-запрос синтаксически неверен.
- Замокали внешний API → код работает с моком, но падает при реальном запросе из-за неучтённых полей в JSON.

### 3. Тесты превращаются в "ритуал"
- Вместо проверки логики тесты начинают просто верифицировать, что вызывались конкретные моки.
- Пример:
```python
# Плохо: тест не проверяет логику, только факт вызова мока
mock_db.insert.assert_called_once_with(data) # А если метод поменяет название?
```
Такой тест не упадёт, даже если код полностью сломан, но не вызвал именно этот метод.

### 4. Избыточная изоляция
- Юнит-тесты должны проверять логику модуля, но не обязательно изолировать все-все зависимости.
- Часто лучше использовать
real-объекты (например, настоящие классы-сервисы без I/O) или стабы (заглушки с предсказуемым поведением), а не моки.

###
Когда моки действительно нужны?
-
Внешние сервисы (API, базы данных, файловая система).
-
Опасные операции (например, удаление данных).
-
Сложные зависимости, которые трудно настроить в тестах (например, аутентификация).

###
Что делать вместо моков?
1.
Писать интеграционные тесты – для проверки взаимодействия между модулями.
2.
Использовать фейки (fake) – упрощённые, но рабочие реализации (например, in-memory база вместо PostgreSQL).
3.
Тестировать поведение, а не реализацию – проверять результат, а не "как именно он был получен".
27 3434372
>>34257
Правильно, хули, никто не спорит что отсутствие тестов это плохо. Другое дело что обычно в таких вот проектах с ебейшим транзитивным каплингом юнит тестов как раз и нету никогда, и нет их как раз из-за ебейшей связанности спроинговых компонент, из-за которой у анона просто не остается ручек, чтобы изолировать компонент под тесты. Но у культа такая связность - это норма, как ты отметил.

Но ты очень забавно ушел от темы, повеселил. Буквально свалил вину на всех - и начальство то виновато, и заказчик, и легасятина... Целое полотнище выводов вон настругал. Что называется, за деревьями леса не видать.

Я просто поражаюсь иной раз тому, как спрингокульт любит пиздеть о важности юнит тестирования, но при этом никогда не писать юнит тесты.
28 3434373
>>34330
Вот этот - хотя бы честный.
29 3434386
>>34270
Забей. Солид в устах спрингофагов - инструмент демагогии, не больше. Чекни борисовский "спринг-построитель" на 15й минуте, его пук-среньк позорный по SOLIDу. А это - один из их главных гуру. Если спрингоблять раскрыла рот и начала перечислять при тебе принципы SOLID в контексте их фреймворка, она почти гарантированно не выкупает, какой шизоидный религиозный бред она несет.
30 3434399
>>34386

>какой шизоидный религиозный бред она несет


А разве так не со всеми этими принципами, которые произносят как мантру? SOLID, KISS, PIDOR вот если следовать умным советам из книг написанных кучу лет назад, то ну тооочно все станет лучше. Там ведь хуйни не напишут
17373021276100.mp463 Кб, mp4,
320x320, 0:02
31 3434406
>>34372

Ну а как не плодить эти сервисы и не каплить? Вот я вчера решал задачу. Есть 30 установок программы в 30 разных организациях. Заказчик не может заставить их обновляться, хотят обновляются, не хотят не обновляются, их право. Соответственно есть 30 постгрес баз приложения и разброс версий этой базы 11 разных версий. Уплочено за поддержку всего этого и плотится ежегодно. А мне нужно сделать небольшую прогу, которая может подключиться к любой базе и делать кое-какие действия в ней. То есть мне нужно реализовать поддержку на данный момент 11 разных версий базы, в каждой версии какие-то таблицы есть, каких-то нет, какие-то поля в таблицах есть, каких-то нет.

Сделал СЕРВИС, который по версии базы из конфига возвращает имя роута, который ведёт к контроллеру, который отвечает за работу с той или иной версией базы.

Ну а как это ещё решить? Ну не делай сервис сделай switch чё легче станет что ли. А так хотя бы этот свич лежит отдельно в отдельном классе.

Прилетает запрос в котором в такую-то организацию нужно добавить такое-то значение. И не ебёт клиент какая там версия базы. И сегодня в этой организации одна версия базы, а завтра их переклинит они обновятся и будет более свежая.

Да и будет теперь кругом лезть этот СЕРВИС и всё будут от него коуплится.

А потом ещё один и ещё.
32 3434418
>>34406
Ну ок, ты хотя бы не культист и в отрицалово не уходишь, есть надежда на конструктивный диалог.

>Ну а как это ещё решить?



А никак. В терминах спринговых реалий это тупо не решаемо. По совести, каждое из этих вот "кое каких действий", какие ты выполняешь в своей проге, хорошо было бы держать в таком виде, в каком их можно было бы черрипикать и переиспользовать независимо друг от друга. Не инжектить сервис из 5 тысяч строк, а затащить себе в клиентский компонент только ту часть, которая тебе нужна. Тогда количество зависимостей каждой из таких вот мини-компонент можно было бы свести к минимуму, и такой компонент можно было бы переиспользовать максимально гибко, не тащя за собой лапшу из остальных компонент. В терминах distance from main sequence меньше входящих транзитивных зависимостей == меньшая ригидность компонента == большая переиспользуемость и меньше риск того, что какие то из этих зависимостей изменятся и приведут к регрессиям в клиенте. В конечном итоге получилось бы нечто схожее с функциональной композицией, но на классах.

Но в спринге же так не принято - мы же в таком случае будем "плодить компоненты", айяйяй! Запутаемся, бедненькие, потеряемся! Мы попросту не можем не обьединять методы, которые хотим переиспользовать, по каким то абсурдным критериям типа "коли этот метод про пользователя, значит он должен быть частью UserService". А наобъединявшись, не можем потом переиспользовать то что наобьединяли. Вдовесок мы все это еще обвешаем аннотациями, чтобы компоненты приколотились друг к другу по декларациям инжекций и заодно вся бизнеслогика вендорлокнулась на фреймворк (слава богу эта мода потихоньку уходит в прошлое уступая место бутовым автоконфигурациям).

Я так то не оторванный от реалий идеалист, все могу понять. Просто в ебаном культе меня всю дорогу бесила вот именно эта пиздабольско-демагоговая манера. Нихуя такой дизайн не норма, и SOLIDом там даже близко не пахло. Это просто сложившаяся исторически говенная данность, где мы все варимся. Вот ты хотя бы признал что "да, хуево, но хуй знат как иначе", это я по человечески могу понять. А большинство долбоебов щас будет на говно исходить пытаясь доказать мне что это я просто не преисполнился и должен спринг выучить.
32 3434418
>>34406
Ну ок, ты хотя бы не культист и в отрицалово не уходишь, есть надежда на конструктивный диалог.

>Ну а как это ещё решить?



А никак. В терминах спринговых реалий это тупо не решаемо. По совести, каждое из этих вот "кое каких действий", какие ты выполняешь в своей проге, хорошо было бы держать в таком виде, в каком их можно было бы черрипикать и переиспользовать независимо друг от друга. Не инжектить сервис из 5 тысяч строк, а затащить себе в клиентский компонент только ту часть, которая тебе нужна. Тогда количество зависимостей каждой из таких вот мини-компонент можно было бы свести к минимуму, и такой компонент можно было бы переиспользовать максимально гибко, не тащя за собой лапшу из остальных компонент. В терминах distance from main sequence меньше входящих транзитивных зависимостей == меньшая ригидность компонента == большая переиспользуемость и меньше риск того, что какие то из этих зависимостей изменятся и приведут к регрессиям в клиенте. В конечном итоге получилось бы нечто схожее с функциональной композицией, но на классах.

Но в спринге же так не принято - мы же в таком случае будем "плодить компоненты", айяйяй! Запутаемся, бедненькие, потеряемся! Мы попросту не можем не обьединять методы, которые хотим переиспользовать, по каким то абсурдным критериям типа "коли этот метод про пользователя, значит он должен быть частью UserService". А наобъединявшись, не можем потом переиспользовать то что наобьединяли. Вдовесок мы все это еще обвешаем аннотациями, чтобы компоненты приколотились друг к другу по декларациям инжекций и заодно вся бизнеслогика вендорлокнулась на фреймворк (слава богу эта мода потихоньку уходит в прошлое уступая место бутовым автоконфигурациям).

Я так то не оторванный от реалий идеалист, все могу понять. Просто в ебаном культе меня всю дорогу бесила вот именно эта пиздабольско-демагоговая манера. Нихуя такой дизайн не норма, и SOLIDом там даже близко не пахло. Это просто сложившаяся исторически говенная данность, где мы все варимся. Вот ты хотя бы признал что "да, хуево, но хуй знат как иначе", это я по человечески могу понять. А большинство долбоебов щас будет на говно исходить пытаясь доказать мне что это я просто не преисполнился и должен спринг выучить.
34 3434429
список вставить "мам я долбоёб" 0
35 3434451
>>34130
Тоже мне проблема. Как бы наоборот доучить спринг, уже зная просто джаву
36 3434500
groovy тут?
37 3434501
>>34500
На месте.
38 3434517
>>34501
И как groovy, сложно?
39 3434521
>>34517
Сложно только из-за того, что некоторые вещи реализовали раньше, чем в джаве, а потом из в джаве реализовали по другому (замыкания - лямбды) и на стыке языков не очень удобно работать. А так обычный скриптовый язык. Есть аналог шарпового LINQ.
40 3434583
Каким же гауном бесполезным джава 25 будет. Хоть бы блядь флексибл конструктор бодис в стейбл завезли, а то пиздец же, одни поломки совместимости и выпиливания.
41 3434584
Java (до нового дерьма) это русский язык от мира программирования. Ну или русский язык это Java среди естественных языков. Так-то
42 3434607
Почему mvnd даёт такой маленький прирост производительности в сравнении с правильно настроенным обычным мавеном? Вормап жи, волшебный JIT жи. Обычный параллельный 16 секунд, демон 12-13.

Кому эти 3 секунды всрались особенно когда добавляется ещё один источник непонятных багов?
43 3434608
>>34607
Причём я не вижу особо даже обещанной магической инкрементальности. Делаю изменения, компилирую, 13 секунд, не делаю, просто подряд компилирую, всё равно по 13 секунд. Что я делаю не так? Проект маленький относительно, но модулей много, параллелить и инкрементить есть что.
44 3434611
>>34607

>правильно настроенным


А что там, собственно, настраивать?
45 3434612
>>34611
Немного, но часто и этого не делают. Параллельность билда, плагины отпердолить чтобы с параллельностью работали, потом выбирать только нужное через -pl <name> -am. У меня так, мб что-то ещё можно.
46 3434618
>>34612

>Параллельность билда


Удачи потом логи компиляции/тестов смотреть на CI

>плагины отпердолить чтобы с параллельностью работали


Полтора плагина умеют в параллельные сборки. Остальные тупо тыквят твой билд

>потом выбирать только нужное через -pl <name> -am


Экономия на спичках.

Просто нужно понять, что джава это не про экономию времени и быструю разработку. Тут в порядке вещей билды по часу-полтора и прочие приколдэсы
47 3434621
>>34618

> Удачи потом логи компиляции/тестов смотреть на CI


Так плагины просто не используй каловые.

> Полтора плагина умеют в параллельные сборки. Остальные тупо тыквят твой билд


А тебе много плагинов нужно? Много нужно классических плагинов, эта портянка с компайл шейд ресурс хуюрс и т.д, они все поддерживают нормально, а те что под проект их как раз и полтора и используется.

> Экономия на спичках.


Если у тебя сильно горизонтальный проект или вообще монорепа то очень полезно.

> Просто нужно понять, что джава это не про экономию времени и быструю разработку. Тут в порядке вещей билды по часу-полтора и прочие приколдэсы


А, так ты очередной залётный школодегенерат с фантазиями и проекциями. Ясно.
48 3434626
>>34621

>Так плагины просто не используй каловые.


А других нет. Это же джава

>А тебе много плагинов нужно?


Те, что использую не умеют в параллель

>Если у тебя сильно горизонтальный проект или вообще монорепа то очень полезно.


Полезно кому? Выше анон сокрушался, что попал на каловый проект где хуй проссышь как код писать и архитектура говна. По факту этот все верно сказал >>34339 - на работу нужно ходить за деньгами. Если тебе повезло с коллегами и проектом, то может чего-нибудь почерпнешь для себя и научишься новому. Нет? Просто лутай бабки и не отсвечивай. Все эти попытки "улучшить проект" до добра не доводят.
49 3434627
>>34626

> А других нет. Это же джава


По моему джава это как раз про 100500 способов пёрнуть в трубочку.

> Те, что использую не умеют в параллель


А ты хотя б пробовал их настраивать? Или обновлять. Или альтернативы искать. Или хотя бы понять какой конкретно плагин не могёт.

> Полезно кому? Выше анон сокрушался, что попал на каловый проект где хуй проссышь как код писать и архитектура говна. По факту этот все верно сказал >>34339 - на работу нужно ходить за деньгами. Если тебе повезло с коллегами и проектом, то может чего-нибудь почерпнешь для себя и научишься новому. Нет? Просто лутай бабки и не отсвечивай. Все эти попытки "улучшить проект" до добра не доводят.


Блядь, ну это другой вопрос, что работнику на говноработе обосновано вола с суровым видом ебать. Тут речь идёт в принципе о том инструмент полезен или нет.
50 3434633
>>34627

>Или альтернативы искать


Зачем? У меня нет цели сделать проект кабана лучше, если я встречаю лишь агрессию и непонимание со стороны команды и руководства. Мне проще плыть по течению, а в свободное время ковыряться во всем этом.
51 3434865
>>34621

>Если у тебя сильно горизонтальный проект или вообще монорепа


То ты еблан и идешь нахуй
52 3435055
>>34517
Groovy охуенно сложнее джавы, бтв
53 3435166
>>34517
Groovy самый плохой язык программирования, который не пытались сделать плохим умышленно. Поэтому довольно сложно.
54 3435175
>>35166
А че по поводу скалы скажешь?
55 3435181
>>35166
Что в нем такого уж плохого? Просто не надо юзать весь тот безумный объем пиздеца, который туда напихали разрабы, и будет норм.
По сути, можно сказать что джава это подмножество груви. То есть и жава тоже кал говна получается?
56 3435338
>>35175
Очень сложный язык с огромным количеством фич, тремя парадигмами и мега фреймворками как ZIO, cats и akka, которые все еще сильнее усложняют и специализируют. На ней пишет очень мало людей, и все по-разному.

В скале много интересных идей, но язык очень непрактичный.
57 3435359
>>35338
Плюс переход с 2ой версии на 3ью, как в питуне...
58 3435360
>>34608
Прихожу с обновлениями. Мне напиздели, инкрементальности в мвнд и не было никогда. Зато есть в такари, старичок до сих пор работает. За 7,5 секунд теперь билдится без изменений и 9 с изменениями. 20 немаленьких модулей в проекте.

Ебало градлодебилов которые страдают со скриптобилдами из-за "скорости" (которой нет, потому что первый билд на градле это пиздец, можно чай уходить пить, а когда вернуться видеть build failed) к осмотру.
59 3435388
>>35360
Уже разобрался как читать поломанные логи при параллельной сборке модулей и запуске тестов?
60 3435428
>>35388
А что там читать? Вроде всё стабильно. Есть какая-то хуйня что мвнд хуеет когда сильно помник меняешь разом, но mvnd --stop спасает, даже читать не надо ничё, к тому же помник с полунуля ты редко переписываешь.
61 3435454
>>35388
Что вы с этими логами параллельной сборки носитесь? Упал билд - запусти однопоточный билд, делов-то. А если у вас каждый второй билд падает, то проблема не в мавене.
62 3435462
Подскажите, на сколько распространённая практика мультимодульности? У вас лично это используется? Все модули лежат в одной репе или в нескольких разных?
63 3435470
>>35454
>>35428
При параллельной сборке у тебя логи пишутся из нескольких потоков в терминал или лог файл на CI и по итогу у тебя там каша. Если билд упадет, то потом хуй разберешься где что зафейлилось
64 3435473
>>35462
Зависит от контекста. Если никакие артефакты наружу не нужно отдавать, то лучше все хранить в одном модуле и разделение сделать на уровне пакетов.
Однажды я попал на проект, где лид обезумел и начал нарезать модули внутри проекта. Когда я увольнялся, в проекте было больше 60 модулей и ни один из них не использовался вне проекта
65 3435495
>>35473

Не, речь именно о том, чтобы раздавать. Допустим есть модуль, в котором есть логика, позволяющая добавлять таски в информационную систему. Ты можешь этот модуль приделать к проекту графического приложения десктопного. Можешь приделать к веб-сервису. Можешь приделать к сайту. Добавление такски всегда одно и то же. Но проекты десктопного приложения, веб-сервиса и сайта это разные проекты.
66 3436331
>>35470
В первую очередь при параллельной сборке демоном вообще нихуя никуда не пишется пока не собралось. Записывается уже после сборки. Наверняка что-то придумали для ошибок раз научились логами управлять, потому что пока я наворачивал эту параллельную сборку я миллион фейлов наловил и всё получалось читать.
67 3436346
>>35470

>При параллельной сборке у тебя логи пишутся из нескольких потоков в терминал или лог файл на CI и по итогу у тебя там каша. Если билд упадет, то потом хуй разберешься где что зафейлилось


У тебя при паралельном чтении постов, фразы смешиваются и в голове полная каша, которую хрен поймёшь.

>Упал билд - запусти однопоточный билд, делов-то. А если у вас каждый второй билд падает, то проблема не в мавене.

68 3436351
>>36331
Это все блажь и от лукавого. Хуй забей на эти улучшения.
69 3436390
>>35462
Ты про какие модули спрашиваешь? Про JPMS? Или тупо про какие нибудь мавен-модули?

>У вас лично это используется?



Мавен проекты на модули обязательно делим - чтоб прям со старта корневой модуль был packaging=pom. Есть ряд монолитных проектов, но на пользу им эта монолитность нихуя не пошла, когда руки дойдут - поделим и их. Вообще, за packaging=jar в корневом помнике впору по рукам бить.

>Все модули лежат в одной репе или в нескольких разных?



Одно с другим не связано. Разбиение по репам скорее - вопрос организации всяких бранчингов, релизных циклов и прочих процессов. Сама по себе самоцель разносить модули по разным репам обычно не имеет под собой никакого смысла.

Лично у нас - реп под один продукт либо реп под одну команду. Периодически бывает что ряд модулей переезжает в отдельный реп или из репа в реп.
70 3436396
>>36390

> Вообще, за packaging=jar в корневом помнике впору по рукам бить.


Что за хуйню ты несёшь, долбоёб? Не из тех ли ты дегенератов что в десятых носились по всему интернету и орали о том какое зло instanceof?
71 3436407
>>36396
Нет, не из тех. Против instanceof ничего не имею. А вот из-за долбоебизма предтеч, не сделавших элементарную вещь которая упростила бы все будущие рефакторинги, пару раз приходилось расхлебывать последствия.

Ты че порвался то? Руки зудят?
72 3436408
>>36407
Каким образом превентивное разделение на модули упростит хоть какие-то рефакторинги? Максимально поверхностная хуйня.
73 3436423
>>36408

>превентивное разделение на модули


Ты где про превентивные модули вычитал в фразе "за packaging=jar в корневом помнике впору по рукам бить"? Нет буквально ничего сложного в том, чтобы сделать корневой помник packaging=pom. Какие нахуй преждевременные модули?

>упростит хоть какие-то рефакторинги?


А ты че - никогда не рефачил полотнища монолитного помника, где намешаны и депенденси с их версиями, и стопятцот плагинов делающих все - от стайлчекинга до билда конечных сборок через какой нибудь ассемблай с антовыми вставками? Может быть правил что нибудь в таком месиве?

С корневым помником у тебя хотя бы есть инструмент, через который ты можешь зависимости от билд пайплайна быстро и легко отделить, для начала. А если есть скилл, можно вообще весь билд пайплайн аккуратненько в руте по профайлам разложить так, что все помники по читабельности будут по читабельности грыдле давать пососать.
74 3436444
>>36423

> Ты где про превентивные модули вычитал в фразе "за packaging=jar в корневом помнике впору по рукам бить"? Нет буквально ничего сложного в том, чтобы сделать корневой помник packaging=pom. Какие нахуй преждевременные модули?


Ты куда код будешь писать, когда сделаешь корень pom'ом, долбоёб? В один из modules. Или в твоём случае единственный, что терминальная стадия шизофрении.

> А ты че - никогда не рефачил полотнища монолитного помника, где намешаны и депенденси с их версиями, и стопятцот плагинов делающих все - от стайлчекинга до билда конечных сборок через какой нибудь ассемблай с антовыми вставками? Может быть правил что нибудь в таком месиве?


Каким образом это к твоему высеру на jar в руте относится? Каким образом перетаскивание всего этого на уровень ниже поможет?

> через который ты можешь зависимости от билд пайплайна быстро и легко отделить, для начала.


У тебя этим занимается разделение блоков build и dependencies. Ей богу олигофрен.

> А если есть скилл, можно вообще весь билд пайплайн аккуратненько в руте по профайлам разложить так, что все помники по читабельности будут по читабельности грыдле давать пососать.


О каком скилле ты высираешь, если у тебя модульность выполняет задачу разноса зависимостей и билда на разные файлы? Высер про градл это вообще пиздец. С каких пор блядь градл стал читаемее мавена? Он блядь всегда был нечитаем, это его главный недостаток сука был всегда.

Блядь, какой же идиот, постоянно приходит в тред и несёт такую хуйню что появляются вопросы а не ии ли это серет. Буквально тот самый омеган что пытается "за компанию" в разговор встрять и несёт околесицу от которой всем (кроме него самого) стыдно.
75 3436457
>>36444

>долбоёб


>терминальная стадия шизофрении.


>идиот


>олигофрен



Да хули я распинаюсь блять перед каким то двачевым недоноском. У меня на проекте ты бы тише травы ниже воды сидел, чмо, либо с переломанными руками. Не хошь вести конструктивный диалог - пошел нахуй. Можешь слив еще засчитать как вы, двачевые дегенераты любите.
76 3436467
>>36457
Привыкай пропускать мимо ушей оскорбления, ты же на сосаче, а то всегда придётся грызтись вместо попыток в разговор по сути. К тому же заслужил, ты ж несёшь хуйню полную.
77 3436480
>>36467
Да мне похуй, че решил для себя то и несу. Шарю свой опыт анону, который задал вопрос, ни больше ни меньше. Мне ни тепло ни холодно от того, что недоносок двачевый мой пойнт не выкупил - у меня на проекте помники от этого свой пэкеджинг не поменяют.
78 3436486
>>36480
Какой опыт? Притащил хуйню какую-то уровня инстансоф зло, когда спросили за неё разнылся "мам миня аскарбляют(((".
79 3436489
>>36486
Да ты шиз блять, тебе уже кругом гуки на деревьях мерещатся с инстанс офами. Сходи уже в окно проветрись, траву пощупай.
80 3436490
>>36489
Да ничё не мерещится, отчётливо вижу посты этого гука с пакейджинг=джар перед собой.
image.png71 Кб, 721x718
81 3436492
В общем, ситуация такая, у меня две бд - эластик и постгря и из-за особенностей эластика мне нада сделать сагу.
Предметная область база знаний, записки там и тд, ничего интересного.

Долго лежал, плевал в потолок, как бы это получше организовать архитектурно. В итоге пришел к такой структуре:
Есть базовая табличка notes, куда я кладу иммутабельные или уникальные поля, типа владельца, пути до заметки и прочей поеботы. Эта заметка так или иначе имеет связь с состоянием.
Состояние - это жизненный цикл заметки, типа `CREATE -> UPDATE -> UPDATE -> ...`.
Т.е. если я захочу изменить контент внутри заметки мне сначала нада создать новый стейт в таблице note_states и перепривязать (закоммитить) это новое состояние заместо старого в таблицу notes. Поскольку у меня есть два состояния и новое и старое, предполагаю, что тут вполне можно ебануть оптимистик локи.

Так вот, тут я думаю и вступает в дело сага. Т.е. я сначала создаю новый стейт. А потом запись, что надо бы закоммитить вместо старого стейта, на новый такую-то запись в notes. А потом отправляю это в кафку, которая эвент создаст.
Теперь, в saga_logs будут созадаваться записи типа CREATE IN ELASTIC -> REINDEX -> COMMIT IN ELASTIC -> COMMIT IN DB -> DONE
На любом этапе, если выяснится, что state_old_id не совпадает с тем, что лежит в notes или просто произошел пиздец, можно легко откатить все действия.
Также я планирую создавать в elastic под каждый стейт новый документ и наделять его состоянием типа COMMITED/UNCOMMITED. Таким образом я не не закорапчу поиск, поскольку все незакоммиченные можно просто отфильтровать да и вообще можно будет удалять незакоммиченные документы. Также сначала получается будут этапы создания документов, а потом два этапа коммита сначала в эластике, а потом в бд, что +- атомарно.

Насколько ебанутая схема и далеко от бест практис?
82 3436549
>>36492

>две бд - эластик и постгря


Земля пухом
83 3436564
>>36492
Может проще навесить поисковые индексы на простгрю? Ты же эластику ради полнотекстового поиска хочешь?
84 3436568
>>36564
У меня в эластике векторный семантический поисковик (rubert-tiny2). Не получится такое в постгрю запихнуть. Тут или наоборот все в эластик переместить, но.. У меня есть many-to-many связи в виде тегов.
Да и это чисто петпроектик, почему бы не попробовать научится писать сагу..
>>36549
Мех
85 3436577
>>36492
А для тебя прям критически важна согласованность поискового индекса с данными в базе? Может ну ее эту сагу? Ну выдаст те индекс несуществующую в базе сущность в моменте - выкинешь ее из выборки перед отдачей и норм. Гугл же тоже твой бложек не сразу проиндексирует.
86 3436608
>>36577
Проблема в том что несогласованность будет только расти. А чтобы не росла нужно отменять, а лучшее время для отмены это сразу как только было понято что будет несогласованность, т.е. в саге.
87 3436629
>>36492
Когда нужно коммитить в две базы, то просто пушат месседж в кафку, а оттуда уже читают и пишут в постгрю и прочие эластики. Ты просто не читал кабана, чел.. Ты слаб и тебе нужно тренироваться
88 3436637
>>36608
Ну она будет расти если ты совсем хуй забьешь. Я просто веду к тому, что индекс можно и независимо от отдельных коммитов в дб делать. Грубо говоря: пусть круд крудит на базе + каким то образом ведет учет того, какие сущности следует переиндексировать (хотя бы теми же эвентами в кафке, или флагом в таблице - не суть). А параллельно с крудом - по скедулу, например - выгребаешь все что нужно индексировать и индексируешь.
89 3436668
>>36629

>Ты слаб и тебе нужно тренироваться


Он хотя бы не общается штампами.
мимо
90 3436733
>>36629

>Ты просто не читал кабана, чел..


Какая глава? Там про сагу не слова, а 2PC не подходит, потому что это эластик.
>>36637
Хороший вариант, у меня получается, если пользователь сохранил новое состояние заметки, дождавшись подтверждения, то перезагрузив страницу он будет видить старое состояние страницы, до тех пор, пока не будет завершена индексация. В твоем варианте он сразу увидит нормальное состояние, но поиск будет выдывать иногда бред, пока не будет завершена индексация. По сути надо выбрать, где бы наебать пользователя, навернооое твой вариант все таки лучше.
Думаю оставить note_states, поскольку я хотел пристроить это также для функционала сохранения истории и отката к прошлым версиям.
Табличка commits, не нужна, а saga_logs по сути просто логи будет вести.
Т.е. в итоге, я создаю запись в note_states и коммичу её в notes и меняю поле indexed на false. Потом сабмичу эвент в кафку, мол надо заиндексировать такой-то note_states.id в такой-то notes.id с бэкофом.
Теперь она будет долбится до победного, пока не закончаться попытки или state_id сменится на другой. Также можно делать
`update notes set indexed=true where id=? and commit_to=?` и ну гарантировать в какой-то степени, что не будет ABA проблемы, типа когда во время индексации пользователь обновит табличку (false -> false), и индексатор запишет true = false -> false -> true, хотя в итоге должно быть false.

В сущности вся разница будет только в том, что я созаю индивидуальную тасочку для каждой индексации, а у тебя будет большая такая таска для всех записок сразу. Хрен знает что лучше, но я хотел с кафкой поработать хоть немного, поэтому выберу первый вариант. И пасиба за рекомендацию~
91 3436749
>>36733
Ты блин, так сказал... как отрезал нах. "Поиск будет выдавать бред"... Ну гугл тащемто тоже иногда выдает бред. На это можно двояко смотреть. Обязательная перестройка индекса на каждый апдейт твоих ноутсов может быть как бенефитом архитектуры, так и изьяном. Второе возможно если у тебя эти ноутсы большие и часто обновляются - тогда апдейт индекса будет отжирать у тебя производительность - если есть вебморда, возможно она начнет лагать. В то время как откапли ты перестройку индекса, сделай ее отдельным батчем раз в минуту, и тогда если за минуту чувак накидал те пять обновлений, индекс один хер перестроится один раз по последнему апдейту, а чувак не факт что что-то заметит, либо ему будет похуй.
92 3436774
>>36749
Хмм, может тогда совместить два подхода? Сделать большую таску раз в 5 минут и дать кнопочку пользователю, мол переиндексировать прям счас..
93 3436789
Что могут на собесе спросить про кафку? У меня на прошлом месте была кафка, но я ее просто отключал при дебаге, чтобы не мешалась, чё она делала хз. Что можно рассказать про нее? Как ее используют в реальности? Вот так?
@Autowired
private final KafkaTemplate<String, String> kafkaTemplate;
public void send(String topic, String message) {
kafkaTemplate.send(topic, message);
}
И вот тут шлем в нее и читаем
@RestController
public class MessageController {
private final Sender sender;
private final MessageConsumer consumer;

public MessageController(Sender sender, MessageConsumer consumer) {
this.sender = sender;
this.consumer = consumer;
}

@GetMapping("/send")
public ResponseEntity<String> sendMessage(@RequestParam String topic, @RequestParam String message) {
System.out.println("Sent message: " + message);
sender.send(topic, message);
consumer.listen(message);

System.out.println("Sent message: " + message);
return ResponseEntity.ok("Message sent to topic: " + topic);
}
Похоже на реальность?
93 3436789
Что могут на собесе спросить про кафку? У меня на прошлом месте была кафка, но я ее просто отключал при дебаге, чтобы не мешалась, чё она делала хз. Что можно рассказать про нее? Как ее используют в реальности? Вот так?
@Autowired
private final KafkaTemplate<String, String> kafkaTemplate;
public void send(String topic, String message) {
kafkaTemplate.send(topic, message);
}
И вот тут шлем в нее и читаем
@RestController
public class MessageController {
private final Sender sender;
private final MessageConsumer consumer;

public MessageController(Sender sender, MessageConsumer consumer) {
this.sender = sender;
this.consumer = consumer;
}

@GetMapping("/send")
public ResponseEntity<String> sendMessage(@RequestParam String topic, @RequestParam String message) {
System.out.println("Sent message: " + message);
sender.send(topic, message);
consumer.listen(message);

System.out.println("Sent message: " + message);
return ResponseEntity.ok("Message sent to topic: " + topic);
}
Похоже на реальность?
94 3436807
>>36774
Представь себе - ты двачер. Открываешь блокнот для заметок а там кнопка "перестроить индекс". Твое лицо в этот момент?
95 3436846
>>36807
Нуу, можно абстрактно это как-нибудь обозвать. Типа "синхронизировать". Что синхронизировать, с кем синхронизировать вопрос третьестепенный. В общем спасиба еще раз, надо по быстренькому хоть что-то накидать..
96 3436859
Это же стандартное решение. Получение сущности по id должно возвращать всегда последнюю версию, но поиск по изменённым полям может немного запаздывать.
Та же монга так сделана, да и многие другие движки баз тоже.
мимо
97 3436939
>>36846
Я те просто намекнул, что двачеру какбэ во первых похуй, во вторых не его собачье дело, че у тебя там за кухня на бэкенде творится. Ты щас петоводишь, молодой и шутливый - у тебя еще есть опция попытаться решить проблему типично программерским методом. А тем временем реальный проект может быть упорот по UI/UX, и вообще вся галера ориентирована на клиента. Тогда тебе эту странную кнопку попросту не дадут добавить.

Удачи.
98 3437299
>>36774
Перестройка чего-либо по таймеру это всегда дегенеративный подход ибо ты регулярно будешь обрабатывать данные что не нужно обрабатывать никоим боком. Нужно реагировать.

мимо
99 3437316
>>37299
Ну с моей т.з. это просто откладывание момента обработки, причем централизованным способом. Что-то типа гц, который по кд собирает мусор. Почему этот подход дегенеративный мне не совсем понятно, раскрой мысль.
В принципе-то, если разбивать все на сингл таски и пихать это в кафку, то можно более точечно контролировать потребление, поскольку это очередь же.
100 3437318
>>37316
Так гц (по крайней мере классические, не знаю про новые подходы типо zgc, мб там что-то поменялось коли обещают независимость от размера кучи кала) тоже дегенеративен. Обойти всю кучу чтобы понять что отвалилось, вместо того чтобы сигналить когда что отваливается, ну не пиздец ли же.
101 3437322
>>37318
Зато это значительно упрощает работу с памятью для языков. Трейдофф между простотой и перфомансом/красотой. Для тебя я так понимаю пик эволюции обработки мусора - это борроу чекер или эти умные указатели?
102 3437450
>>37316
>>37318

Ору. Дегенеративные GC это прям хорошо.

Так то они называются "генеративные", что означает что они работают на основе поколений (generations)
103 3437558
>>37299

Иногда приходится делать задания по таймеру. Иного пути нет. Например, я делал интеграцию с системой, в которой в таблице в базе данных выставлялся статус что такой-то документ готов к отправке по api и мне нужно было его считать, сформировать запрос и отправить по api. Это нельзя никак решить иначе кроме как поллингом по таймеру где будет селект из этой таблицы. Никто никакого события тебе генерить не будет и колбеков ни каких вызывать тоже, обычная база данных MySQL 5.5 и в ней таблица. Всё. Делай.
104 3437560
>>37558
Э слыш, ты тут со своими реальными задачами по разбору куч говна не вылезай, здесь солидные фантазёры.
105 3437568
>>37558

Да забей - на том мимокроке какой то максималист мамкин сидит походу.
106 3437592
>>37558
Debezium какой нить можно прикрутить?
107 3437602
>>37568
Тащемто нет. Я прекрасно осознаю что есть ситуации в которых локально человек нихуя не сможет сделать. Смысл был в том что глобально всегда есть решение лучше, и подумать над тем на самом ли деле ты ограничен в возможностях или можно сделать получше стоит.

тот самый мимокрокодил
image.png52 Кб, 632x499
108 3437617
Джава-господа, это правда? С этим надо что-то делать?
109 3437619
>>37617

>эквивалентность типов


>equals()


Этот долбоёб даже близко не понимает что несёт.
image.png11 Кб, 654x142
110 3437621
>>37619
Мне кажется это нейронка.
>>37617
Ну жаба действительно не позволяет перегружать ==, причем чисто принципиально, поэтому для структурного сравнения, тебе надо equals. Но этот метод можно сгенерировать, через тот же record.
Не понимаю к чему тут вообще приплели делегаты, поскольку функциональный тип, как известно, одно из немногих исключений,к который в теории типов принципиально не обладает свойством эквивалентности = его нельзя сравинвать и к нему ты не сможешь написать корректный equals метод.
Ну и ты можешь неявно наследовать, пик.
111 3437622
>>37621

> в теории типов


В какой ещё теории типов? В твоей влажной?

> его нельзя сравинвать и к нему ты не сможешь написать корректный equals метод.


По моему он скорее не нужен. Написать то наоборот просто, сравнивай класс и всё.
112 3437626
>>37617

>сравнение по ссылкам vs эквивалентность



Дружно ждем вальхаллы - там скорее всего чето такое завезут. А вообще, тема интересная, много экспериментировал на нее.

>делегаты vs функциональные интерфейсы



Вот уж на что похуй так похуй. Любая такая несовместимость решается простым переходом от прямой ссылки к метод-референсу на похуях.
113 3437629
>>37621

>его нельзя сравинвать и к нему ты не сможешь написать корректный equals метод.



Замыкания можно было бы сравнить, в теории... но на практике - хуй, конечно.
image.png53 Кб, 731x265
114 3437631
>>37622

>В какой ещё теории типов?


Хм.. Ну да, есть же альфа эквивалентность, ну и eta conversion, хотя имплементация подобного.. Ну немного затруднительна.

>сравнивай класс и всё


Этого не хватит, лямбда же может захватить что-то с разными значениями. Причем более того, тебе нигде в спеке не гарантируется, что лямбды и дальше будут имплементироваться через анонимные классы и также там есть приписка, что это вэлью классы, и поэтому пожалуйста, не используйте лямбды в synchronized и не используйте с ними ==, посколку они могут в будущем не иметь identity.
>>37629
Ну да, но это в принципе и правда не нужно. Мне просто непонятно как мы от сравнения пришли к делегатам..
115 3437633
>>37631

>это в принципе и правда не нужно



Мне - очень нужно(

Но мне не повезло, потому что лямбды в джаве на уровне байткода вместо каноничных анонимных классов (в которые даже можно откатиться с помощью какой нить ретролямбды) выполнены в виде метафакторно-бутстрапной хрени на инвокдинамиках, и я никак не могу сгенерить для инстанса лямбды equals... а как сука хочется...
116 3437634
>>37633
А зачем, если не секрет? Просто не представляю даже задачу, где это может понадобится.
117 3437644
>>37634
Долго рассказывать. Делал я просто один экспериментальный тул... и все нравится в нем, но лямбды сука всю мазу ломают вот этой вот своей особенностью...
118 3437666
>>37644
>>37633
Какой ты у мамы особенный. Продолжай заниматься бесполезной хуйнёй чтобы убедить себя что они все скуфы.
119 3437670
>>37666
Лол. Это че за рандомный рвоньк?
120 3437733
>>37670
Это местный шизик.
17453463242425916768058403523730.jpg37 Кб, 604x453
121 3437761
>>37621

>функциональный тип, как известно, одно из немногих исключений,к который в теории типов принципиально не обладает свойством эквивалентности


Всё это как водится, был пиздеж.

В теории функциональные типы прекрасно сравниваются: если для любой комбинации входных параметров, они выдают одинаковый результат, то типы эквивалентны. Просто на практике такую проверку эквивалентности, за разумное время, реализовать пока не получается. Но в теории всё как раз работает.
122 3437778
>>37761
Ну да, ты прав, я сам про енто написал в следующем посте. Просто предположил из основания, что Eq тайпкласс в хачкеле не сделан для стрелок, ну и вот чет предположение построил.. Давно все таки теорию не пересматривал, год прошёл уже.. эх, даже грустно что-то..
123 3437794
>>37778
Петь, где костюм брал?
124 3437795
>>37794
Там же, где и юбочку.
Screenshot20250423000052comandroidchromeChromeTabbedActivity.jpg293 Кб, 2728x1229
125 3437840
Сап, подскажите по зарплатам. Я, имея 2 года опыта, когда устраивался в компанию, запрашивал 100к. Несколько месяцев уже работаю, но корёжит от мыслей, что мог больше запросить. На хабре вообще заоблачные цифры, хотя там в фильтрах нельзя указать количество лет опыта, только ебанутые термины типа джун мидл, я судя по нему меньше джуна получаю. Однако я из Беларуси, тут поскромнее зарплаты, но не настолько же. Может ли работадатель спустя 9 месяцев на перформанс ревью зп где-то на 60% поднять или только работу новую искать? Хотя я даже хз 60% это я опять мелочусь или дохуя хочу
126 3437845
>>37840
мне работодатель на перфоманс ревью только хуй за щеку поднял пока что
127 3437850
>>37761

>Просто на практике такую проверку эквивалентности, за разумное время, реализовать пока не получается. Но в теории всё как раз работает.


Это в общем случае невозможно из-за проблемы остановки.
128 3437876
>>37850
Да чё ты этого школьника слушаешь. Кто заставляет его сравнивать по поведению? По непосредственному коду (ну и замыканиям, хули, хотя это выглядит как какой-то сахар который в типы не лезет) сравнить и всё, в реальности даже код сравнивать не надо потому что есть классы. Только это никому не нужно. Нахуй блядь сравнивать лямбды?
129 3438025
>>37876

>По непосредственному коду


Проблема такого подхода в том, что если в тупую сравнивать, то лямбды типа
_ -> 1 + 9
_ -> 5 + 5
Будут ну совершенно разными и как их вообще можно сравнивать-то

>даже код сравнивать не надо потому что есть классы


А это предложение еще лучше, поскольку даже полностью идентичные лямбды, но созданные в разных местах будут иметь разные классы.

В общем смысле, наверное надо привести к нормальной форме сначала, если нормальные формы совпадают, то они эквивалентны.
130 3438026
>>38025

> Будут ну совершенно разными


Ну и?

> и как их вообще можно сравнивать-то


Нахуй тебе их вообще сравнивать?
131 3438029
>>38026

>Ну и?


Это же не так.

>Нахуй тебе их вообще сравнивать?


Я не тот челик, но вон та же идея решала эту задачу для поиска дубликации кода.
132 3438048
>>38029

> Это же не так.


Смотря что считать равенством лямбды. Это уже зависит от задачи, которой у тебя нет.

> но вон та же идея решала эту задачу для поиска дубликации кода.


Нахуй тебе искать дубликацию кода? И каким образом лябмды к этому относятся?
133 3438054
>>37840
Как потопаешь, так и полопаешь. У тебя всегда есть опция сменить работу, другое дело - будут ли тебе вообще где либо платить столько, сколько ты хочешь. 2 года опыта - ниочем, некоторые сеньки и за 10 лет реальной экспертизы и кгомпетенций за душой не имеют. Так что я б на твоем месте как минимум не корежился в саморефлексии. Устроился - уже хорошо. Многие вон и устроиться не могут...
134 3438136
>>38054
А кто работу найти не может? Ни одного такого поста тут не видел
135 3438163
>>38136
Чё? Все.
136 3438166
>>38163
Кто "все"?

Вкатуны?
137 3438176
>>38166
В смысле вкатуны? А кому ещё работу искать?
138 3438181
>>37592

Там древняя как сам MySQL так и сервак, который к нему имеет доступ. Ну даже если получится пробить через безопасников что я к этой базе буду подключаться с другой виртуалки, более современной, то всё равно исходная база на 10 летней давности MySQL и обновляться там никто не хочет, слишком трудозатратно. Такие системы наверное обычно живут до конца а потом их выкидывают и делают новые. Так что while(true) sleep(timeout) ...
139 3438182
>>38136
Залетный чтоли?

Последние года на весь /pr/ стоит вой вкатунов. Не ебу кто все эти люди, но хз каким глухим и слепым надо быть чтобы эту хуету не замечать. Наверное все это ж-ж-ж - неспроста...
140 3438184
>>38182
Можно хоть одну ссылку на такой пост в тредах с джавой?

Где чувак ноет, что долго ищет работу и не может найти, и там, не знаю, совета просит по этому поводу какого.
141 3438188
>>38181
Самое рофляное там даже не подключение с другой виртуалки. Чтоб дебезиум работал, надо на БД бинлог включать, и вот здесь то уже и может встать во весь рост бюрократический аппарат, да и вопросики совместимости не исключены.

мимо
142 3438191
>>38184
Ныли в 2022, 2023, мб ещё немного в 2024, сейчас уже нет смысла ныть. Это как ныть что спина болит — все и так знают что у людей хуёвый позвоночник.
143 3438359
>>38184
Я не могу найти 3 года опыт. Откликнулся на 7 вакансий, 1 отказ, 6 не просмотрели. Одна эйчарка сама меня нашла из сбера, сказала, что в сбере сейчас четырехэтапный собес. 1-ый базаришь с хрю, 2-ой делаешь час какой-то рефакторинг, 3-ий лайвкодинг, 4-ый техническое интервью. Я скипнул после 1-ой ступени, т.к испугался, я слаб в олимпиадном программировании, и что за рефакторинг такой, она объяснить не смогла. Ну моя проблема в том что я не откликаюсь, пока не работаю, думаю что должен изучить webFlux, т.к. это супермодно, пока не знаю зачем он нужен, если есть restTemplate и feign.
144 3438362
>>38359

> Я не могу найти 3 года опыт.



> Откликнулся на 7 вакансий



Чёто аж в голос хрюкнул
145 3438363
>>37840
Чё тебе мешает работая походить по собесам, прося больше? Тем более они все в телемосте сейчас, без камер. И если нарисуется варик, свичнуться.
146 3438364
>>38362
Ну там чел просит поныть, вот я импровизирую. Помогайте мне, давайте думать
147 3438387
Из-за этих гадов мы без работы сидим.
148 3438390
>>38387
Каких?
149 3438397
>>38054
даже если

> 2 года опыта - ниочем


почему он должен получать в два раза меньше велокурьера?
150 3438413
>>38397
Эти велокурьеры с 200к зп с нами в одном треде? Я тебе секрет открою, но курьеры получают зп не за часы и у них нет оклада, да даже трудового нет.
151 3438438
>>38397

А почему должен соразмерно или больше?

Хочешь получать больше - пиздуешь крутиться и доказывать что стоишь больше велошкурьера. Пиздуешь торговать собой на рынок труда. Душишся о десятки гейткиперских собесов на сытное место, либо крутишся в потугах релокнуться туда, где лишних денег больше. Либо растешь и берешь на себя больше обязательств и ответственности, становишься незаменимым и торгуешь этой незаменимостью (тогда могут и на 60% поднять). На худой конец, переквалифицируешься в курьеры, если как ты гришь им платят больше. А пока не доказал обратное, не то что для локального кабана - для любого мимокрока-двачера ты никто и звать тебя никак, и денег своих ты не стоишь. такие дела.

А то раскатили саморефлексию блять, что аж FOMO и "от мыслей корежит". Ну сходи пополни собой коммьюнити потешных доходяг с another-it, фанфик напиши там о том, как стыдно быть программистом. Это точно повысит твои акции.
152 3438463
>>34112

> лучше ракать в го


Верим
153 3438529
>>38463
Как твои успехи в раканьи? Какое впечатление от языка, тулзов и прочего? Расскажи, мне действительно интересно~
154 3438536
>>38438
Ты из какого города? В ДС 100 т.р. даже на еду не хватит, не говоря уже о том чтобы снять, например, квартиру. Почему кодер должен быть полубомжом каким-то, я из простыни твоей не понял.
155 3438557
>>38536
Да че ты доебался с инфантильным бредом каким то - "должен, должен".

Никто ничего никому не должен. Работаешь - значит всем доволен. Какая кому разница из какого ты города.
156 3438568
>>38557
Ты должен мне минет! Что б завтра, к восьми, был у меня дома! И не опаздывать! Понял!?
157 3438590
>>37850

>Это в общем случае невозможно из-за проблемы остановки.


1. Аналитически задача доказательства равенства функций вполне себе решается путем преобразования или нахождения значений при который функции не эквивалентны.
2. В условиях компьютерной программы, все типы так или иначе конечны и можно просто перебрать все значения. И никакой проблемы останова тут нет, есть проблема что надо перебрать слишком много значений. Но множество всех значений функции конечно доказательство этого факта оставим читателям.
158 3438603
Бля, а как в идее многострочный курсор сделать без мышки чисто с клавиатуры?
159 3438611
>>38603
google://idea column selection mode hotkey
160 3438676
>>34087 (OP)
Перестали писать рекрутеры. Раньше регулярно получал предложения пройти собес в сбер, озон или яшку. Прилетали приглашения в линкедин и на почту с телегой. Но начиная с января этого года тишина. Почему так?
161 3438678
>>38676
Вот почему: >>3433673 →
Когда пришли за тобой, защищать тебя было уже некому.
162 3438686
>>38676
Айти обслуживает бизнес. Когда экономика рухнум на айтишниках это сказывается первыми.
Расслабься, через пару месяцев в других отраслях начнется тоже самое. Хорошо когда у соседа корова сдохла!
163 3439189
>>38590

>>Это в общем случае невозможно из-за проблемы остановки.


>1. Аналитически задача доказательства равенства функций вполне себе решается путем преобразования или нахождения значений при который функции не эквивалентны.


У нас машина Тьюринга. Такое решение нерелевантно.

>2. В условиях компьютерной программы, все типы так или иначе конечны и можно просто перебрать все значения. И никакой проблемы останова тут нет,


f(x, y) {return x+y;}
g(x, y) {while(true) ; return 0; }

Докажи мне, что они не эквивалентны, не зная, что у них внутри.
image.png28 Кб, 724x332
164 3439200
>>39189
На самом деле return 0 не нужен.

Более того индетичные функции, ведут себя по разному, если редуцировать их в разных порядках...
165 3439299
Где взять ключ на intellij idea? у меня через 3 дня триал заканчивается. кодить в notepad не предлагать.
167 3439352
>>39299
Сбрось триалку, че ты как этот? Не ставь ты какие-то китайские вирусы.
168 3439363
>>39352

>Сбрось триалку


В новых версиях (с 2023) уже не работает вроде, там привязка к аккаунту.
169 3439368
>>39363
Да кому ты лечишь? Вон у меня зис версия и все робит, я когда вернулся на линупс, нихуя не менял в скриптах и о чудо.. Все робит. Проблемы виндусятников, у которых жидея срет в регедит. Скрипт пик ну или линка - https://gist.github.com/Hedgehogues/123eb27100608d248cf8370e666b29ce/

Единственный минус, что я так и не настроил нормально системд и приходится каждый блядский ребут протыкивать, что я согласен на триалку.
170 3439393
>>39189

>У нас машина Тьюринга. Такое решение нерелевантно.


Дебил, блядь! Ты же не можешь дискуссию из 3-х постов уследить! Хули ты выебываешься?

>>функциональный тип, как известно, одно из немногих исключений,к который в теории типов принципиально не обладает свойством эквивалентности


>В теории функциональные типы прекрасно сравниваются: если для любой комбинации входных параметров, они выдают одинаковый результат, то типы эквивалентны.


Теория типов - математическая теория! Там нет никакой машины Тьюринга и проблемы останова.

>>39189

>не зная, что у них внутри.


Как компилятор может не знать, что внутри функции которую он компилирует?
image.png101 Кб, 1110x595
171 3439408
>>39393

>Там нет никакой машины Тьюринга и проблемы останова.


Да-да, а вот когда компилятор можно сломать комбинацией женериков, это другое, пынямать надо. Проблем при сабтайпинге ну совершенно нет, это все выдумки шарпистов.
172 3439480
Выпиливание финализаторов это такая тупость. "Ыыыыы из рандомного треда вызывается", как будто у нас нет огромного апи экзекуторов на любой вкус и цвет.
173 3439741
>>39393

>Дебил, блядь! Ты же не можешь дискуссию из 3-х постов уследить! Хули ты выебываешься?


Это ты дебил. Если ты сам отмотаешь наверх, то увидишь, что я писал про проверку на практике. Ты часто на теории типов программы пишешь?

>Как компилятор может не знать, что внутри функции которую он компилирует?


О боже. Конечно в прямом виде бесконечный цикл это тривиальный случай. Суть проблемы остановки в том, что ты не можешь реализовать алгоритм, который проверит любой другой алгоритм на конечность. На любой умный компилятор найдётся ещё более хитроумный код, который он не сможет разобрать.
174 3440693
Как в спринге вернуть клиенту не все поля в энтити а только часть?

Вот допустим у меня есть
```java
@GetMapping("/api/things")
Iterable<ThingEntity> things(Pageable pageable) {
return thingRepository.findAll(pageable);
}
```

В ответе я вижу массив со всеми полями в БД. Как вернуть только некоторые?
175 3440723
>>40693
Замути DTOшку на респонз и мапь то, что выгрузил через findAll. Возвращать Entity прям из рестовых эндпойнтов в целом - крайне хуевая затея.
176 3440727
>>40723
и они называют хибернейт УДОБНЫМ. Потом ещё при маппинге будет N+1, а то и стековерфлоу

>>40693
выкинь хибернейт, возьми простенький jdbi, из результата запроса мапь сразу в дтошку. В селекте не забудь прописать только нужные поля, чтобы не гонять все
177 3440731
>>40727

>и они называют хибернейт УДОБНЫМ.



Полностью согласен с тобой. Хибернейт не нужен.

>Потом ещё при маппинге будет N+1, а то и стековерфлоу



При прямой сериализации энтитей n+1 случится еще быстрее, при этом еще и неявнее, и больнее. Маппинг - меньшее из двух зол.
178 3440760
>>37840
А что за компания? У тебя к курсу рос рубля зп привязана или к баксу? А в каких компаниях до этого работал и как? Как кстати в рб айти сейчас? На работа бай вакансий чет мало, вообще собесов много прошел? А то я все собираюсь походить по собесам, но никак не соберусь, все лень.
1000$ наверное самый низ вилки на миддла в рб. +500$ можно смело просить на ревью. х2 от зп наверное тоже возможно, но зависит от жадности конторы, если и дадут, то со скрипом, может начнут предлагать взять еще проект на полставки или прочую хуйню ненужную.
179 3441002
>>40723

>Замути DTOшку на респонз и мапь


В этом весь рак джавы. Поэтому ее сейчас отовсюду выпиливают и вакансий по факту нет на рынке. Дтошки, мапперы написанные вручную, потом тесты на мапперы. Блядь, вы безнадежны. Неудивительно, что кабанам это осточертело и теперь новые проекты стартуют онли на гоулэнге
180 3441017
>>41002
а на гоуленге как это происходит?
181 3441022
>>41002
Какие ещё ручные мапперы? Ты опять говна объелся?
182 3441055
>>41002
Это тебя блять ничего уже не исправит, клешнерукий скрежетатель. Давай еще ченибуть про гетсеты проблей, захистничек корпоративных позиций.
183 3441071
>>41055
Гетсеты плоха.
мимо

Егорка кстати снова промывает чинит мозги молодым: https://www.youtube.com/watch?v=hkK8bvvz9OI
184 3441075
>>41022
Те, который ты ручками пишешь. А потом на них юнит-тесты пишешь, гандон. Как же я рад, что из индустрии начали увольнять жавасуфидонов. В бигтехе теперь онли гошка или сишарп))
185 3441076
>>41075
Иди проспись, шиз. Я никакие мапперы руками не пишу, а вот про тебя не знаю.
186 3441082
>>41075
В твоих маняфантазиях их увольняют, ципсотина ебаная. Пиздуй в котел и сдохни там.
187 3441090
>>41076
Нахуя ты оправдываешься перед этим ничтожеством? Не этой псины сутулой собачье дело что и как ты маппишь. Он пришел сюда не конструктивные диалоги вести, а за струей в ебало.
188 3441092
>>41071
Meh, даже лень смотреть. EO с его меметичностью кончился где то в 2018м.
189 3441097
>>41076
Дтошку уже оформил? Ну чтобы энтитю не кидать клиенту в спрэнге, лол!
190 3441100
>>41097
Чё, совсем нечего уже в ответ высрать, да?
191 3441102
>>41092
Там всё старое.

Статические методы - плоха.
null - плоха.
Наследование - плоха.
type casting и рефлексия - плоха.
Гетсеты - плоха.
Паттерны singleton, DTO, Factory, ORM и MVC - плоха.
Что делать чтобы было хорошо - никто не знает.
Всё.
192 3441118
>>41102

>Статические методы



Вполне себе артефакт процедурного программирования. 256й любит говорить что ПП - это плохо, но на самом деле ПП - это вполне себе путь, хоть и довольно устаревший.

>null



По billion-dollar mistake уже кто только не прошелся. Это такой бородатый мем что я хз зачем его повторять. Наверное затем, что разрабы необучаемы и продолжают зачем то оправдывать эту дырищу в системах типов. С другой стороны, котлин немного расшевелил джавовое болото, и в последнее время разгоняется движ вокруг JSpecify, так что может не все так плохо.

>Наследование



То же. Все прошлись уже по наследованию, даже среди ООПшников есть принцип "предпочитай композицию наследованию". С другой стороны, без наследования у тебя остается довольно мало опций для сабтайпинга, так что приходится искать компромиссы.

>type casting и рефлексия



Тащемто да, в продуктовом коде им не место (за некоторыми легализованными исключениями типа этих ваших новых сопоставлений sealed иерархий через instanceof). Но та же рефлексия вполне себе приемлема в тех местах, где предметная область - это классы и их нутря. Метапрограммирование. Рефлексия в спринге, к примеру - неизбежна по определению (ну либо если без рефлексии, то через байткододроч как в dagger - мало что меняет по сути вопроса. Байткододрочу в продуктовом коде тоже не место)

>Гетсеты



Если б у меня в руках был пистолет, я ебнул бы первого кто заговорил бы со мной о гетсетах - просто до ебанутости ублюдочная по сути своей тема. Ее можно было бы конструктивно вглубь разгонять довольно глубоко, но с тупорылым взрывоопасным контингентом из взвеси ломбокодегенератов и шарпеев делать это - в дурку попасть.

>Паттерны



Паттерны - веселая штука. Прикол паттернов в том, что они работают только для конкретного языка, конкретного стиля разработки и конкретной эпохи. Меняется эпоха - меняются и паттерны.

Те же синглтоны к примеру. Никто не пишет самописные ленивые синглтоны с дабллоками. Никто не пишет даже обычные синглтоны через статические переменные или енамы. Сегодня синглтон - это тупо частный случай скоупа и жизненного цикла отдельно взятых бинов, а не паттерн.

В ФП вообще нет привычных ООП-разрабу паттернов ни в каком виде. Зато есть всякие теркат-артефакты типа функторов, аппликативов, монад, которые вполне подходят под определение "паттерн", хоть их так никто и не зовет. Короче, не стоит сильно загоняться если кто то зовет твой любимый паттерн говном - этот кто то просто сидит в другой парадигме разработки и кодит каким то другим неведомым тебе стилем, а тебя - троллит.

>Что делать чтобы было хорошо - никто не знает.



Дело не в знании...

>Всё.

192 3441118
>>41102

>Статические методы



Вполне себе артефакт процедурного программирования. 256й любит говорить что ПП - это плохо, но на самом деле ПП - это вполне себе путь, хоть и довольно устаревший.

>null



По billion-dollar mistake уже кто только не прошелся. Это такой бородатый мем что я хз зачем его повторять. Наверное затем, что разрабы необучаемы и продолжают зачем то оправдывать эту дырищу в системах типов. С другой стороны, котлин немного расшевелил джавовое болото, и в последнее время разгоняется движ вокруг JSpecify, так что может не все так плохо.

>Наследование



То же. Все прошлись уже по наследованию, даже среди ООПшников есть принцип "предпочитай композицию наследованию". С другой стороны, без наследования у тебя остается довольно мало опций для сабтайпинга, так что приходится искать компромиссы.

>type casting и рефлексия



Тащемто да, в продуктовом коде им не место (за некоторыми легализованными исключениями типа этих ваших новых сопоставлений sealed иерархий через instanceof). Но та же рефлексия вполне себе приемлема в тех местах, где предметная область - это классы и их нутря. Метапрограммирование. Рефлексия в спринге, к примеру - неизбежна по определению (ну либо если без рефлексии, то через байткододроч как в dagger - мало что меняет по сути вопроса. Байткододрочу в продуктовом коде тоже не место)

>Гетсеты



Если б у меня в руках был пистолет, я ебнул бы первого кто заговорил бы со мной о гетсетах - просто до ебанутости ублюдочная по сути своей тема. Ее можно было бы конструктивно вглубь разгонять довольно глубоко, но с тупорылым взрывоопасным контингентом из взвеси ломбокодегенератов и шарпеев делать это - в дурку попасть.

>Паттерны



Паттерны - веселая штука. Прикол паттернов в том, что они работают только для конкретного языка, конкретного стиля разработки и конкретной эпохи. Меняется эпоха - меняются и паттерны.

Те же синглтоны к примеру. Никто не пишет самописные ленивые синглтоны с дабллоками. Никто не пишет даже обычные синглтоны через статические переменные или енамы. Сегодня синглтон - это тупо частный случай скоупа и жизненного цикла отдельно взятых бинов, а не паттерн.

В ФП вообще нет привычных ООП-разрабу паттернов ни в каком виде. Зато есть всякие теркат-артефакты типа функторов, аппликативов, монад, которые вполне подходят под определение "паттерн", хоть их так никто и не зовет. Короче, не стоит сильно загоняться если кто то зовет твой любимый паттерн говном - этот кто то просто сидит в другой парадигме разработки и кодит каким то другим неведомым тебе стилем, а тебя - троллит.

>Что делать чтобы было хорошо - никто не знает.



Дело не в знании...

>Всё.

193 3441126
>>41118

> гавно! пруфав не будет! все знают!


Что-то по существу будет?
194 3441128
>>41126
Лол.

Озвучь причину своего подрыва пожалуйста?
195 3441129
>>41128

>нет ты парвался


Ясн.
196 3441132
>>41129
Ой, все, иди траву потрогай. У тебя двач головного мозга.
197 3441135
>>41132

>нет тыыыы!!!!!


Найс дегенерата потрясывает с того что оказалось что его стена текста которую он усердно натыкивал это просто понос из слов без единого пруфа или аргумента. "все знают", "если б был пистолет", "кто только не прошёлся", лол.
198 3441139
>>41135
Ну про null и наследование действительно "все знают". Это уже больше 20 лет обсасывается.
199 3441140
>>41139

>щас как ещё раз насру поносом и тогда это точно аргументом станет


Я не знаю. У меня нормально и наследование, и нулл работают. Может у кого-то руки кривые просто?

Что-то по делу теперь пукнешь или будешь на говно исходить?
200 3441142
>>41140
Покежь своих иерархию классов с наследованием.
201 3441146
>>41142
А пизду твоей мамаши тебе не показать?
202 3441149
>>41146
Не, не надо. Иерархию давай показывай.
203 3441151
>>41149
Знаешь, вот если попытаться привести на ум человека что не понимает переносные значения это будет ребёнок. Дети обычно воспринимают всё буквально слишком. Пятилетний даун ты или просто умственно отсталый, не знаю, но в любом случае, для самых тупых давай без красоты речи тебе я скажу:
Что сказать-то хотел?
204 3441157
>>41151
Дружище, ты утверждаешь, что у тебя "нормально работает наследование". И я просто хочу посмотреть на пример нормальной иерархии в проде, где больше 100 классов хотя бы, и все наследуются друг от друга.
205 3441158
>>41157
Кто тебя заставляет все классы наследовать друг от друга? Я же говорю, руки кривые.
206 3441160
>>41157
Чел, забей. Неужто ты не видишь что это порватка, которая в данный момент времени находится в тотальном отрицалове? Не тыкай говно палочкой - вонять не будет. Ему реально стоит сходить в форточку пропердеться - дай анону время.
207 3441164
>>41160
Начался самоподдув после того как понял что не вывозит защиту своей религии.
208 3441171
>>41158
Ну то есть у тебя нет наследования всё-таки?
>>41160
Ну а вдруг алмаз в куче говна найдётся, и нам принесут схему с идеальным наследованием. А то мы все врём оказывается, обманываем себя и друг друга со своими композициями.
209 3441177
>>41171
Та забей, этот паарноик давно и стабильно рвонькает по одному и тому же паттерну, ничего ты там не откопаешь.

Я даже не до конца понимаю с чего он в этот раз то порвался. Я тащемто и не гнал на наследование, и изначально отметил что несмотря на принцип "composition over inheritance" тут не все однозначно. И опять шиз рвонькнул, да штош ты делать будешь.
210 3441178
>>41171
А что, между "наследовать всё от всего" и "нет наследования" ничего нет?
211 3442436
Короче понял что вкатиться нереально, после полтора годов обучения, в чем не прав ?
212 3442469
>>42436
Всё так, не надо вкатываться
213 3442506
>>42469
пойду в девопсы, а вам соболезную. рынок мертв, массовые сокращения, нейросети уже подменяют мидлов
214 3442534
>>42506
Да, всё так, медленно ползём в сторону кладбища
215 3443180
>>40760
Финтех, скажем так, зп не привязана к другой валюте, фиксирована в бел рублях. По вакансиям да, не густо, но на джаву штук 5 вакансий нормальных можно найти. На почту HR пару раз написали, хотя на хх у них нет вакансий. Я бы потом даже хотел в какую-нибудь российскую компанию устроиться, там и рынок и зп больше, только пока что хз как это юридически можно сделать, если я не хочу всякие СНИЛСы и ВНЖ в РФ оформлять
216 3443304
>>42506

>Малышка думает, что найдет работу девопсом без опыта в сисадминстве или разработке


>Малышка думает, что нейросеть не умеет писать ямлы и пердолить линукс


)
217 3443305
>>43304
Я сейчас сисадмин, но почему то делал упор на java(успех знакомых подстегивал) + всякие ебланы говорили что девопс в сто раз сложнее, что на самом деле не так
218 3443307
>>43304
а в чем сложность пердоленья линукс с чатгпт? Все терминальное, с учетом если это опенсорм, отлично пердолится. Так же, в чем сложность чатгопоте составить ямл, если ему все нормально объяснить че-куда?
219 3443308
>>43304
>>43307
Неправильно прочел, согласен что нейросеть может пердолить все (кроме сетевых железок, почему-то)
220 3443310
>>43305
Ааа, ну тогда ты реально всрал полтора года на хуйню без негатива. Тебе осталось буквально изменить название резюме на девопса и развернуть локально гитлаб, куб, стек для мониторинга и прочие баззворды из вакансий. Поковыряться в этом на выходных и спамить резюме везде. Хуй знает зачем ты вообще связался с джавой, а не питоном/го которые в 10000 раз полезнее для девопса. Я если что мимо пхпшник который пытается влезть в джаву, но из-за сокращений джавистов зимой план пошел по пизде.
221 3443339
>>43310

>джавистов


Мда.
222 3443346
>>43310
Спасибо за мнение, тут уже психологический фактор, что сложновато будет слезть с джавы, на которую я дал себе установку она или смерть нахуй, так как была еще маленькая надежда что знакомые к себе могут взять, хотя об этом никто и не говорил, но пошедший по пизде рынок трудоустройства заставил задуматься что я мудак. План был, да и есть, все таки допердолиться до собеса (с волчьей помощью) и после жестких попусков, уже со спокойной душой , выгоревшем нахуй нутром полностью кинуть все силы на девопс
image2025-04-3014-03-00.png124 Кб, 740x200
223 3443502
>>43305

>что на самом деле не так


Чет не очень верится, там же куча подводных типа всяких юидов юзеров, сигроупс, маразматических расположений конфегов в etc, и системд еще логи читать и чинить хуй пойми что. Ну и зависимости чинить...
Вот когда-то давно ебался с тем, что мне надо было подтянуть gtk+ в lsp и сборку, а дистрибутив особенный и не позволяет это так просто сделать, поэтому нужно создавать что-то вроде отдельной развертки с собственным PATH, щитай недоконтейнер, ебань еще та и что самое грустное, в других дистрах ебань была бы вероятно еще больше. Ну или вот из совсем недавнего, мне блять подсунули сборку на мавене, где в процессе она качает ебаный бинарник в линукс. Не знаю, какому гению пришла в голову такая светлая идея, но мне че, пришлось ручками декомпилить вызовы dynamic lynk, чтобы персвязать все это добро нормальным образом.
Для меня это какая-то ну лютая дрочка, может поэтому и кажется, что это гораздо сложнее чем просто писать кодек в идешке.
Вкатываюсь в джаву Вкатунидзе 224 3443600
Сап, учу джаву уже около 2 месяцев, изучил кор более менее(много не знаю еще, но думаю по мере изучения закрою темы, которые не знал). Сейчас попердолил сервлеты и тыкаю хибернейт. В мае начну спринг. Как у вас дела?
225 3443606
>>43600
Почему сначала хибер и только потом спринг? Странный порядок
226 3443608
>>43600
Сру в офисном толчке прям ща, дела бывали и получше. Спасибо, что спросил
227 3443614
Пацаны! Мне рекрутер в личку стучится!

Найм воскрес!
Вкатунидзе 228 3443624
>>43606
А что не так?
Щас вот сначала сделал приложение с jdbc, потом все на hibernate переписал
229 3443625
>>43624
Просто хибер юзать без спринг даты https://spring.io/projects/spring-data ... Зачем?
Вкатунидзе 230 3443628
>>43625
Попробовать, разобраться с сервлетами, плюс как говорил писал на jdbc и решил переписать все с хибером
231 3443629
>>43600
алгоритмы начал задрачивать?
232 3443630
>>43625
А нахуй хибер юзать со спринг датой? Чтобы что?
Вкатунидзе 233 3443631
>>43629
Нет, зачем? Может быть когда будут на собесы через месяца 3-4 звать посижу. Нужно технологии учить мне кажется
234 3443636
>>43631
Лучше начать сейчас чтобы потом не ахуеть, параллельно. мое мнение
235 3443638
>>43630
Чтобы @Query нормально писать, репозитории генерить. Иначе че там, придется самому EntityManager распихивать, каждый метод расписывать. Еще не дай боже, вообще Criteria API использовать. Просто ужс. Впрочем учитывая то, что он легко переписал с jdbc там наверное что-то уровня CrudRepository.
236 3443642
>>43638

>что-то уровня CrudRepository


Да 2 таблички, связаны между собой по одному столбцу.
За 2 вечера где-то переписал
237 3443649
>>43642
С помощью каких ресурсов учишься?
Вкатунидзе 238 3443654
>>43649
google, youtube, фантазия в голове когда пишу что-то
В основном смотрю технологию, повторяю за индусом, потом сижу сам пишу, а так читал Эккеля когда кор учил, хорошая книга
239 3443803
Посоветуйте лучший способ изучить Spring Boot, если я уже знаю Java, давно на ней пишу но ванильно, без фреймворков. Но при этом знаю веб фреймворки Джанго для питона и Ларавел для ПХП. Для веба делаю проекты только на Джанге и Ларе.

Но сейчас мне нужно будет делать проекты на Java тоже и я не хочу это делать на велосипедах, точнее это ваще не варик, такую работу не примут. Хочу делать на Spring Boot но не знаю как его лучше изучить, чтобы без лишней хуйни, коротко и по делу что куда.
240 3443855
Мда, теперь понятно почему вакансий стало так мало, особенно нормальных.

>Во время беседы с главой Meta* Марком Цукербергом на конференции LlamaCon глава Microsoft рассказал, что ИИ пишет 20-30% кода в репозиториях компании, а «некоторые проекты, вероятно, полностью написаны» нейросетями. Он добавил, что этот объём «неуклонно растёт».


По наблюдениям Наделлы, ИИ лучше справляется с Python, чем с C++.

>В конце апреля 2025 года во время отчёта о доходах гендиректор Google Сундар Пичаи заявил, что ИИ пишет более 30% кода для компании. В 2024-м он сообщал о четверти сгенерированного кода.

241 3443873
>>43855
Пиздеть не мешки ворочать.
242 3443895
>>43855
Как же безработным вкатунам нечем заняться. Сидят и хайпуют.
243 3444097
>>43855

Чего только не напиздишь, лишь бы акции твоей компании росли.
Вкатунидзе 244 3445045
>>44097
Факт, тоже так считаю, что все кто говорят о замене рабочих мест и о том что скоро ии будет работать за всех имеют прямое или через 1 руку отношение к ии и их капитал от этих слов увеличивается соответственно

Как дела у вас? Не пишу ничего 2 дня. Уехал в архыз на отдых. Первую строчку кода в мае напишу только в воскресенье
245 3445103
>>45045
Останутся спецы высококвалифицированные\сеньорного плана, они будут настраивать ии, чтобы те делали мидловые\джуновские задачи, уже ведь такое практикуются
246 3445137
>>43803
Если времени много, то лучше учить с обычного спринга, где бины в xml файлах описываются. В спринг буте прям очень много магии по сравнению с ванильной джавой и он будет восприниматься как новый язык и глубокого понимания не будет.
Для меня лучший способ учить всякие фреймворки - это видосы, где кто-то пишет с нуля полное приложение, постепенно добавляя фичи. Смотрю видос и пишу код параллельно с автором, останавливаясь, чтобы что-то обдумать, понять. Так понимаешь вообще как мыслить в рамках нового фреймворка, с чего начинать и как вообще все запустить. На ютубе была серия видосов, где автор писал аналог твиттера. Можно еще поискать какие-то сливы курсов по спрингу с юдеми на рутрекере.
Вкатунидзе 247 3445260
>>45137
Я кор смотрел от юдеми, такое говнище. Думаю спринг такой же будет.

А как совет с видосами это база, также изучаю сейчас. Индусы люто впереди по обучающему контенту
248 3445419
>>45260
юдеми это что там же их дохуя, dmdev?
249 3445421
>>45137

Окей, попробую. Но немного раздражают индусы, я им не доверяю. Больше нравится когда белый человек нормально объясняет всё в видосе.
Вкатунидзе 250 3445801
>>45419
Да, он вообще отбитый. Java guru лучше в разы + бесплатный для основ. А так есть индусы зачем вам этот торрент
251 3445959
>>45801

>Да, он вообще отбитый


почему так?
252 3445968
>>45801
А слитый guru есть где-то??
Вкатунидзе 253 3446003
>>45968
На ютцбе посмотри просто и все

>>45959
Не знаю, остаётся послевкусие будто бы я идиот после просмотра, хотя это проблема кора, который пытаются донести до идиотов
254 3446015
>>43654
Сколько лвл? Через сколько так по ощущениям первую работу найдешь?
256 3446051
>>46049
Ещё бы обычным разработчикам всю эту магию давали. А то как будто луа скрипты для игры "джава" пишем. А точно, если дать то нельзя будет больше кривляться "а надо было медленный бойлерплейт писать, ишь чё удумал решать задачи крупнее laba1, не было бы поломок обратной совместимости)))))".
257 3446057
>>46051

>As @Stable annotation is applicable only to internal JDK code, you cannot use it directly in your Java applications. However, we are working on a new JEP called JEP 502: Stable Values (Preview) that will provide constructs that allow user code to indirectly benefit from @Stable fields in a similar way.

258 3446062
>>46057

>indirectly


Ясн.
259 3446065
Ваше мнение?

Жив ли Spring Framework | Java, энтерпрайз, фреймворки | Podlodka Podcast
https://www.youtube.com/watch?v=MPzmr3p3Cj8
Вкатунидзе 260 3446181
>>46015
23 лвл, осенью планирую выход на волчий рынок, если у себя в городе не найду госуху
261 3446195
>>46181
Если ты в совсем мухосранске то лучше ракать пхп, особенно сейчас во время кризиса. Либо переезжать в дс. Даже ката академия при подготовке волков форсит их перебраться в столицу.
262 3446202
>>46065
все так, жава умирает, еще лет 20 и точно умрет
263 3446287
Блд-шиз, ты там умер? Беспокоюсь за тебя. Живо подорвался кабанчиком пояснить почему bld говно и aint gonna boom, потому что я всё больше уверен в обратном.
264 3446417
>>46181
почему джава?
почему не пыха го хотя бы?
265 3446451
>>46417
Автором того поста был не я, но я отвечу. Нет смысла от таких вопросов, потому что почти всё одинаковое по задачам, по деньгам и тд. Различия где то там в глубине, но это не то о чём надо думать при выборе.

Лично я выбрал Джаву, потому что мне хочется работать в крупной компании, на крупном проекте, с большим кол-вом людей. Плюс как то я пробовал писать на PHP+Laravel и меня прям воротит от нетипизированных языков. Вот хуй знает почему, просто их как то для себя лично не уважаю, не нравятся мне. + Джава, потому что я не люблю продукты майкрософт, их дизайн код и тд - не моё просто. Go - ваще хуй знает что это и нахуя, там какое то специфичное для нашиъ дней написание кода (вроде функциональное программирование, а не ООП - но это не точно) + слышал что на этот язык берут опытных людей, для которых это не первый язык и есть коммерческий опыт в неколько лет на чём-то другом. Да и просто нет интереса к этому.

Подытожив, становится понятно, что тут деньги или спрос на язык не влияют никакой роли, язык выбирался чисто по своим позывам души
266 3446551
>>46451
мы говорим про ВКАТ именно, парень на первую работу идёт
вот и интересно, он же молодой находчивый, почему не го?

>мне хочется работать в крупной компании, на крупном проекте,


респект
267 3446583
>>46551
не знаю, мне он ощущается как ненадёжный вариант. но каждому своё
268 3446586
Java - лучший ЯП?
Вкатунидзе 269 3446588
>>46195
Ну я с завода перекатился в сишарп отчёты в госуху, но там вообще не бэк, пишу шаблоны к отчёту на шарпе и базу тыкаю. А так на хх есть госуха с джавой и частные корпы ищут, но там от года ну и стэк нужен
Вкатунидзе 270 3446589
>>46417
хочу писать код, потом буду на джаву моды писать, нравится майнкрафт прост
Вкатунидзе 271 3446875
Всех с понедельником. Приехал вчера с гор. Уже сижу на работе капчую
272 3446896
>>46875
Чому не взял отпуск/административный на эти три дня? Я вот пиздец как не хочу на работу.
273 3446965
>>46896
Получаю мало и так, плюс в апреле был в отпуске, а мая сам по себе день/оклад самый большой в году так как работать мало дней
Вкатунидзе 274 3446980
>>46965
май
Ну в теории можно, многие так делают, но с моим окладом в 60тыщ скипать 3 дня (60/18)
3, не могу себе пока позволить
275 3447185
>>34087 (OP)
Почему даже в делфи есть перегрузка операторов, а у вас до сих пор нет, бомжи?
276 3447196
>>47185
Иди ты нахуй со своей перегрузкой операторов. Фича говна для клоунов и пидарасов.
277 3447234
>>47185
Через 10 лет приходи, мы над тобой посмеемся.
278 3447301
>>47196

Двачую. Перегрузка операторов это ужасная практика. Никогда не стоит её использовать.
image.png1,4 Мб, 2160x1651
279 3447321
It's over
280 3447349
>>47321

Ого, стало так же как в 2020.
Вкатунидзе 281 3447356
>>47321
Мне кажется если будет еще один карантин произойдет точно такое же, а так да двачую чела, все как в 2020, людей просто больше на вакансию, но волки не спят
282 3447376
>>47349
В ковид, ага.
283 3447517
>>47349

>как в резкий кризис после которого резко пошёл огромный бум


Поправил.
284 3447574
>>46195
Всрата академи и 4 года назад форсила в Москву переезжать
285 3447575
>>46551
На ГОвно 3 вакансии на всю Россию и те мидлово-сеньерские
286 3447604
>>47517

А сейчас в США не кризис? Кризис и ещё какой.
287 3447613
>>47604
Ничего резкого. Одно плато длится уже раз в 10 больше чем весь тот ковидный спад вместе с падением, минимумом и восстановлением до доковидного уровня.
bld.png22 Кб, 391x280
288 3448078
>>46287

>bld



Шта?
290 3448169
>>48158
Если саппорт в идешку завезли, то даже что то в этом всем есть. Надо будет тоже попробовать.
image.png91 Кб, 936x479
291 3448223
Какие перспективы у Java? Собираюсь вкатываться в бекенд, выбираю между Java и Go, куда легче вкатиться?
292 3448278
>>48223
в то что тебе ближе
293 3448279
>>48223
Есть аналитики в треде, в чем причина падения именно жабы?
294 3448280
>>48279
я не аналитик, но думаю что это как крипта или акции - попадало всё. Просто компаниям столько теперь не надо, для мелкой хуйни используют ИИ, челы попродвинутей, коих меньше, пробиваются на имеющиеся позиции
295 3448281
>>48279
Просто обычно думают что джун приходит, сначала просто какие то ошибочки исправляет, даже не всегда фреймворк юзает. А теперь эта потребность закрыта и надо приходить сразу готовым
296 3448310
Поломка обратной совместимости это так тупо. Имаджинируйте её не в языке программирования, а в натуральном языке:

>20 МАЯ 2025 ГОДА ВЫХОДИТ РУССКИЙ ЯЗЫК 7.23 В КОТОРОМ УДАЛЕНА ПОДДЕРЖКА ПРИЧАСТИЙ ПРОШЛОГО ВРЕМЕНИ ИЗ-ЗА СЛОЖНОСТИ ПОДДЕРЖКИ, ЗАМЕНЫ НЕТ, ПИЗДУЙТЕ МИГРИРОВАТЬ ВСЕ СТАРЫЕ КНИГИ НА НОВУЮ ВЕРСИЮ ЯЗЫКА

297 3448323
>>48310

> ИЗ-ЗА СЛОЖНОСТИ ПОДДЕРЖКИ



А, теперь мне понятно, почему новый Ворд стал настолько медленным, что специально для него включили жадную загрузку в память вместе со стартом винды сука.
298 3448477
>>48310
Ударение в слове "звонит" скоро будет официально на первый слог, потому что "все так привыкли".
299 3448511
>>48310
Че, опять щас будешь разгонять как тебя ущемили декрекейтнув Thread.stop?
300 3448759
>>48281
Да поебать вообще на джунов. Было бы, кстати, интересно посмотреть статистику чисто сеньковского соотношения вакансия/кандидаты.

>>48280
Падает все, но жаба упала почему-то ощутимее.
301 3448761
>>48477
Вот бы только реальное исследование провели, в ДС буквально ни разу за жизнь не слышал, только от каких-то залетных селюков.
302 3448822
Есть живой враппер какого-нибудь 3д говна на джаву, типа JOGL, только чтоб под java 21 хотя бы запускался?
Я заебался уже перебирать примеры с jogl, там нихуя не работает без костылей
303 3448843
>>48822
Lwjgl3 пробовал?
304 3448850
>>48511
Ожидаемо вылез терпеливый охранитель.
305 3448853
>>48850
Раскрой секрет - ты проебал на этом депрекате что нибудь материальное? Бабло там, или бизнес, или имущество какое?
306 3448857
>>48853

>упорная попытка доказать что удаление фич что используются везде и даже без выдачи замены это хорошо

307 3448859
>>48857
Чего ты сразу в залупу лезешь - те сложно на вопрос ответить?
308 3448861
>>48859
Рандомные вопросы чат гопоте задавай.
309 3448863
...и вот так двач проебал чатгопоте в тесте тьюринга.
310 3448867
>>48843
Там тоже java 1.8, всё исдохло
311 3448870
>>48867
Чего? Лжвгл 3 отлично с новой джавой работает.
312 3448873
>>48870
[LWJGL] [ThreadLocalUtil] Unsupported JNI version detected, this may result in a crash. Please inform LWJGL developers.
313 3448874
>>48873
Хм. 21 попробуй поставь, а не ёрли акцесс 25 или что у теья там.
314 3448875
Впрочем да, обновил до 3.3.6 и окно стало появляться. Но пока без изображений
315 3448877
Ладн, пойду дальше ковырять. Всем спасибо
316 3448942

>мавен 4


>ничего полезного, только поломки совместимости

317 3448943
>>48942

>ничего полезного


Теперь можно писать помник на ямле почти из коробки.
https://github.com/maveniverse/mason
318 3448944
>>48943
Так всегда ж можно было, давно ж уже проджект хуеглот был.
319 3448945
>>48944
Эээ, ну, короче, Мавен 4 круто.
Эту фичу они сами рекламировали.
320 3448953
КОГДА Ж БЛЯДЬ В ДЖАВУ ЗАВЕЗУТ ИМЕНОВАННЫЕ ПАРАМЕТРЫ??????
321 3449080
Мужики! Я, конечно, понимаю, что у каждого из вас тут есть претензии к джаве, идеи как всё сделать лучше и вообще - плох тот солдат, кто не мечтает стать генералом.
Но просто поймите: в Oracle же не дураки сидят! Там, я думаю, и без вас разберутся, что добавлять, а что нет. И потом, если каждого так послушать, одному это дай, второму то добавь, третий говорит всё убрать. И что? Что по вашему тогда должно делать начальство в Oracle, чтобы все были тут довольны? К чему это всё приведет? Раз все такие умные, делайте сами свой язык тогда.
Я лучше буду сидеть тихо: пусть как начальство скажет, так пусть и будет. А то советчиков полон тред, а я напомню, что пиздеть - это не мешки ворочать. Я всё сказал. Хватит ныть и ругать начальство!
322 3449194
>>49080
Поэтому на джаве всё меньше пишут белых людей и всё больше паджитов из Индии/Пакистана?
artworks-000462697074-macoea-t500x500.jpg45 Кб, 500x500
323 3449291
>>49080
Есть специально обученный гойтц который объясняет почему в джаве это НИНУЖНО.
324 3449422
Я правильно понимаю, что выучив жабу я с 80% вероятностью буду поддерживать легаси 11-х, 17-х и 8-х версий?
И я правильно понимаю, что выучив голанг, я с 80% вероятностью не найду работу ждуном? Всё правильно понял?
325 3449445
>>49194
А ты расист штоле, говно правое? СКАЖЕШЬ ЭТУ ХУЙНЮ В ЛИЦО ВСЕЙ СЕМЬЕ ВСЕМ ПАНКАМ АНТИФА! ТОЛЬКО МОЛОДОСТЬ, ТОЛЬКО МЫТИЩИ, ТОЛЬКО ХАРДКОР! ВПЕРЁД ЮНИТИ! 359!
326 3449658
Ахуйные жепы есть?
327 3449697
>>49422
Да, всё так.
328 3449824
>>49422
с голангом точно не надёшь, сам в джаву перекатываюсь
мимо студентота
329 3449827
>>49824
С чего такие мысли? В бигтех набирают стажеров, ждунов. Двое знакомых собесились в яндекс, тбанк. Обоих прошляпили правда, сказали мало проектов, но мб если проектики попилить, то возьмут

Меня просто воротит от мысли, смотреть и писать джава код, он такой МНОГОСЛОВНЫЙ, я просто в ахуях сижу. А голанг такой минимальный, строгий, ахуенный язычок. Ээййхх
330 3449838
>>49827
в джаву ПРОЩЕ, сильно проще
на самом деле сейчас куда угодно ТЯЖЕЛО ПИЗДЕЦ
а так да, голанг охуеннен, писать на нём нравится
331 3449874
>>49838
Сколько раз ты высрал if err != nil return nil пока писал этот пост?
332 3449914
>>49827

>В бигтех набирают стажеров, ждунов


Бля а сколько у нас в стране населения? То что там какой-то сбер, озон, т-банк, ещё кто-то опубликовал тысячу другую вакансий - это пшик, капля в море. В пересчёте на весь рынок, это будет какой-нибудь 0,1%. Грубо говоря 1 стажёр на 999 обычных вакансий. Попасть можно, но непрактично на этом строить будущие планы.
333 3449922
>>49827

>>он такой МНОГОСЛОВНЫЙ, я просто в ахуях сижу


Если ЭТО по твоему главная проблема то тебе точно лучше в джэву не идти.
334 3449936
>>49874
сынок try-catch это кал тебе не понять ты глуп и не видал больших залуп
335 3449940
>>49922
А какие ещё проблемы для макакена, должны быть?
Мне как-то типок задвигал, что контейнер с жаба микросервисом весит 20 гигабайт. И, мол, учи голанг, ведь жаба медленная и хуйня вообще. Должно ли меня это ебать? Заказчик сказал сделать - я сделал, если он просит, значит надо.
А для макакичей только такие проблемы и будут, что синтаксис хуйня или вакансий мало. Я в своё время так отказался от плюсов, ибо того рот ебал трижды читать и разбираться в С++ проектах, это бля такая хтонь
336 3449942
>>49914
Всмысле стране? Я про дс говорю. Ща бы искать работу в айтишичке не в дс 1/2
337 3449956
>>49936

>нинужна


Лол.

> и не видал больших залуп


Чем больше мои залупы, тем больше я убеждаюсь что без нормальных исключений пиздец.
Jengadistorted.jpg335 Кб, 1200x1791
338 3449978
>>49940
Много запутанного говнокода вперемешку с корпоративными велосипедами и интеграциями с хуйней без документации.
Если на проекту поработало несколько человек - сидишь как археолог разгребаешь где тут важный костыль, где говнокод от джуна, а где очередной модный паттерн от шизосеньора. Иногда только по блейму догадаться можно.
И тебе нужно не просто разобраться, а встроить туда свой кусок говнокода, чтоб все не развалилось к хуям.
Особенно когда тестов нет и ты узнаешь что что то наебнулось от тестера или девопса. спасибо что не на проде, но и такое бывает

>>Я в своё время так отказался от плюсов, ибо того рот ебал трижды читать и разбираться в С++ проектах, это бля такая хтонь


Ну тогда добро пожаловать. Снова.
339 3450000
>>49827

>в бигтех набирают стажеров, ждунов


Кстати, а зачем они этой хуйней занимаются? Типа чтобы никто не подумал, что в компании проблемы с финансами? Типа у них денег дохуя, можем позволить даже стажеров брать, учить их чему-нибудь? Или наоборот из-за того, что нет денег и дешевле взять студентика? Какая им выгода от этого, если сейчас айтишников наоборот на мороз выкидывают? Зачем учить новых долбоёбов, если за забором и так очередь из сенек, которые всё никак не могут найти работку?
340 3450041
>>50000
Там бабки крутятся немыслимые. 300к за все 3 месяца стажера отдать, при условии, что он может остаться, они могут, даже если он уйдёт - похуй, это для них пыль.
341 3450066
>>50000

>Зачем учить новых долбоёбов, если за забором и так очередь из сенек, которые всё никак не могут найти работку



Много сенек с докрученным опытом. Много просто лоускилльных сенек. У нас пару месяцев назад такого наняли. По грейду сеньор, лет 10 опыта в айтихе на разных проектах. А по навыкам что-то между джуном и мидлом, у нас некоторые джуны код лучше него пишут.
Опять же, каких-то гигантских сокращений на айти рынке не было, толпы сенек за забором сами по себе не могли образоваться. Приток сенек идет во многом из-за людей с фейковыми резюме.

И в этом смысле лучше взять стажера на стажерскую зарплату и срочный трудовой контракт, чем вкладываться в мутного мидла или сеньку, нанимая его сразу на бессрочный контракт и на большие суммы. Если стажер не перформит (например просто потому что овощ или в универе загруз большой и не получается совмещать), то стажер просто уходит на мороз через 3 месяца без лишних проволочек. В случае с мидлосенькой его придется внимательно оценивать на испыталке и в случае увольнения расходы будут сильно больше.
342 3450073
>>49824
Вообще я не думаю, что стоит делать перекат golang -> java, на российском рынке сейчас лучше гоуленг доучить и пойти стажером куда-нибудь в yadro/озон/wb, с джавой компаний не сильно больше нынче и стажеров нанимают в основном только в бигтехе.
На хх.ру искать работу стало бесполезно, по моим ощущениям. Как будто херки больше не считают его хорошим инструментом для поиска кандидатов, и если есть открытая позиция, то через нетворкинг и рефералки пытаются находить людей.
343 3450094
>>49978
Да как будто такое везде есть. Про запутанный говнокод ты ещё плюсы не видел в проде. Двойная ссылка это стандарт, тройная - повсеместный костыль, которые не меняют ГОДАМИ, переменная UF_GH_TR6LK = 0000HASHCOPORNx47, что это никто не ебёт, шизосиньор скинул в папочку, ты её импортнул, так надо, 80% библиотек - эксклюзивчик компании, поэтому весь твой опыт котируется с меньшим энтузиазмом, если ты переходишь в другую компанию на ТОТ ЖЕ СТЕК, миллиард типов, громадные методы, классы и того больше, всё разбито на хедеры и исполняемые, притом в хедерах бывает и реализация, ну а хуле, зачем выносить в отдельный файл.
344 3450127
>>50066

>лоускилльных сенек


>джуны код лучше него пишут


>не перформит


Галера со вкусом епама. Нет пути.
sage 345 3450160
>>49942

>Всмысле стране? Я про дс говорю. Ща бы искать работу в айтишичке не в дс 1/2


Попасть на стажировку - это всё равно что поступить на бюджет в МГИМО. Туда поступают те у кого 90+ баллов по каждому предмету и конкуренция 50-70 человек на место. Без разницы - москва не москва, джуниорские вакансии - это всегда 1% всех вакансий. На всех языках и на всех стеках. А стажировок в 10 раз меньше джуниоровских вакансий, отсюда и 0,1%.
347 3450348
>>50066

>И в этом смысле лучше взять стажера на стажерскую зарплату и срочный трудовой контракт, чем вкладываться в мутного мидла или сеньку, нанимая его сразу на бессрочный контракт и на большие суммы



Бля, я буквально те же выводы транслировал своим шизам-манагерам, когда те ринулись хайрить людей, но куда там... нахайрили каких то долбоебов, а мне возись с ними теперь...
348 3450383
>>50218
Так а где здесь пруф, что за забором очередь из скилловых сенек?
349 3450433
>>50348
возьми меня
мимо студент, готов работать за еду (еда с меня)
350 3450458
Чё это значит?

Structured Concurrency Revamp in Java 25 - Inside Java Newscast #91
https://www.youtube.com/watch?v=vLJDPmXufQw
351 3450477
>>50458

>Чё это значит


Посмотри, потом нам расскажешь.
352 3450831

>JEP 512: Compact Source Files and Instance Main Methods


>The static methods of the IO class are no longer implicitly imported into compact source files. Thus invocations of these methods must name the class, e.g., IO.println("Hello, world!"), unless the methods are explicitly imported.


Блядь, какие же дегенераты. STR."\{zalupa}", IO.println("pizda"), когда ж эти дауны уже успокоятся-то.
353 3451309
>>50433
Какой же ты жалкий червь
354 3451319
>>50383
Да даже скилловых мидлов особо нет, одни волчары анскильные
355 3451371
>>48310
Ты вероятно пропустил реформу русского языка большевиками, лол.
356 3451518
>>51309
ты чмо безработное
357 3451542
>>50831
А что не так? Ниже в том же жепе написано, зачем так сделоли:

>In earlier previews of this feature, we explored the possibility of compact source files automatically importing the static methods of the new IO class. Thus developers could write println(...) in compact source files instead of IO.println(...).



>This had the pleasing effect of making the methods in IO appear to be built-in to the Java language, but it added a speed bump to the on-ramp: To evolve a compact source file into an ordinary source file, a beginner would have to add a static import declaration — another advanced concept. This runs contrary to our second goal, namely that that beginners should be able to grow their code gracefully. This design would also create a long-term burden of reviewing a likely endless stream of proposals to add additional methods to the IO class.

trial has expired.jpg52 Кб, 1901x931
358 3451754
Появилось вот такое, что делать? спасите помогите.
359 3451761
>>51754
OpenIDE качай.
360 3451770
>>50433
Адекватного студента с радостью рассмотрел бы под менторство. Но все уже, менеджеры нахайрили великовозрастных долбоебов с костью в мозге.
361 3451784
>>51770

Понимаю, самое хуёвое когда к тебе приходит чел лет 30-50, который самый умный, всё знает и его не надо учить. На любые предложения использовать более современные инструменты огрызается или говорит ладно ПОСМОТРИМ и продолжает писать код в NetBeans или в vim-е. И не пользуется нейронками, ГУГЛИТ.
362 3451803
>>51784
Было бы мне глубоко не похуй на их методы. Перформит - и то ладно.
Иронично то, что нахайрили как раз таки великовозрастных долбоебов под нейронками. Ожидалось, что они будут брать на себя отдельные направления развития софта - сеньки же. А по факту - оказалось что это лысеющие анальники, которые встают в ступор от любой ошибки билда, на которую их нейронка не дает внятного анамнеза. И ладно бы если б они просто бежали с вопросами ко мне - не жалко. Волпросы от них звучат как "бля, чето не билдится - в чем может быть причина". Допинфу и логи приходится клещами выдирать.

Вот как так получается что с нейронкой они значит готовы раскидать промт со всем тщением и дотошностью, а с людьми уровень софтскиллов - как у валенка ебаного? Колмплексы какие то - не иначе...
363 3451912
>>50383
Да я просто за эти выходные обчитался МВП треда, другое-ит, новостей и видосов что ойти в с ё. Теперь пытаюсь найти для себя причины продолжать дальше вкатываться. Если раньше казалось, что если в любом деле ты реально шаришь, то всегда что-нибудь найдешь. Сейчас, мне кажется, для айти это уже не актуально. Я на предпоследней стадии принятия.
364 3451932
>>51912

>другое-ит



Чел - "другое айти" это сборище клоунов на кризисе среднего возраста. Посыл их высера в целом может изначально и правильный (что айтишка перехайплена говновозами на инфоцыганах с целью прогрева лохов), но они сами не заметили, как выродились просто в банду ЧСВ-нитакусиков. Воспринимать их всерьез - себя не уважать. Даже их предтечи-хохлы со своим ebanoe.it выглядели солиднее: хоть и там тоже чувствовался этот рак, у них хотя бы были мемы про те же сыры за 500 гривен.

Клоуны уже даже не стараются как раньше освещать уебищные кейсы и кадры айтишки - сидят и фикшн-фанфики только строчат. Менталитет неудачника во всей красе.
365 3451945
>>51803
Я не знаю сколько там тебе лет, но больших дегенератов чем зумеры я не встречал. Были и исключения, но это 1 на миллион, если повезет.
366 3451959
>>51945
Может ты и прав, но я как то все равно больше симпатизирую студентоте. При должном менторстве из студентоты есть шанс вырастить специалиста. Из зазнавшегося лоускилльного сеньки - никогда. Но я понимаю твой скепсис в отношении зумеров: почитаешь вкатунов - чем они мотивированы, что ими движет, как они рассуждают - и понимаешь что будущего нет и времена "горящих глаз" прошли.
367 3452112
Хочу создать манифест на работе. Что скажете?

1) В dto не должно быть логики
2) Наследование - плохо. Максимум 1 уровень
3) методы в виде чистых функции - хорошо. Легко тестировать, легко применять, не имеют сайд-эффектов
4) Сайд-эффекты - плохо
5) Логика - в Service или Utils
6) метод очень желательно в высоту не более 1 экрана (90 строк) и не более 7 параметров
7) Максимум 3 уровня вложенности в условиях
8) Если код повторяется 2 раза - вынеси в функцию
9) Не применять теги ломбока: Data - опасно из-за equals и toString и вложенных объектов
10) методы называть глаголами, переменные существительными или прилагательными
368 3452135
>>52112

>1) В dto не должно быть логики


Плюсую

>2) Наследование - плохо. Максимум 1 уровень



Неубедительно. Почему один, а не два или не ноль?

>3) методы в виде чистых функции - хорошо. Легко тестировать, легко применять, не имеют сайд-эффектов


>4) Сайд-эффекты - плохо



СУБД для тебя - шутка чтоли? Один сплошной сайд-эффект, считай... Короче, если у тебя на руках нет референса для подражания, эдакой петклиник в ФПшном reference-transparent стиле, готовься быть непонятым и посланным нахуй своими коллегами-долбоебами.

>5) Логика - в Service или Utils



Допустим

>6) метод очень желательно в высоту не более 1 экрана (90 строк) и не более 7 параметров



Я б не доебывался до количества параметров

>7) Максимум 3 уровня вложенности в условиях



Многовато, но хуй с ним...

>8) Если код повторяется 2 раза - вынеси в функцию



Опасная риторика. Можешь в итоге обнаружить себя посреди леса функций, делающих хуй пойми что, и именованных также.

>9) Не применять теги ломбока: Data - опасно из-за equals и toString и вложенных объектов



Я бы в целом выпилил лобок, но ок, допустим

>10) методы называть глаголами, переменные существительными или прилагательными



Meh...
368 3452135
>>52112

>1) В dto не должно быть логики


Плюсую

>2) Наследование - плохо. Максимум 1 уровень



Неубедительно. Почему один, а не два или не ноль?

>3) методы в виде чистых функции - хорошо. Легко тестировать, легко применять, не имеют сайд-эффектов


>4) Сайд-эффекты - плохо



СУБД для тебя - шутка чтоли? Один сплошной сайд-эффект, считай... Короче, если у тебя на руках нет референса для подражания, эдакой петклиник в ФПшном reference-transparent стиле, готовься быть непонятым и посланным нахуй своими коллегами-долбоебами.

>5) Логика - в Service или Utils



Допустим

>6) метод очень желательно в высоту не более 1 экрана (90 строк) и не более 7 параметров



Я б не доебывался до количества параметров

>7) Максимум 3 уровня вложенности в условиях



Многовато, но хуй с ним...

>8) Если код повторяется 2 раза - вынеси в функцию



Опасная риторика. Можешь в итоге обнаружить себя посреди леса функций, делающих хуй пойми что, и именованных также.

>9) Не применять теги ломбока: Data - опасно из-за equals и toString и вложенных объектов



Я бы в целом выпилил лобок, но ок, допустим

>10) методы называть глаголами, переменные существительными или прилагательными



Meh...
369 3452193
>>52112

>Хочу создать манифест на работе


Гиблое дело. Особенно, если в команде больше 3 разработчиков. В принципе старайся ничего не улучшать и не предлагать. Дали задачу - сиди и делай. Сделал? Бери следующую задачу. Это дело неблагодарное и тебя никто не похвалит. Либо все кивнут, мол "да-да, давайте так делать" и хуй забьют
370 3452220
>>52193
ну прям калит эта логика в дто, да ещё дублирующая, да ещё с наследованием
371 3452254
>>52112
Бугаенка, ты? Палишься по стилю "миллион тейков — 0 пруфов".
372 3452260
>>52112
>>52220
У нас в треде ещё один у мамки особенный объявился.
373 3452415
>>51754
@echo off
NET SESSION >nul 2>&1
IF %errorLevel% NEQ 0 (
echo This script requires administrator privileges.
echo Please right-click on the script and select "Run as administrator"
pause
exit /B 1
)

SETLOCAL
REM Only remove specific evaluation-related files
IF EXIST "%APPDATA%\JetBrains" (
del "%APPDATA%\JetBrains\PermanentUserId"
del "%APPDATA%\JetBrains\PermanentDeviceId"
del "%APPDATA%\JetBrains\\.key"
del "%APPDATA%\JetBrains\\.license"
del "%APPDATA%\JetBrains\\bl"
del "%APPDATA%\JetBrains\
\crl"
)

REM Clear JavaSoft registry entries
REG DELETE "HKEY_CURRENT_USER\Software\JavaSoft" /f

ENDLOCAL
374 3452416
>>52415
Как же я ебал обезьяну с её звёздочками интерпретируемыми как разметка.
https://pastebin.com/He1CCMMj
375 3452427
>>51761

>OpenIDE


>исходники закрыты


Да наши как я вижу уже научились брать пример с уважаемых партнёров OpenAI, FreeFileSync, "open hearted open sourced" httpie, список бесконечен.
2025-05-12 20-36-20.mp41,7 Мб, mp4,
1920x1080, 0:06
376 3452430
>>51761
Надавать бы по рукам их веб макаке.
377 3452490
>>52427

>>OpenIDE


>>исходники закрыты


У них прямо на сайте ссылка на репу есть.
378 3452527
>>52112
расскажи подробнее про 1
какую логику, например, ты видел в dto?
379 3452536

>public static HexFormat of()


Каждый раз как в первый охуеваю с этого нейминга.
380 3452541
>>52536
мяу.
381 3452545
>>52536

Ну и чем это плохо?

Path.of("file.txt"); // Java NIO
List.of(1, 2, 3); // Коллекции
Stream.of("a", "b"); // Stream API

Абсолютно удачный и понятный нейминг.
382 3452546
>>52545
Тем что () пустой. Оф что?
383 3452547
>>52546
fuck.off()
384 3452558
>>52546

Может это немного глупо, просто это граничный случай. Типа создать объект просто, из ничего, пустой.
385 3452573
>>52558
Да, что-то типа конструктора, но чтобы повыебываться.
386 3452620
Почему плюсоидов называют байтоёбами? На джаве так-то тоже только в путь байтовыми сдвигами хуигами приходится заниматься.
387 3452689
>>52620
Не отчаивайся. "Байтоеб" - это как гендер: просто идентифицируй себя как "байтосексуал", придумай себе особое местоимение и будь счастлив.
388 3452714
>>52620
Я пишу на FASM библиотеки и подключаю их к жабе через JNI. Довольно увлекательное занятие.
Кресты не знаю, слишком сложно, там один Boost больше всего Spring'а.
Для системного программирования достаточно сишки и ассемблера.
389 3452716
Где вы работаете?
Откликнулся на hh.ru на все удаленные вакансии со словом Java и везде получил отказ.
Сейчас знакомый взял виндовым админом за 12 тыщ.
390 3452749
>>52716
Что у тебя в резюме написано?
391 3452835

> Вакансия: Junior Java Developer


> Опубликована: Вчера


> Откликов: 200-250



Вот как не терять мотивацию после такого? Сейчас вообще реально устроиться на работу НЕ по знакомству?
392 3452872
>>52835
Реально.
393 3453042
ВСем привет, у меня тут препод в соседнем треде спрашивает >>3453031 →

>Ну окей, блиц ответ без IDE, что будет если есть иерерахия Animal и Cat extends Animal, и в ней статик-член whoAmI, равный "animal!" и "cat" соответственно.


>Ты делаешь вот так:


>Animal cat = new Cat ("Ya dolboyob!");


>System.out.print(cat.whoAmI);


>Что выведтся и почему?


чё ему ответить??
Помогайте, а то он от меня не отстанет
Screenshot From 2025-05-13 14-50-04.png15 Кб, 575x175
394 3453056
>>53042
Вот. Все по честному - никакой идешки, никакой чатгопоты.
395 3453058
>>53056
спасибо, век не забуду!
396 3453061
>>53056
Прикольно. Как это работает? Он типа компилит классы прямо из строкового представления и тут же их загружает в реальном времени? Это виндовс?
397 3453066
>>53042
Это https://openjdk.org/jeps/222. Мало кто знает, но у джавы довольно продолжительное время есть собственный REPL.
398 3453070
>>53066
>>53061
Идет в составе любого JDK начиная с девятки. Работает везде.
399 3453102
Как вкатиться на архитектора? Работал сеньором, пару раз проходил систем дизайн, что-то читал, смотрел многие доклады на эту тему, вроде начальное понимание имеется.
400 3453150
>>53056
Ты не ответил почему. Это хуйня про статическое связывание, потом наверняка следующий вопрос про динамическое..
401 3453187
>>53150
Не хочу. Это надо в jls идли и искать ссылки на главы, а мне впадлу.

>статическое связывание



Связывание (статическое, динамическое) - это история про методы обычно, если правильно помню. А тут - поля.
402 3453203
>>53187
Тут просто о том, что статический член нельзя override, его можно только скрыть (hide). Короче если ты у переменной супертипа дергнешь статик-член, то вызовется член именно переменной, а не фактического объекта, но который она указывает.
Подъебка в том что нормальные люди никогда не зовут статик члены через инстанс (хотя синтаксически так и можно), за это надо пиздить. Правильный вызов был бы Animal.whoAmI или Cat.whoAmI, и тогда нет никакого скрытого трика во всем этом.
403 3453205
>>53187
Почему для тебя поля чем-то отличаются от методов?
404 3453230
>>53205
А почему нет? На уровне байткода поля и методы - кардинально разные концепции.

Чтение статического поля - это getstatic, чтение обычного поля - aload(objectref). В обоих случах опкод ждет на верхушке стека однозначный вполне себе статичный сет операнд. Скорее всего если мы скомпилим пример и посмотрим байткод, там буквально в месте где читается whoAmI будет `invokestatic Animal.whoAmI`. И похуй на переменную, похуй на тип обьекта на который она ссылается.

Для вызова методов же там целая палитра из invokов.
405 3453233
>>53230

>invokestatic Animal.whoAmI



Оговорился. Getstatic имелся в виду, очевидно.
406 3453361
Кто-нибудь понимает о чём он?

https://www.youtube.com/shorts/rw2rQ2WjZvY

Чё он коупит? Какая ещё замена шел скриптам или питону? Он бредит чи шо?
407 3453378
>>53361
в чем там суть? у меня ютубу пизда. что джава заменит повершелл и баш?
408 3453385
>>53378

Да, типа Проект Амбер развивается и станет заменой шелу и питону. Примерно так.
409 3453387
>>53385
Ну и бредятина.
ec80de84debe76c89b2186aee7487bb4.jpg50 Кб, 640x380
410 3453391
да и хуй с ним. вообще пахую
Screenshot From 2025-05-13 20-45-27.png18 Кб, 446x228
411 3453399
>>53385

Тут вон выше напомнили о jshell, а между тем его уже сегодня можно в shebang блять засунуть.

Когда кодишь на Java Script, но есть нюанс.
412 3453412
>>53399
А в чем подвох? Матрица дала сбой и время откатилось в нулевые? https://beanshell.github.io/
413 3453438
>>53412
О, точно! Помню-помню такое. Еще вроде бы был maven-beanshell-plugin, через который можно было прям из помника подлезть во внутренние структуры мавена и буквально наскриптовать себе недостающий goal на нем.
414 3453581
>>52749
Обычное резюме, раньше (до 2023 примерно) HR сами писали.
415 3453809
>>53361
Это обкатка вот этого жепа, как я понял:
>>51542
>>50831
416 3453831
>>53387
Ну, джаве так-то недалеко до этого, тут скорее вопрос за инструментарием. Оптимизировать мавен архетип, чтобы не выполнялся три года, вся хуйня.
417 3453855
мужики а насколько распространено написание запросов на raw sql?
или абсолютно всегда использую hibernate/jpa/jooq и прочее?
418 3453922
>>53855
Если с нуля будешь что-то педалить, и будешь являться ньюфагом. Я например на прошлой работе заебенил софтинку которая напрямую общалась с БД на лоу-лвл JDBC слое. Там просто был ёбаный завод и IT работало по принципу кто во что горазд. Даже чуток стыдно за тот кринж, там даже нет защиты от инъекций через Prepared Statements (хотя это просто БД всякого мусора без sensitive data, но все равно зашквар).
То есть если какой-то бедолага когда-то доберется до этого куска кала, то для него это и будет случай "может и редко, но иногда".
419 3453962
>>53855
Так Jooq считай сам по себе тонюсенькая прослойка вокруг raw sql, на фоне жирных ОРМов он скрывает минимум. Ты имел ввиду raw jdbc может быть?

С jdbc нужен скилл. Выстрелить себе в колено там как нефиг делать.
420 3454024
>>53855
я стараюсь везде выпиливать хибернейт. Не перевариваю это говно
421 3454094
>>54024
Откуда ты его там выпиливаешь, клоун? Из laba1 ?
422 3454196
>>53581
Странно, мне сегодня как раз две хрюши написали. Обычный вообще джавовый стек и обычное самое рюземе с 3+ годами опыта

Может у тебя там зарплатные ожидания 400к стоят?
423 3454202
>>53581
Это прям так подробно надо расписывать опыт работы? А если я один и тот же продукт сидел пердел поддерживал?
424 3454209
>>54094
из сервисов в своей продуктовой конторе, где кроме меня ещё 2 перекатчика с пхп, которые это говнище и написали
425 3454225
>>54209
Имаджинирую, какими ты всратыми костылями там насрал
426 3454238
>>54225
Зато без хуйбернейта для понимания которого нужно минимум 112 нейронов!
image.png20 Кб, 547x315
427 3454242
вкат неизбежен я качусь неистово
428 3454275
>>54242
Аббревиатуры в кэмэлКейсе приводят к нижнему регистру после первой буквы по конвенции джава неймингов, перекатчик хуев.
429 3454277
>>53102
1. уcтраиваешься техлидом (если не повезет - то тимлидом)
2. ??????
3. получаешь повышение до архитектора

с улицы архитекторов только с опытом берут
430 3454279
>>54275
К дто не относится.
431 3454281
>>54242
DTO→Dto
Хотя я бы назвал Request/Response, чтоб не переделывать все, когда тебе предложат еще одно поле в ответ засунуть.
432 3454300
>>54281
>>54275
мужики спасибо
433 3454367
>>54242

Никогда не использую аббривеатуры капсом в названиях. Этот тебе дело говорит: >>54281

Наступит день когда если ты приучишь себя везде лепить аббривиатуры ты пукнешь и обмякнешь, когда придётся создать класс типа EPGU1CVIMISESIAResponse

Тру стори.

Видел как-то сервис интеграции ЕПГУ с 1С модулем для ВИМИС через ЕСИА

Это пизда просто чё там с неймингом нахуеверчено было
434 3454384
>>34087 (OP)
Хуйнёй страдаете. Катитесь в 1С срочняком. Там тупо кнопка "БАБЛО".
435 3454391
>>54242
У тебя есть слои: Внешний мир - Контроллер - Сервис - Репозиторий. На каждом уровне ездят свои данные. Dto передается между сервисом и репозиторием, это литерали строки из sql, которые отмапили в классы для удобства. Между контроллером и сервисом передается Model, она может совпадать с дто, а может и нет. Между внешним миром и контроллером передается Payload, его называют по схеме XxxRequestPayload и XxxResponsePayload, слово payload часто опускают: GetUserRequest -> GetUserResponse.
Почему нельзя просто взять DTO и прокинуть от контроллера до бд через орм - а потому что китайский хакер тебе туда насует говна и поменяет те поля, которые менять нельзя.
436 3454410
>>54391
а почему он не насует их в payload в таком случае? какая вообще принципиальная разница куда насовывать?
437 3454424
>>54410
Предположим, у тебя есть юзер с полями Name строка и Status число. Есть ручка UpdateUserName. В ручку приехал какой-то джейсон, ты его отмапил на дто, положил эту дто в бд, все ок. Но, есть нюанс. Хакер передал в джейсоне не только name, но и status, орм его подхватил и тоже изменил, хотя это делать нельзя. В пейлоаде же у тебя будет только поле Name и только его ты скопируешь в DTO.
438 3454437
>>54424

> имплаинг в любое очко не всунут TLS/SSL, и кроме ...lfkve984hoedqfj9./.-3xlx0... узкоглазый китайский школьник ничего не увидит



Так а что помешает в пейлоад запихать имитацию того что там есть статус? Чем принципиально отличается json от пейлоада, если и у того и того спецификация какая-то более менее открытая? Пейлоад это что, не какой-то текст?
Я сириусли не понимаю как такие детсадовские меры могут защитить канал сильнее. Да даже если там сериализованный бинарный поток передается, это энивей не шифр, тот у кого хватит мозгов раскрыть канал уж такую-то хуйню точно расшифрует. Тем более на стороне СУБД придется пилить сервис-десериализатор. Или я дебил?
439 3454452
>>54437

Тем что Request превращается в Dto с помощью бизнес логики, которая из Request берёт значения только тех полей, которые разрешены для изменения.
440 3454468
>>54452
Я нихуя не понял
Ты можешь в паре слов описать где какие программные компоненты, протоколы и какова сущность уязвимости, которую ты там описал?
я хоть усрись не могу понять, как у тебя внутрь физического сетевого канала между сервисом и СУБД попадет что-то, что не является "носителем" jdbc-протокола? Все эти геберы-хуиберы, дто, залу-пэ-о и прочие фантики существуют только на уровне java-сервера. В сеть это все уплывает энивей как jdbc-траффик (и защищен он через TLS, если админят все это не дебилы, что гарантирует его защиту если не проебаны сертификаты db-сервера). Как этот мамкин хакер что-то там заэксплойтит внутри этих dto и json? Снимет дамп JVM и что-то там заижектит? Но если у тебя JVM куда-то утек, то ебаный "статус" в DTO - твоя самая маленькая проблема.
или я что-то неправильно понимаю?
Нет, можно на строне DB-сервера поднять свой java-сервер, который будет обслуживать запросы с app-сервера, и между ними поднять хоть охуеть-надежный-не-имеет-аналогов-протокол, А сам этот сервер будет ходить на БД по локалхосту. И все это можно окукулить файрволом. Только как-то непонятно целеполагание для сооружения такой хуйни, если старый-добрый TLS надежен абсолютно, если только админы не долбоебы, которые хранят сертификаты в pem формате прямо под носом у всего домена на 20к человек с 777 правами.
441 3454485
>>54468

Допустим у тебя на сайте есть пользователи
У этих пользователей есть профили
Пользователь может зайти в свои настройки и поменять там Имя, Почту, День рождения и т.д.
Все эти данные передаются в форме POST запросом с клиента на сервер
Названия переменных POST запроса совпадают с полями сущности User в БД
У тебя стоит валидация на эти поля
Тебе прилетает POST запрос
Ты радостно валидируешь ВСЕ поля которые к тебе пришли
Ошибок нет
Ты эти поля записываешь объект User автоматически
Сохраняешь изменения

Теперь твой пользователь стал админом, потому что подменил поле isAdmin с 0 на 1

Этого поля не было в форме на сайте в редактировании профиля
Но кто тебе сказал что POST запрос тебе придёт точно с теми же полями что у тебя в форме?
Я могу руками создать этот запрос и написать туда любые поля в том числе и isAdmin
442 3454492
>>54485
эммм.... изначально ты написал литералли это:

>нельзя просто взять DTO и прокинуть от контроллера до бд через орм - а потому что китайский хакер тебе туда насует говна и поменяет те поля, которые менять нельзя


Но это вообще другая сторона относительно фронта, это как бэк общается с БД. При чем тут формочки которые с сайтика таскаются?
И даже если так, то в чем твое решение? Если это http как в непуганные 90-е, что тебе помешает насрать в тот же самый пейлоад? Особенно если то что ты называл изначально "пейлоад", как я кажется начинаю понимать, это литералли пейлоад http-протокола, который, внезапно, в 95% случаев, omg, и есть json!
Короче, ЯННП. А может ты. А может уже и похуй.
Это я все к тому что все эти абстракции внутри бэка нужны чтоб посильнее изолировать горе-джуна от страшного лоу-лвл программирования, а не для безопасности. Безопасность обеспечивается безопасными сетевыми протоколами.
443 3454496
>>54492

Скинь нейронке диалог она тебе объяснит.
лолоорроп.jpg59 Кб, 974x205
444 3454516
>>54496
все понятно. Если б ты в первом же посте не сказал что тут имеет место какое-то "прокидывание говна от сервиса в БД", то я бы не уплыл от сосредоточении на том что идея в том чтоб сервер помнил, что именно он ждет в ответе, и фильтровал мусор. Хотя это довольно очевидно.
я на самом деле больше админю, а тут сижу по фану, не ебу архитектору спрингового всего этого барахла
445 3454519
>>54516

Я всё время закидываю нейронке посты которые мне не понятны. Реально часто что-то новое для себя узнаю.
446 3454550
>>54516

>таксую для души

447 3454569
>>54516

>mass assignment


Прикольно, не знал, как это называется.
Суть в том, что перекладывание из request в model, из model в dto - это такая защита от дурака. Простое и надежное решение.
448 3454639
>>54391

>Dto передается между сервисом и репозиторием


Эммм.... нет, чел.... Сразу видно, что ты залетуха. Дто в контроллере мапится на модель, а дальше передается в сервис. Там он сохраняется в репозитории. Не нужно городить какие-то "дто между сервисом и репозиторием". Посмотри выступления Борисова, чел...
449 3454646
>>54639
Щас бы мапперы в контроллер тащить
450 3454658
>>54639
у меня дто заполняется в ждбс маппинге. Зачем плодить сущности и мапперы?
И берёт из бд только то что нужно, не больше не меньше, без Н+1 запросов
451 3454666
>>54646
Ты не шаришь в клин аркитэкча, чел.. Контроллер вызывает маппер, который конвертирует дтоху в модель, а затем передает ее в сервисный слой. Сервисный слой потом выплевывает другую модель, которую ты конвертируешь в контроллере и отдаешь клиенту. Читай Анкл Бэба, чтобы не быть бэттхёртом, чел...
452 3454667
>>54658
У тебя текут абстракции, чел... Какие ты там дтохи мапишь в слое работе с бд, челл?
453 3454703
>>54639

> Дто в контроллере мапится на модель, а дальше передается в сервис


вот у меня так сделано, только мапинг происходит в сервисе, а не в контроллере
разве маппингом не должен заниматься слой сервиса?
454 3454711
>>54703
>>54639
всё, узнал, в контроллере должно мапиться, яеблан
Selection215.jpg139 Кб, 831x638
455 3454748
>>54666

Да и без клин архитекчи понятно что наша логика не должна работать с запросами, которые могут менятся и могут быть разными и что наша логика начинается за границами контроллера, а значит именно контроллер должен попросить кого-то создать из запроса дто, потому что именно в контроллер прилетает запрос и он служит границей, по одну сторону которого внешний мир, а по другую наша отстёгиваемая бизнес модель
456 3454760
>>54666
У вас взрослые есть на проекте?
457 3454784
>>54703

>разве маппингом не должен заниматься слой сервиса?


Слой сервиса может использоваться как зависимость в других сервисах. Это ок в жабе, когда у тебя сервисный класс ЮзерСервисИмпл зависит от 7-10 других сервисов, а те от других сервисов и т.д. Плюс вся работа с базой там же и все сайдэффекты и прочие хуитки там же. Это жаба-вэй
458 3454795
>>54784
благодарю!
459 3454809
>>54795

Он хуйню тебе высрал, а ты его благодаришь.
460 3454810
Чё за хуйня, почему вакансий вообще нет на хх?

На весь нижний Новгород 2!!!

Такого, наверное, никогда не было сколько я себя помню.
Selection216.jpg53 Кб, 751x318
461 3454813
>>54784

> На Java можно написать плохой код



Надо же, ну дела-а-а
462 3454833
>>54809
почему?
из его поста я примерно понял, что сервису лучше прнимать модель, а не принимать дто и мапить
в других сервисах, которые использют этот сервис, может не оказаться этого дто, а иметься сразу модель тащить за собой мапер нафик надо
кратко - сервисы должны работать с уже готовыми моделями, а не заниматься хуйнёй
яеблан и не понял или как?
463 3454846
>>54833

Хуйня в его последнем посте, на который ты ответил, а не во всём диалоге.
464 3454881
>>54833

>сервисы должны работать с уже готовыми моделями


Я одного не понимаю, как вы эти ебаные модели вообще достанете на уровне контроллера? Модель, конкрентно в хибере - это @Entity, которая сидит в бакете. Тебе придется обратится к бд, для того, чтобы её достать. Причем при переходах между сервисами эти энтити могут терять свою свзяь с бакетами(=пошел нахуй при обращении к Lazy или коллекциям), а какие-нибудь неосторожные сеты вообще могут изменить значения.
465 3454886
>>54881
поэтому из бд надо класть сразу в дто
466 3454899
>>54886
Ну т.е. есть дто уровня апи, которое маппится в json, есть dto уровня сервисов, которое абстрагируется от @Entity и это зовется "моделью", и есть энтити, то что сопаставляется с бд? Модель уровня репозитория, причем на уровне репозитория тоже есть DTO, которые например объединяют пару энтити.
И вот скажем, чтобы изменить поле в какой-то энитити, нам сначала приходит дто уровня апи, которая маппится в "модель" и отдается сервису. Сервис обращается к репозиторию и достает энтити в ней шаманит и на выходе опять же отдает "модель", а не энтитю. Потом эта "модель" маппится в обратно порядке в дто уровня апи, а потом json.
Client Layer (JSON)
│ ↑
↓ │
Controller Layer (Accepts/Returns "API DTOs")
│ ↑
↓ │
Service Layer (Uses "Service DTOs" or Domain Models)
│ ↑
↓ │
Repository Layer (Works with JPA Entities)
│ ↑
↓ │
Database Layer (SQL)

И между сервисами гуляют не энтити, а дтошки своего рода.
Я все правильно понял?
467 3454917
>>54899
У тебя в контроллер прилетает UserDto на создание пользователя. Ты прямо в контроллере мапишь UserDto на User и передаешь его в сервис UserServiceImpl. Тот уже вызывает UserRepository и сохраняет в базу, возвращая User с заполненным id, например. Затем ты возвращаешь User из UserServiceImpl в контроллер и там мапишь в UserDto и отдаешь клиенту. Это прямо самый простой кейс.
Если тебе приходит просто строковый айдишник в контроллере на GET вызов, то ты его просто передаешь в сервис UserServiceIMPL и там через UserRepository достаешь нужный User из базы.
Проблемы начинаются, когда у тебя появляется чуть более сложная логика - связь с другими сервисами, необходимость пукать в кафку, отправлять письма, обращаться в другие системы по REST/gRPC. Т.к. все сайдэффекты у тебя в сервисном слое, то ты его хуй протестишь кроме гнойных и ублюдочных сраных "тестов" на моках либо тормозном говнище в виде интеграционных тестов, блядь. В этом рак сраной жабы
468 3454921
>>54917
отказываюсь от хибернейта и передаю UserDto прямо в Repository.
469 3454933
>>54917
Контроллер не сможет смаппить UserDto в User, если User это @Entity, например потому, что в бд ID суррогатный, а не натуральный и его банально не существует в апи. Поэтому я и говорю, что у если у вас на уровне сервисов именно энтити в качестве аргументов, то это хуйня по многим причинам, которые писал выше.
Если это не энтитя, то метод save jparepository очевидно не будет работать.
Ещё Impl не обязательно, спринт же умеет инъектить и классы.

И что ты имеешь против моков? Есть пример где подобное решено лучшим способом?
470 3454936
>>54933

>Контроллер не сможет смаппить UserDto в User, если User это @Entity, например потому, что в бд ID суррогатный


Он и не должен его мапить. Ты же создаешь пользователя, а значит твой UserDto не содержит поля id. Оно появится уже после сохранения сущности в базу. По факту у тебя CreateUserDto -> User -> DB. И обратно у тебя уже юзер с id DB -> User (id) -> UserDto

>И что ты имеешь против моков? Есть пример где подобное решено лучшим способом?


Очевидно, что ты работал только на говнопроектах. Подобный стиль написания "тестов" был актуален в начале нулевых в провинциальных аутсорс конторках где пахло луком, потом и пердежом
471 3454958
>>54936

>Ты же создаешь пользователя


> чтобы изменить поле в какой-то энитити


Нуу, допустим этот метод контроллера по смене пароля юзера. Соответсвенно он принимает логин, oldPasswd, newPasswd. Суррогатный айдишник пользователь само собой не знает.
И вот метод сервиса, который принимает User и делает ровно одно действие по save в jparepository. Но мы же не сможем создать User, поскольку не знаем id.
Как в таком случае? Просто мне кажется, что тут лучше сделать промежуточный уровень дто, который одновременно не привязан ни к апи, ни к бд. Но в принципе, можно в качестве аргумента принимать и дто уровня апи, что возмооожно нарушение SRP.
472 3454969
>>54958
Ну у тебя в ручке контроллера будет id в url и в теле жсон с паролями. Потом ты это тупо передаешь в сервисный слой типа UserServiceImpl.changePassword(id, old, new) и там уже достаешь через UserRepository юзера, меняешь ему пароль, сейвишь или еще как-нибудь делаешь
473 3454972
>>54917

>IMPL


>impl


>impl


я сейчас с ума сойду нахуй ещё раз ты это сделаешь
474 3454989
>>54969

>будет id в url


Вот честно, никогда не видел, чтобы у меня id спрашивали при смене пароля. Логин - это натуральный ключ, его обычно хватает. Наверно что-то типа того.
PATCH /api/{login}/passwd
{
old_passwd: ""
new_passwd: "
"
}
Где body = ChangeUserPasswdRequestDto

>UserServiceImpl.changePassword(id, old, new)


И вот ты по сути предлагаешь этот дто развернуть в сигнатуру. Проблема такого подхода наверное только в том, что ну полей так-то дохуя может быть.
И вот я предлагаю UserService#changePassword(login, changeUserPasswdDto), который маппится через маппер как раз на уровне контроллера. Внутри сервиса мы из этого дто уже получаем User энтитю, но она никогда не вытекает в сигнатуру.
И вот например другой метод
GET /api/{login}

Который дергает сервис
UserService#getUser(login) : UserDto
А потом в контроллере маппится в UserResponseDto. Преимущество такого подхода, что в UserDto мы можем сохранить id, и его гораздо проще использовать в других сервисах. Плюс на весив на один такой метод @PostAuthorize, не надо будет в других вешать = используя данный метод сервиса в других мы уверены, что во первых юзер существует и юзер совпадает с principal. И поскольку у нас есть id, можно использовать его напрямую в методах репозитория. Repository#find(userId, ...)
475 3455006
>>54639

>>Дто в контроллере мапится на модель, а дальше передается в сервис.


Мапинги могут и в сервисе быть

>>городить какие-то "дто между сервисом и репозиторием".


Ты модель для этого как раз и используешь.
Не очень хорошо только когда дто от контролера до репозитория долетает, но и это не критично.

>>Посмотри выступления Борисова


Он сказал что спринг умер, ИИ всех заменит

>>Читай Анкл Бэба


Ты в себе вкатуна выдаешь, раз ссылаешься на продавца курсов с сомнительной репутацией

>>54784

>>Слой сервиса может использоваться как зависимость в других сервисах.


Упомянутый тобой клин обычно работает в связке с ддд, а там такой хуйни уже быть не должно.

>>54917

>>поменять там Имя, Почту, День рождения и т.д.


>>Ты прямо в контроллере мапишь UserDto на User и передаешь его в сервис UserServiceImpl.


А логику с валидацией, что например такое емеил не используется другим юзером, ты тоже в контролер засунешь? Ну или что пользователь с такими правами вообще имеет права менять свое имя?

>>54917

>>UserServiceImpl


>>Impl


Тебе спринг нахуя дали? Зачем ты это проперженное говно из 90-х тащишь? Сам же потом будешь ныть какая жава громоздкая и как много ненужных абстракций.
Оставь Impl кодогенераторам.
475 3455006
>>54639

>>Дто в контроллере мапится на модель, а дальше передается в сервис.


Мапинги могут и в сервисе быть

>>городить какие-то "дто между сервисом и репозиторием".


Ты модель для этого как раз и используешь.
Не очень хорошо только когда дто от контролера до репозитория долетает, но и это не критично.

>>Посмотри выступления Борисова


Он сказал что спринг умер, ИИ всех заменит

>>Читай Анкл Бэба


Ты в себе вкатуна выдаешь, раз ссылаешься на продавца курсов с сомнительной репутацией

>>54784

>>Слой сервиса может использоваться как зависимость в других сервисах.


Упомянутый тобой клин обычно работает в связке с ддд, а там такой хуйни уже быть не должно.

>>54917

>>поменять там Имя, Почту, День рождения и т.д.


>>Ты прямо в контроллере мапишь UserDto на User и передаешь его в сервис UserServiceImpl.


А логику с валидацией, что например такое емеил не используется другим юзером, ты тоже в контролер засунешь? Ну или что пользователь с такими правами вообще имеет права менять свое имя?

>>54917

>>UserServiceImpl


>>Impl


Тебе спринг нахуя дали? Зачем ты это проперженное говно из 90-х тащишь? Сам же потом будешь ныть какая жава громоздкая и как много ненужных абстракций.
Оставь Impl кодогенераторам.
476 3455052
>>53042
Вызываешь по Animal, идёт метод из Animal, очевидно же. На то статический метод и статический. Проблема в том что статический метод вызван по инстансу, что может путать.
477 3455083
>>54810
Я когда увольнялся вакансия провисела примерно день на внутреннем портале, потом ее убрали. За две недели новый чел не появился, мб решили что ну и нахуй надо, чела с другого проекта просто дернули на пару дней в неделю коды писать.
478 3455156
>>55006
>>54989
По факту так пишут, да. Другого подхода нет. Контроллер - Сервис - Репазитари. Ну и мапперы руками дрочат перекладывая поля
479 3455191
Как грамотно скипнуть собес, если дают задачу с литкод? Или, например, вы считаете что надо тратить время, чтобы научиться решать всякую такую хуйню? Хотел бы узнать мнения.
480 3455203
>>55191
1. Встаешь
2. Уходишь
481 3455214
>>55203
Не отключаясь от телемоста? У меня 36 м конура, далеко не уйти.
482 3455318
я тупой
483 3455325
>>55214
Залезть под стол
Вкатунидзе 484 3455393
Как дела товарищи как вкат
485 3455414
>>55191
Скажи прямо, что не хочешь такое решать.
486 3455436
>>55393
мой довольно хуево, потому что я тупой
487 3455509
>>55191
Как грамотно скипнуть работу, если дают задачу из трекера? Или вы считаете что надо тратить время, чтобы решать всякую такую хуйню? Хотел бы узнать мнения.
488 3455954
>>55393
по заветам треда переименовал CreateTaskDTO в RequestTaskDto
image.png63 Кб, 795x534
489 3456362
>>55954
А нейронка вообще request предлагает выкинуть. Прям как тута >>54391

>называют по схеме XxxRequestPayload и XxxResponsePayload, слово payload часто опускают: GetUserRequest -> GetUserResponse

490 3456520
>>54391
>>56362
благодарю, исправлю
а теперь поясните - дао, это то же самое дто, только для бд, всё так? а НАХУЯ?
491 3456669
>>56520
Data Access Object - это литерали то же самое, что и Repository. Абстракция над бд, чтобы в тестах было проще замокать.
import и имена классов и интерфейсов 492 3456676
Привет всем.
В python можно применять вот такую конструкцию:
import "бла-бла-бла название" as "более короткое название"
Вопрос: можно ли что-то подобное в java сделать?
Т.е. чтобы при импорте двух классов с одинаковым названием можно было сделать этим классам иные названия?
493 3456719
>>56676
нет, ко второму обращаешься с использованием пакета в имени. Чтобы не вводить в заблуждение
494 3456736
>>56676
Вот кстати какая причина, что скуфц алиасы не вводит? Перегрузка операторов даёт слишком много свободы. Именнованые параметры и дефолт значения не жаба вэй - билдеры наше все. Но блядь алиасы-то чем помешали.. Есть идеи?
495 3456818
>>56736
делаешь

import my.Poo as HashSet

и читающие этот код в недоумении почему хешсет имеет странные методы
496 3456835
>>56818
В теории, можно же алиасом делать не имя класса, а путь до него.
Т.е. если есть два класса
com.zalupa.Poo
com.xui.Poo
Сделать что-то типа
import com.xui as X
import com.zalupa.Poo

И будет точное различие между X.Poo и Poo. И HashSet.Poo наверное не вызовет такого wtf.
497 3456888
>>56818
Натянул же залупу на сову. Алиасы это просто еще один нейминг, не более опасный по части чтоб ввести в заблуждение чем имена обычных членов. Что мешает тебе сделать
String hashSet = "Ololo ty loh"
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее