24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Программирование - это не столько про анальное крудошлёпство, сколько про стиль мышления. Высокоуровневая абстракция, поиск сходных черт, оптимизация - всё это высшие интеллектуальные способности, что образуют такой прочный симбиоз с программированием на Java.
>>2563057 Удобный инструмент сборки dotnet. Пишешь dotnet run и всё собирается и запускается. В мавене это всегда какие-то магические километровые портянки. ASP.NET Core не скрывает всё под аннотациями, а ты явно прописываешь в коде все миддлвари. Во всех учебных материалах разбирают эти кишочки и ты сразу понимаешь как работает фреймворк. Шаблонизатор Razor позволяет писать прямо код шарпа рядом с html. Есть поддержка layout-ов и tag-хэлперов. Blazor позволяет писать фронт на сишарпе. Это как апплеты для джавы, но на новом техническом уровне (WebAssembly). EF Core не надо писать SQL-код в аннотациях на каждом методе.
>>2563077 > В мавене это всегда какие-то магические километровые портянки. Так пользуйся градлом. > Во всех учебных материалах разбирают эти кишочки и ты сразу понимаешь как работает фреймворк. То, что ты не умеешь гуглить, ещё ни о чём не говорит. > Шаблонизатор Razor позволяет писать прямо код шарпа рядом с html. Есть поддержка layout-ов и tag-хэлперов. В жабе были когда-то JSP и JSTL, может ещё есть пенсионеры, которые до сих пор это говно мамонта используют. > Blazor позволяет писать фронт на сишарпе. Опять же дедовские GWT, Vaadin и Wicket, хотя не WASM. Практика показала, что фронт на реакте писать тупо удобнее. > EF Core не надо писать SQL-код в аннотациях на каждом методе. И в джаве не надо, десятки ORM на любой вкус.
>>2563090 Шаблонизаторы в джаве требуют писать целиком html-страничку и не умеют в разбиение.
Хибер требует писать SQL-код над каждым методом. В чём его преимущество перед JDBC, я так и не понял. Создаёт только лишнюю работу и повышает сложность.
>>2563077 Это ты такой тупой вкатун, что половина аргументов относятся к фронту на бекенд языке, или шарписты реально пользуются шаблонизаторами? Хотя судя по упоминанию говна без задач в виде васм - дело именно в тебе.
>>2563096 > Шаблонизаторы в джаве требуют писать целиком html-страничку и не умеют в разбиение. Наглая ложь. В фримаркере есть и макросы, и инклуды. > Хибер требует писать SQL-код над каждым методом. Я только в Spring Data видел, чтобы надо было писать SQL прямо в аннотациях. В нормальном хибернейте есть EntityManager и прочее. Хотя ORM вообще спорное явление.
>>2563104 И как запихать в _layout.html, где только основной макет страницы, отдельные элементы типа меню, содержательной части, футеров всяких? Любой документ таймлифа - это цельная html-страница.
Есть две сущности: Кондитер(id, name) и Десерт(id, name). Они связаны между собой связью Многие ко многим. Необходимо получить всех кондитеров, которые готовили определенный десерт (по имени). Подскажите пожалуйста как правильно написать запрос с помощью Spring JPA, не используя @Query
>>2563113 А таймлиф бесплатная идея поддерживает? И вкатунов во что? На проде шаблонизаторы юзают в основном для вёрстки емейлов, в вебе их не применяют никогда.
>>2563074 Я к тому, что если в тред врывается чел с личным фаворитом (которого он знает и любит), вся его критика в сторону конкурентов этого фаворита скорее всего будет лютым пиздежом по причине незнания. Вон в треде уже было пиздабольство и про километровые портянки мавена, и про то что шаблонизаторы джавы требуют целиком страничку писать, и про хибер, который SQL код над методами заставляет писать (какими методами нахуй, позорный кусок дебила блять какой то).
>>2563268 Ни разу не видел на работе линукс. У нас все пека разрабов на винде, тестовые и промышленные сервера на Windows Server. Клиентская приложуха работают у пользователей на винде. Оракл тоже живёт на винде.
Решена задача для Leetcode, переписываю с intellij idea в литкод, нажимаю "submit" и вылетает ошибка "Time Limit Exceeded". Слишком медленно выполняется ?! У меня моментально выполняется в intellij idea. Что за шутка?
>>2563309 Что тебя удивляет? Линупс очень часто используют для серверов всех мастей. Докер образы - на линупсе, сам докер хостят на линупсе. Хостинг сервисов на винде - скорее экзотика, линукс - мейнстрим.
Да и если брать другие системы: винда без WSL всегда была днищем ебаным, а в макоси - тот же баш считай.
>>2563324 то что Hr-куры могут даже на позиции aQA писать это требование, когда в работе ты с этим столкнёшься примерно никогда, если работаешь в финтехе
>>2563309 >>требование командной строки линукс? Ну я гит баш использую в терминале идеи, а сам линух нахуй не нужон. В проде как обычно какая то обрезанная хуйня уровня alpine.
>>2563117 Особенность таймлифа, что он является расширением для html, поэтому идея корректно всё подсвечивает. У остальных шаблонизаторов иной синтаксис, поэтому подсветки нет.
>>2563125 Для шарпа есть бесплатная и полнофункциональная Visual Studio 2022. Можно даже для коммерческой разработки использовать при малых бюджетах. Мало того шарп можно использовать даже в VS Code, потому что инструменты сборки позволяют всё легко компилировать и запускать. Я пробовал то же самое делать на джаве и столкнулся, что это максимально неудобно, а war-файлы вообще запустить не смог.
>>2563077 Ещё забыл написать, что в дотнете можно создавать проекты из коробки, а в джаве надо с левого сайта качать архив с проектом. Раньше конечно был плагин для идеи, но жадные жидбрейнсы его перевели только для платной идеи, что бессмысленно, потому что в платной и так есть такой функционал. Вот часто хейтят микрософт, а на деле жидбрейнс и оракл гораздо жаднее.
>>2563500 > Ещё забыл написать, что в дотнете можно создавать проекты из коробки, а в джаве надо с левого сайта качать архив с проектом. Архетипы мавена.
>>2563568 Есть, конечно. Проблема исключительно с таймлифом. А точнее с тем, что нет нормальной инфы. В книгах эту тему опускают, а в мурзилках одни хеллоуворлды, где сложные темы не рассматриваются.
>>2563585 Он целиком заменяет поле, а мне надо переменную из модели + свой текст. К примеру, не просто "500", а "500 руб." Не просто "1", а "/buy?id=1"
>>2563500 >>в джаве надо с левого сайта качать архив с проектом. Че за сайт? Первый раз слышу, всегда просто через New Project создавал. >>его перевели только для платной идеи, что бессмысленно, потому что в платной и так есть такой функционал. Так а зачем пользоваться триальной идеей вместо ультимейта? Он стоит копейки. >>Вот часто хейтят микрософт, а на деле жидбрейнс и оракл гораздо жаднее. Жидбрейн не пытается мне в купленной версии выпячивать при каждом входе свой магазин, не делает принудительные ломающие обновления и тп. Да и нет разделения на платная для бичей, платная побогаче, платная полноценная. В единоразово купленном ультимейте есть тупо все - все инструменты для всех языков. Ну и стоит он намного дешевле винды.
Про оракл хз - не знаю зачем они существуют со своим платным постгресом
>>2563608 >Он стоит копейки. Даже копейку жалко отдавать ебаным жидам из жидбрейнса, да и для многих это не копейка.
Очевидно правильным решением будет воровать триалками или торрентами для тех, кому лень каждый месяц тратить 5 минут на реактивацию, и кому не нужна самая последняя версия.
>>2563608 Вижла имеет одинаковый функционал для бичей и для богачей. Богачи платят лишь за то, что извлекают большой доход через вижлу. Если даже откроешь ИП, то можешь продолжать ей пользоваться пока не разбогатеешь. А вот идея для бичей - это обрезка, недоIDE. Там даже спецом вырезаны подсказки из xml для Спринга, хотя xml как бы входит в бесплатную версию. А платная стоит дофига для вкатуна.
>>2563614 Комьюнити эдишн это не триалка, это бесплатная версия. Триалка это использование ультимативной версии в течении триального 30-дневного периода, который можно обновлять бесконечно на новые почты даже без какой-то манипуляции с файлами.
>>2563500 Я сегодня столкнулся с майкрософтовской щедростью, когда оказалось, что проект 2020 года собирается на net core 3.0.3, который уже не поддерживается. VS 2022 предлагает пофиксить это, но скачать она может только рантайм версии 3.1. При этом 3.1 рантайм все равно не подходит и выдает ту же ошибку 500.31, а актуальный рантайм 7.0.1 - тем более.
Чтобы запустить 2-летний проект надо устроить жопоеблю, а что там с более старыми проектами, даже думать не хочется.
>>2563733 Ну дак проблема не с вижлой, а с дотнетом. На джаве как бы тоже надо ставить определенную версию джавы, чтобы заработал твой проект. Тот же Спринг и его библиотеки вообще не запустятся, если джава не та. Хуже того, на сайте мавена даже не пишут версии джавы и надо самому догадаться под какую они.
>>2563077 Ох, я недавно на убунте пытался запустить шарпный код - вот это я охуел. То моно не то, то хуено. В итоге проебал кучу времени на эту вашу охуительную инфраструктуру. Как же хорошо, что я джавист и на джаве все заводится с пол пинка.
>>2563538 >Почему для модели не используют конструктор? Не очень понял твой вопрос, но в основном потому-что нужен для сериализации конструктор без параметров, который как раз генерится жабой, когда ты явно не объявляешь конструктор
>>2564027 Ну, а как инициализировать объект модели? Через сеттеры? Model model = new Model(); model.setName("Vasya"); model.setAge(44); model.setJob("Java Software Engineer");
>>2564039 Да хоть new Model("Alena", 25, "Senior C++ Developer"). Важно только то, чтобы у класса Model был конструктор без аргументов, чтобы при парсинге запроса магия могла создать объект через рефлексию и дальше вызывать сеттеры.
>>2563562 У таймлифа доки хорошие, там прям дохуище Но лучше конечно слать шаблонизаторы нахуй Сейчас фронтенд фреймворки с сср изи становятся шаблонизаторами по необходимости
>>2564315 В изучении поисковой строки гугла нужна не только голая теория, но и практика. Можно набить руку на задачах из курсов по гуглению, но надо бы и своих пет-запросов поделать.
>>2563734 Нет такого метода. Просит время. А это busy wait. Мне надо чтобы процессор не нагружался лишней хуйнёй - вызвал метод Thread.sleep(threadId) и потом Thread.пробудиться(threadId).
>>2564700 > Как подгрузить две коллекции связанных сущностей одним запросом? Через JOIN. > Графы так не умеют и кидают мультифечбаг эксепшн или около того Петушня какая-то хибернейтовская.
>>2564743 Тут уже зависит от того что ты хочешь сделать, посоветовать что-то одно нельзя.
Если ты хочешь чтобы поток уснул до тычка извне - то классика это вэйт-нотифай или, лучше, один из барьеров
Если ты хочешь что-то передавать кроме тычка, или тебе не обязательно чтобы оно работало на пике производительности, можно использовать структуру данных
Если я правильно помню - сам по себе тред слип это нихера не busy wait. Busy wait это когда ты этот тредслип в цикле гоняешь (тратясь на накладные расходы связанные с пробуждением треда каждый раз по истечению слипа). А слип просто уводит тред в timed_waiting, ни больше ни меньше. Прочие joinы, waitы и parkи делают примерно то же самое - уводят тред в waiting.
>Мне надо чтобы процессор не нагружался лишней хуйнёй - вызвал метод Thread.sleep(threadId) и потом Thread.пробудиться(threadId).
>>2565117 Потому что пошел нахуй, вот почему. Ответ устраивает?
Джава дизайнилась не для того, чтобы ебаться с лоулевел примитивами. Ниша ебли с лоулевел примитивами успешно занята плюсами - нравится: велком с сишникам. А в джаве подобные вопросы решаются более высокоуровневыми абстракциями. К примеру, тот же вышеупомянутый park напрямую никем никогда не используется и к использованию нерекомендуем, равно как и Object.wait/notify - вместо этого люди давно юзают тред пулы, которые сами паркуют треды когда таски кончаются.
Кстати еще вопрос как они реализованны - может статься что все вышеперечисленные парки и вейты - native'ы, которые слиппят тред под капотом, но чекнуть щас нет возможности.
>>2565142 Ну ты сказанул конечно. Я б мог тебе ответить, что есть zero-cost абстракции, есть build-time оптимизации, инлайнинг, JIT, но ты щас так хуево обобщил все под одну гребенку, что я не вижу смысла даже обсуждать это с тобой.
>>2565045 Минут 10 после того, как понял задание сидел решал. Медиумы так и не смог сам решить ни разу. Начинал решать 3 штуки. Последний раз примерно понял алгоритм, но запутался во временных переменных, сидел час страдал. Потом залез в решения и там буквально в одном месте было перепутано местами использование временных переменных. Чуть монитор не разбил.
Пишу круды на спринге уже год.
Стоит вообще на литкоды тратить время? Если не думать о яндексе, это поможет как то мозги в порядок привести? Таски поувереннее решать? Или для саморазвития лучше дальше читать книжки и статьи по базам, фреймворкам, паттернам и микросервисам?
>>2565167 > Стоит вообще на литкоды тратить время? Так ты же время анонов тратишь, а не своё. Значит, и эффективность литкодов для тебя нулевая, а для тех, кто тебе разжёвывает условия задач, она положительная.
>>2565187 Я не тот анон, который вбросил скрин условия. Я его прочёл и решил порешать от делать нечего. Вот думаю может вкатиться на пару месяцев или нахуй надо.
Случайно узнал, что спрашивают на собесах про всякие кэши хибернейта. Как вообще такие темы изучать? Ни в одном источники не видел, чтобы обсуждались кишочки хибера. Мало того нужен хороший роадмап, чтобы ничего не пропустить, но на деле все роадмапы бестолковые, просто перечисляют технологии, но не предоставляют источники информации. В итоге изучать джаву просто не реально. Обычно все быстро изучают джава кор, а потом не знают куда податься дальше, потому что плана развития нет и инфы нет.
>>2565389 У меня достоверная инфа, что спрашивают. Конкретно спросили: сколько кэшей в хибере и чем они отличаются?
>>2565392 Что за талмуд? Не видел такого. Недавно вышла книжка Спринг по-быстрому и там автор пробежался по всем темам от конфигурирования бинов до работы с базами. Но всё это очень поверхностно. Ни про какие кэши он естественно не написал.
>>2565405 По постгре надо несколько талмудов. Сперва вводный по апишкам, потом еще по кишкам. Ну и талмуды по - кафке - эластику - докеру - куберу - гоф, грасп, тырпрайз, микросервисным паттернам - чистым кодам, теории тестирования, теории ооп, рефакторингу, тдд, ддд, едд. - линуксу - ресту и хттп - регуляркам
>>2565398 Это только кажется, что на всё есть талмуд, а когда реально начинаешь искать то оказывается, что ничего нет. Я когда начинал учить джаву, то заранее накачал книжек по всем темам и мне казалось, что у меня есть четкий роадмап по ним. В итоге прочитал и оказалось, что книжки эти пустые. По ним невозможно даже написать готовое веб-приложение, потому что они обходят все сложные темы. Вот помню, что в 2005 взял книжку по РНР и за неделю научился писать полноценные сайты. Сейчас потратил уже год на джаву ничего даже близкого к тем сайтам на РНР написать не смог, потому что просто не знаю функционал этих тупых фреймворков. Мало того они ещё и неудобные. Одни шаблонизаторы чего стоят. Я вообще не понимаю, как за 20 лет не смогли сделать нормальный шаблонизатор. Хоть свой пиши!
>>2565410 >по книжкам на жавакоре невозможно даже написать готовое веб-приложение >2005 взял книжку по РНР и за неделю научился писать полноценные сайты ну слишком уже толсто, переделывай скетч
Вот я кстати понимаю иногда залетных шарпоблядей. У них реально все зависимости, сборка, через одну и ту же команду делается. В джава мире такое я видел только у кваркуса, который через мавен плагин добавляет зависимости в пом.хмл. Но сука, почему они не пишут о том, что на сишарп тупо нет библиотек? Надо было мне решить задачу, нашел две либы на сишарпе, одна из которых не работает, обе поддерживаются одиночками и имеют 0-1 звезд и форков на гитхабе. Посмотрел что есть на питоне - тупо есть ВСЕ, и по несколько сотен звезд и форков для каждой нужной мне либы. Естественно послал сишарп нахуй.
Помню, как фиксил один назойливый баг месяца три назад. Недавно открыл тот проект, и спустя некоторое время начал подозревать, что что-то не так, пофиксив один баг, смутно вспоминая что-то похожее в прошлом. Сегодня встретился с тем назойливым багом трёхмесячной давности. Пофиксил его тем же способом, что и тогда.
Спрашивается - какого хуя у меня проект десинхронизировался с временным континуумом? И как понять, сколько ещё моего кода кануло в небытие?
>>2565772 Юмор в том, что проектом занимаюсь я один.
Я тогда использовал Github Desktop для заливания на гитхаб и при предложении идеи добавить файлы в git всегда соглашался. Может ли это быть следствием чего-то из этого?
>>2565780 У меня бывает после коммита остаются незакоммиченные файлы и приходится второй раз коммитить. И после этого ещё кто-то говорит, что в идее лучше все реализована работа с гитом.
>>2565787 Да пиздец какой-то. Иногда тупая идея вообще говорит, что коммитить нечего, а git status в консоли показывает несколько файлов. Бывает, что перед коммитом она несколько минут думает, что надо коммитить, и может в итоге показать не всё. А на винде после перезапуска ещё иногда может сказать "Empty git --version output". Лезешь в настройки, меняешь bin/git.exe на cmd/git.exe, чтобы через пару недель опять получить это же сообщение и менять обратно. Вообще никакого доверия к гиту в идее, всегда перепроверяю в консоли за ней. Впору уже ставить TortoiseGit, как у нас некоторые деды делают. С мавеном похожая ебля, ломают всё в каждой версии.
Джавуны, привет. Давно к вам не заглядывал. У вас за последние несколько лет что-нибудь на бэке изменилось или всё ничего кроме спринга не найти? Котлин хоть начали использовать?
>>2566045 Если нет способа сделать низкоуровневую остановку треда без busy wait, то каким хуем высокоуровневая абстракция (которая по определнию основана на чём-то низкоуровневом) может содержать остановку треда без busy wait?
В реале JPA вообще часто используется в настоящих проектах? А то тред почитываю, и время от времени проскакивает что JPA говно и нинужно. Так как на практике дело обстоит, в конторах пользуются этой штукой или скорее нет?
>>2566389 Ну судя по описанию вакансий на хх и по собесам, где я ходил - spring data jpa чаще есть, чем нет. Во нескольких местах даже гоняли по хиберу. Но я попал в место, где его скорее нету. Точнее он есть в паре старых сервисов, куда почти не пишутся новые фичи. А там где пишутся новые запросы к бд - там jooq.
>>2566450 Мне кажется жук не особо популярен, на хх он встречается в 20 вакасиях из 1.3к спринговых вакансий. У spring+hibernate почти 500 вакансий, а еще его отдельно не указывают, пишут spring data jpa. Я считаю, что хибер почти мастхев для вкатуна.
Дорогой /pr/, а точнее джависты, помогите мне понять логику.
Вот у меня есть несколько классов: 1. Test (Main) 2. Snake - элемент змейки, содержит координаты элемента и метод для отрисовки элемента 3. SnakeFactory - объект который хранит в себе массив змейки и служит и метод для создания элементов змейки.
ВОПРОС: Так как текстура змейки одинакова для всех элементов, как вернее её хранить? 1. В классе Snake 2. В классе SnakeFactory или основном классе (то есть как на пиках)
Мне нужно что бы он для каждого элемента змейки не создавал переменную и не подгружал одну и ту же текстуру, а просто подставлял уже существующую текстуру. Пиздос, не знаю как короче и понятно описать, надеюсь меня поняли, я даун.
>>2566607 Очевидно хранить где нибудь один объект текстуры и потом по мере создания новых хвостов у неё инжектить в этот хвост. Использовать заинженченную.
>>2566509 Ну методы с запросом по 40 строчек. 3-4 джойна, выбор по 20 полей из 50 по одному, с алиасами. Ничего сложного, но глаз замыливается читать, особенно если не ты писал. Писать руками даже самый простой круд после спринг даты уныловато. Мапить иногда больно, особенно если там кастомные типы. Приходится сперва делать проекцию специально под то, что вернет жук, а потом мапить его еще раз в выходное дто. А так норм - конвертер/биндинг пишешь на хоть на юдт, хоть на вьюху, массив или енум. На jsonb встроенный конвертер недавно подвезли. Разве что массив он в жавамассив переводит и в лист конвертер приходится писать, могли бы и встроить галку в генератор. Вообще жук намного лучше постгрес поддерживает, чем хибер. Мы использовали сте, оконные функции, констрейнты, кастомные типы. На другом проекте люди писали свой диалект. Очень странно почему он за столько времени откусил у jpa и jdbc-template такой маленький кусок.
>>2566640 Создаёшь спрайт в тесте. Потом в тесте же создаёшь змею, в конструктор змеи засовываешь этот спрайт. Если надо создать больше змей - тот же самый спрайт суёшь.
>>2566851 Работодателям похуй на пет-проекты. Можешь для тренировки написать несколько мелких проектов типа соцсети или интернет-магазина, но никаких гитхабов в резюме добавлять не нужно.
>>2566851 Двачую челика выше. Сойдет любой круд, чтобы тебе было интересно. Но тут есть подводный камень, что без фронта вряд ли будет интересно, а фронт учить это достаточно много дополнительного времени. Тебе по работе надо будет писать рест-апишки с дтошками не совсем соответствующим моделям, обращению по рест-клиету к другой апишке, с запросом в базу с простыми крудами, с запросами чуть посложнее: с джоинами, пагинацией и транзакциями. Нужно будет писать под это дело миграции, тесты, сваггер прикрутить. С докером возможно придется работать. Остальное опционально.
>>2566874 Да че там имитировать? Файлы хранишь в блобах, в других колонках расширение и имя с путем(уникальный констрейнт). Такое себе. Ходячий антипаттерн. А пет ты нагрузить не сможешь, чтобы понять, что это антипаттерн.
Понял, спасибо, а проекции руками пишете или компайл / рантайм мапперы используете?
В целом плюсы звучат весомее для меня, но тут субъективщина. Быть ближе к БД и их новым подходам лучше, чем обмазываться JPA, который пытается быть общим знаменателем для всего и выходит не всегда красиво.
Вот вобщем сделал я игру, хочу её упаковать в обычный exe и поставлять вместе с jre. Для этого есть разные утилиты, я использовал packr. Так вот проблема в том что он мне делает jre на 300 мб. Мне такое не подходит. Мне нужно меньше, намного, максимум мегабайт 40 - 50.
Так можно сделать? Какие утилиты использовать для этого?
>>2566899 > exe Да, тяжело бывает осознать, что учишь-учишь язык полгода, пишешь на нём проекты, и тут внезапно выясняешь, что всё это время учил не тот язык и потратил кучу времени впустую, т.к. язык оказался непригодным для текущих задач.
>>2566883 >рантайм мапперы используете да, модел маппер. Конечно бьет по перфомансу, но тесты показали, что не критично. И по сравнению к обращению к базе на другой машине в том же датацентре это смешно. Ну если нужны частые переезды на другую базу или вообще несколько типов баз для одних и тех же запросов, то наверно лучше жпа.
Почему идея не хочет нормально работать с проектом? Открыл старый проект, а идея вместо нормальных иконов классов, интерфейсов, экспешненов... отображает тупо иконку файлика с буквой J. И в самых классах подсветка вся бело-оранжевая, вместо тех 5-6 цветов, которые должны быть.
В общем случае такое бывает, если идея не смогла понять, по какому пути у тебя располагаются сорцы (расширения .java для нее недостаточно). В случае с мавен- и грэдл-проектами такого не бывает практически никогда. Такое случается в случае, когда у тебя какое нить древнее архилегаси на анте (или, не дай боже, на мейкфайлах - да-да, и такое бывает, лол), либо когда у тебя покоррапченный чисто-идеевский проект (у которого потерялась папка .idea со всеми настройками, например).
Фиксится, если я правильно помню, в project structure - там есть менющка где можно явно прописать пути к сорцам. Но поможет ли одно лишь это тебе - хз.
>>2566982 Спасибо, анон, помогло. Правда, оказалось что проект какого-то хуя покорёженный (половина импортов ведут вникуда) и идея не спроста отказывалась с ним работать с ходу.
>>2567001 Ну а покореженные импорты - это признак того, что идея теперь не знает, где зависимости твоего проекта. Фиксится примерно там же - можно указать явно где их искать. Если у тебя антовый проект, скорее всего депенденси выкачиваются куда то в проект (или уже лежат под гитом).
При инициализации Spring Boot проекта в проекте появляется папка .mvn и файлы mvnw и mvnw.cmd. Их необходимо добавлять в .gitignore, чтобы они не попали в репозиторий проекта? Я смотрю просто большинство проектов на том же github и не вижу этих файлов в репозитории. Но в тоже время ведь если этих файлов нет, то и встроенного локального сервера tomcat же тогда не будет в приложении и запуститься нет возможности, так? Хочу больше подробностей в этом. А то я не совсем не понимаю и в этих файлах аж какая-нибудь конфиденциальная информация о тебе может хранится
>>2567024 Эта штука, которую ты описал, занывается maven wrapper (https://maven.apache.org/wrapper/). Его используют для того, чтобы зафиксировать версию мавена на проекте, и сделать сборку возможной на хостах, где мавен не установлен.
>Их необходимо добавлять в .gitignore, чтобы они не попали в репозиторий проекта?
Нет, обычно их коммитят. Это упрощает сборку девелоперам и конфигурирование CI-агентов.
>Но в тоже время ведь если этих файлов нет, то и встроенного локального сервера tomcat же тогда не будет в приложении и запуститься нет возможности, так?
Нет, мавен враппер не имеет никакого отношения ко всяким спрингам и томкатам.
>>2567024 Это просто огрызки мавена для шизиков, которые не хотят устанавливать мавен отдельно и держат его в репозитории, лол. Томкат тут не при чём, спринг бут тут не при чём.
>>2567311 Если любишь приключения, можешь попробовать сбилдить native image, используя GraalVM.
Хуй знат получится ли у тебя упаковать в native image lwjgl: в сети вроде есть пруфы типа https://github.com/chirontt/lwjgl3-helloworld-native, но к примеру у меня JMonkeyEngine (юзающий lwjgl под капотом) так и не получилось упаковать.
А вообще, кмк не зазорно поставлять джаву вместе с игрой. Например, разрабы Project Zomboid так и делают - через стим скачивается и игра, и azul zulu джава для ее запуска.
Нужна небольшая библиотека для хттп-сервера, с которой может быстро разобраться человек, умеющий только немного в джаба кор. Т. е. хотелось бы обойтись без монстров типа спринга, без заморочек с сервлетами и ЖСП. Что-то вроде (простите) экспресса для ноде.жс: простая библиотечка, которая предоставляет удобный интерфейс для роутинга, обработки запроса и составления ответа и больше, в общем-то, ничего. И чтобы максимально просто собирался и запускался проект, желательно без всяких хуявенов, делаешь javac, потом делаешь java -jar helloworld.jar и поехали. Могу хуйню написать, сам не джавист.
Пока нашёл: - com.sun.net.HttpServer в J2EE Можно ли обойтись стандартной библиотекой и не плакать? - NanoHTTPD
Ожидаю, что на джабе так просто не выйдет, но может что-то приближается?
О, нашёл Spark, выглядит красиво. Кто-нибудь пользовался, какие подводные?
>>2567880 Уважаемый идинайхун, О вкатунах тут речи не идет, своей головой, заточенной на приложение привычных абстракций невпопад к любой задаче, додумывать не надо.
>И чтобы максимально просто собирался и запускался проект, желательно без всяких хуявенов, делаешь javac, потом делаешь java -jar helloworld.jar и поехали
То есть Javalin, spark и прочие хипстерские поделки разной степени развитости.
Если с заморочками, то HttpServer - впринципе выход, но не самый лучший. Так как содержимое пакета com.sun - это часть внутреннего API, и там все может быть выпилено в будущих версиях.
>>2567927 Через java -jar ты заебешься качать архивы с артефактами с того же мавен централа и прописывать зависимости руками во флагах. Найдешь себе проблем с резолвингом зависмостей и прибежишь суда. А тут никто никогда в здравом уме не пытался ебаться с вебом без сборщика. Есть встроенный com.sun.net.httpserver.HttpServer, но он убогий и им тоже никто не пользуется. Вот посмотри. https://syntaxcorrect.com/Java/5_Ultra_Lightweight_Http_Server_Implementations_in_Java_for_Blazing_Fast_Microservices_APIs_or_Even_Websites Есть достаточно модные micronaut и quarkus. Но большинство писало только на достаточно монструозных JAX-RS(Apache CXF или JBoss Resteasy) или на еще более монструозном spring-mvc. Потому что легковесность в жабе нужна только в очень нишевых нишах.
>>2568062 Серьезно? Я скинул егоркин фреймворк, даже не дочитав до туда. Вот же лол. Это он сам написал туториал или у него в англосфере есть почитатели?
А реально найти какую-нибудь неоплачиваемую стажировку на Java месяца на 3? Устал просто тыкать на вакансии, которые сейчас просматривают 100500 человек. А так хоть коммерческого опыта наберусь.
>>2568107 Нет. Джун и тем более стажёр это убыток, особенно первые три месяца. Мидлы или сеньки намного быстрее сделают таску, чем будут стажеру объяснять, что от него требуется и потом проверять и поправлять. Джун это вложения минимум года на два.
>>2568107 Ты хоть пробовал на эти вакансии с 100500 просмотрами отправлять отклики? Коммерческий опыт на то и коммерческий, что получаешь за труд зарплату. На кандидата, работавшего на мутных проектах бесплатно, будут смотреть как минимум с подозрением и предпочтут с ним не связываться, если у другого кандидата есть коммерческий опыт, даже если его меньше. Да и если просишь копейки, тоже будут смотреть с подозрением. Кабан не дурак и заподозрит неладное.
Дописываю сейчас бэк и нужен к нему относительно простенький фронт по сути из html и css (аут и авт + условно открывать странички по данным из бд и отправлять переодически в бд на какой позиции странички пользователь кликнул ту или иную кнопочку). Так вот вопрос: для подобного хватит таймлифа (просто во фронте не шарю ничего кроме вышеупомянутых html и css)?
>>2568181 Тогда учи основы JS. Да, он говнище, но варианты со всякими Vaadin намного хуже. На голом шаблонизаторе динамику не сделать, только полностью перезагружать страницу. И да, с шаблонизаторами и без JS можешь забыть про REST-контроллеры, если они у тебя есть. Надо будет писать обычные MVC-контроллеры с аннотацией @Controller.
>>2568189 >И да, с шаблонизаторами и без JS можешь забыть про REST-контроллеры, если они у тебя есть. Надо будет писать обычные MVC-контроллеры с аннотацией @Controller. Это я понимаю.
Ну а как в итоге-то получиться? Я же так понимаю надо html + css + js чем-то обернуть для того чтобы принимать ответы от бэка. Или только js'a хватит?
>>2568199 Ничем оборачивать не нужно, просто пишешь в HTML теги <script> с JS, вешаешь обработчики кликов на кнопки, в обработчиках вызываешь fetch(url, {параметры_запроса}).then(коллбек_с_обработкой ответа). Кладёшь HTML-файлы в каталог со статикой, спринг его раздаст. Можешь и с шаблонизаторами объединить, т.е. положить HTML-файлы в каталог template, но так обычно не делают. Либо конкретно погружаешься в веб-фреймворки со всякими реактами, нодами, бабелями, вебпаками, но тогда в сборку проекта добавится стадия запуска вебпака, чтобы собрать фронт в бандлы, их раздавать как статику. Хотя на практике это обычно отдельный проект, который раздают не через томкат (или другой контейнер сервлетов), а через отдельно работающий nginx.
В прекрасном мире побеждённого глобализма идея и ключевые слова джавовского кода будут локализованы на каждый из 200 человеческих языков, включая русский.
пакет ру.пример;
использовать ломбок.КонструкторСоВсемиАргументами;
@КонструкторСоВсемиАргументами общедоступный класс Пример {
__местное конечное число счётчик;
__общедоступный метод увеличитьСчётчик() { ____счётчик++; __}
>>2568304 Глобализм - это когда все на одном языке говорят, и не надо делать 6000 переводов. А ещё в русской раскладке нет @ и фигурных скобочек, заебёшься переключать раскладку.
>>2568307 Во первых не 6000, а 10-15, и прочитать смогут 99,9% населения земли.
Во вторых перевести две строки на 10 языков легче, чем научить человека говорить на другом языке. Языковой глобализм это сугубо политическое решение для увеличения влияния самих глобалистов. От этого не проигрывают только жители Запада, мы же, в России, и другие 7 миллиардов людей, проигрываем.
>>2568304 >>будут локализованы Для начала клавиатуры бы локализовать, я ебал переключать раскладку чтоб $ {} или <> написать. Да и англюсик лаконичнее.
>>2568352 >уррррь я скозал ты будишь гаварить на том языке, на каторам я хочу Вот поэтому глобализм, вместе со всеми агрессивными, насаждающим свои идеалы его приспешниками, лицемерно прикрывающимися свободой и демократией, что является антонимом действий глобализма, будет уничтожен.
>>2568354 Ты думаешь клавиатуры создавались не под одноязычный западопоклоннический глобалистический антикультуральный мир? Будет локализация - будут и нормальные клавиатуры.
>>2568362 А вот и гринтекст пошёл в ход. Глобализм должен быть построен по образу самых преуспевающих наций. Через 200 лет, когда русский язык вымрет как динозавр, никто и не вспомнит про такую нелепость, как локализация.
>>2568394 Не всегда прекращается. Это зависит от того, какая сторона сильнее.
Ты сейчас явно заявляешь о том, что несогласные с тобой должны засунуть своё мнение в жопу. Это вызывает ещё большее недовольство и несогласие, усиливая протестную сторону.
>>2568421 С чего ты взял что в будущем будет английский, а не китайский? 150-200 лет назад мировым языком был французский, а до этого какая-нибудь латынь
Тухлый тред, впрочем как и язык. В шарпо-треде постоянный актив, что-то интересное и мотивирующее, впрочем как и сам язык - очень интересный, СТАБИЛЬНЫЙ, качественный и современный.
Пиздовали бы вы в /po/, вырожденцы ебаные. Или на худой конец на хабр, писать блоги и переводить с других языков матчасть во имя успеха русскоговорящего коммьюнити.
Пользы от таких как вы - ноль, болтовня одна пустая.
Сап джавовый. Помогите анончики, стоит такая задача, в xml структуре, перед тем как ответить, нужно отдельную часть конвертировать в base64. Пикрил1 это тело ответа до конвертирования, а пикрил2 это после, мне нужно отвечать именно закодированным телом. Умоляю ананасики, подскажите как можно ето сделоть
>>2568311 >мы же, в России, и другие 7 миллиардов людей, проигрываем. Ну почему, лично я выигрываю, потому что могу устроиться работать в любой стране, мой выбор широк. Если ты в такой ситуации умудрился проиграть, то ты слаб.
>>2568673 >>2568674 Ну, вроде когда нужно посылать аутефикацию то идёт просто String foo = login + " : " + password. А потом вызывать базу64. Попробуй все элементы также проплюсовать между собой
>>2568770 я попробовал такой вариант, короче у меня есть класс Message который преобразуется в xml, и в этом классе я переопределил метод toString как на пикриле1. Это рабочий вариант?
>>2568883 Ну смотри на пикрил1, и что я получаю ответом в постмане пикрил2. Ну а если я объекту response передам не строку а сам объект Message, такого не происходит и ответ четкий
Как сюда добавить данные, подскажите пожалуйста ? Вот так например - items = [["phone","blue","pixel"],["computer","silver","lenovo"],["phone","gold","iphone"]]
Я мимокрок, спарк да, хороший, юзал. Подводных не было, кроме того что на няшном котлене все ще более лаконично, но это дело такое, я вообще сейчас на жабушку смотреть не могу после котлена.
>>2568673 Не работай с soap руками. У вас что петровичи уже умерли - которые это писали? Там wsdl схема должна быть для сообщений и сгенерированные классы для парсинга/маппинга.
>>2569404 300 вакух на хаха.ру со spring kotlin к 1300 на spring java. Даже если котл это в 50% это пиздеж для привлечения внимания зумеров - 150 это уже немало. Ну может и кроме спринга, что-то есть в проде. Это я у онона выше хотел бы узнать.
>>2569409 мне нужно написать заглушку, есть какая-то йоба смежная система которая написана петровичами ещё при мамонтах, её нужно заглушить, вот как-то так анон
>>2568311 Это тупо неправда. На топ-15 языках, как на родном говорят 4.05 лярда человек, то есть только половина людей мира. И в этих топ 15 нет таких влиятельных языков, как французский и немецкий. А если тебя интересуют не родные языки, а языки международного общения, то ты просто хочешь заменить 1 лингва-франка 15.
>>2562960 (OP) Какой шаблонизатор взять для не HTML шаблонизации? Нужны условия и подстановка параметров. В идеале чтобы мог директории рекурсивно процессить, втч и названия папок менять
>>2569556 Фримаркер и StringTemplate4. Я ими текстовые отчёты генерю. > В идеале чтобы мог директории рекурсивно процессить, втч и названия папок менять Странная задача для шаблонизатора. Точно на уровне джавы не решить?
>>2569432 >заменить 1 лингва-франка 15. Ну хотя бы так. Я изначально говорил чисто про эффективность - перевод на 15 языков лучше, чем на 1, и на 250 (и то зависит от популярности и локальности продукта, ту же идею вполне можно было бы перевести на 250 языков).
А сейчас мы видим сугубо политическое решение уничтожать малые языки в угоду одному единственному английскому.
>>2569627 1 стандарт лучше 15. И похуй какое это решение. >>2569595 Непосредственно китайскими иероглифами япошки пользовались веков 7 назад. Сейчас у них свои. А у разных китайских диалектов иероглифы одни и те же, разное только произношение. К к тому же путунхуа потихоньку сжирает другие языки, как французский добил бретонский и аквитанский.
>>2568304 А как название языка локализовать? Я считаю, "Ява" это очень нелепый перевод, никто нахуй не знает что такое Ява, у всех будет ассоциация с Сектором Газа или хуёвым дристоязыком программирования. Я считаю, надо локализовать Java как БАЙТКОДНАЯ БРАТВА
>>2562960 (OP) Как правильно изучить хайбернейт, чтобы не валиться на собеседованиях? Почти в каждой вакансии требуют отличное знание хайбернейта. Ну и везде требуют превосходные знания спринг бута.
>>2570081 >Oak after an oak tree that stood outside Gosling's office. Later the project went by the name Green Да, я хоть и не стал джавистом (не считая модов на майнкратф), но эта хуйня запомнилась
>>2569883 Функциональный код и дебаг - несовместимы. Дебаг это чисто императивная штука - ты поэтапно выполняешь шаг за шагом императивную цепочку и на каждом элементе этой цепочки можешь воткнуть брейкпойнт и получить состояние стека на текущий момент времени.
Функциональный код - декларативен, а в декларативности нет ни стека с его состоянием, ни цепочки шагов. Как результат, некуда втыкать точки останова. В ФП даже переменных нет, чтоб смотреть и менять их значения. Дебаггинг там тупо ни к месту.
Поэтому функциональщину не дебажат. Предполагается что если функциональщина скомпилировалась, она работает. А если не работает, пиши тесты блэд. Благо что тесты на функциональщину писать проще, чем на императивщину.
>>2569850 Приведи пример что спрашивают на собеседованиях, мань. А то сейчас опять окажется, что вопрос был про кэши 1, 2 уровня хибера или про актуатор в спринг буте. А это пиздец! Кишочки-кишки!!!
>>2569850 Знай, что такое persistence context, что происходит при его открытии-закрытии, в каких состояниях пребывают entity и что означает каждое из них. Сумей обьяснить, что означает эксепшон LazyInitializationException, и как его обычно диагностируют и лечат. Сумей поддержать диалог за кэши (L1, L2, запросов). Ну и в целом знай какие там анноташки бывают и для чего.
>>2570309 Меня как-то завалили подробностями жизненного цикла сущностей в хибере и отличие каких-то похожих методов в ентити менеджере голого хибера. Думаю если бы ответил - спросили бы как мапятся методы хибера на методы спринг-даты.
Посоветуйте, стоит ли пытаться вкатиться в Java. 36 лвл, живу в ДС, есть более-менее профильная вышка.
Пишу в госконторе на С драйвера. ОС у нас своя, как и железо. Платят мне копейки (80К). Эта госконтора моя первая и единственная работа, я устроился на неё 14 лет назад после университета, попал в зону комфорта (хороший начальник, обычно ненапряженный график, бывают интересные задачи), так до сих пор и сижу.
Помимо днищенской ЗП проблема в том, что я не уверен, смогу ли я найти новую работу, если моя контора загнётся, т.к. пишу драйвера под специфическую ОС и железо, к тому же у меня поверхностные знания схемотехники, достаточные только для написания софта, но не для разработки железок. Самый простой вариант - научиться писать драйвера под Linux, изучить микроконтроллеры и т.д. Но проблема в том, что это мало кому нужно и платят за это обычно мало.
Как вариант, думаю попробовать вкатиться в Java. При вкате будет ли преимуществом опыт программирования, пусть и в другой области и опыт работы с Linux (наша ОС собирается под неё)? Не будет ли сильным минусом то, что просидел в одной госконторе 14 лет? Читал, что оптимально работать в одной фирме от 2 до 5 лет, меньше - летун, больше - пердун.
Или с такими данными лучше не дёргаться и остаться в своей системщине?
>>2570443 >При вкате будет ли преимуществом опыт программирования, пусть и в другой области и опыт работы с Linux (наша ОС собирается под неё)?
Это всегда - плюс. Если совсем прижмет, есть опция перекатиться в девопс.
>Не будет ли сильным минусом то, что просидел в одной госконторе 14 лет? Читал, что оптимально работать в одной фирме от 2 до 5 лет, меньше - летун, больше - пердун.
Есть такое. Рыночкопидоры и хипстота (комим являются 90% анальников) будут смотреть на тебя как на говно, но на то они и анальники. В конечном итоге наверное все зависит от того, как продашь себя и свой опыт. Было наверное всякое, за 14 лет? Есть что рассказать?
А не рассматривал просто для начала выкатиться из своей конторы в другую, но тоже на эмбеддед? Прошивки для железа писать?
>>2570466 >А не рассматривал просто для начала выкатиться из своей конторы в другую, но тоже на эмбеддед? Прошивки для железа писать?
Мне кажется, это я всегда успею. Железки программируют как раз обычно деды 40-70 лет, молодые выбирают более востребованные и денежные направления. А вот для перехода в другую область возраст поджимает.
>молодые выбирают более востребованные и денежные направления.
Ну тогда ты поздновато спохватился конечно.
Не то чтобы перекатиться уже не возможно, но если за эти 14 лет ты просто сидел на жопе, делал работу, не чекал тренды, ничего нового не учил, ты литералли обнуляешь свою экспертизу, и выходишь на рынок труда конкурировать на равных с вкатунами, получается.
>>2570443 >>стоит ли пытаться вкатиться С таким настроем только на кладбище.
>>Как вариант, думаю попробовать вкатиться в Java. К байтоебству ближе раст или гуланг - смотри лучше туда.
>>будет ли преимуществом опыт программирования >>на С драйвера Для джавы вряд ли. Джава это чаще всего спринг и веб, на байты похуй и опыт написания драйверов не пригодится. Тебе все кроме азов придется учить с нуля как любому вкатуну. >>в госконторе Да и понимания айти процессов у тебя тоже наверное особо нет. (агил, созвоны с аналитиками и прочая хуетень).
>>опыт работы с Linux У меня полкоманды линуха не знает, похуй на него - инструментарий кросплатформенный, байткод везде одинаковый, нюансы есть, но их мало. Но в резюме указать обязательно надо, да.
>>будет ли сильным минусом то, что просидел в одной госконторе 14 лет? Может и будет. А то ты вроде должен быть сенькой/техлидом а вкатываешь на ждуна. Я б раскидал по разным шарагам лет по 5-7.
>>с такими данными лучше не дёргаться Сам думай. Перекат (в джаву) это год учить стек, потом еще год-два после вката куча нервов и тряски, а не заменят ли тебя завтра на упругого зумера. Если у тебя ипотеки, дети и отсутствие безусловной поддержки - то будет оче трудно.
Как выключить это экранирование в спринге+jackson, неважно с бутом или без? В исходной строке там смайлик, но при проходе через @RestController он превращается в вот это.
>>2570758 Как в этом убедиться? Похожую мысль я видел где-то на SO. Из доступных мне просматривалок смайлики отображает только дефолтный Firefox во вкладке "JSON", где он раскрашивает и форматирует всё как таблицу, не отображая фигурные скобки и прочее. Все остальные показывают эти \uXXXX (edge, firefox, pwsh, curl).
Бугаенковское чтоли? Так оно как раз декларативное по самое не балуй, и дебажится так же хуево как и все остальное ФПшное. Егорыч сам это понимает, и посвятил целый пост чихвостингу дебаггинга, лол
>>2569883 Никак, лол. Я обычно для дебага переписываю участок с функциональщиной по-нормальному и дебажу уже его. После решения проблемы, если код мой, так и оставляю, а если не мой, возвращаю как было. Сам стараюсь писать код так, чтобы его было легко дебажить, у этого даже название есть - debug driven development. В теории функциональщину может и не нужно дежабить, раз она якобы работает сразу, но в реальности нихуя это не так, от ошибок в логике программы это не спасёт, хоть обмажься стримами, лямбдами, тестами и самой строгой типизацией на свете.
>>2570751 >>2570779 upd пикрил. Экранирование эмоджи происходит где-то на уровне jackson и MappingJackson2HttpMessageConverter, которые преобразуют объект в строку. Если отправлять сразу строку - смайлы не экранируются. Как выключить экранирование в маршаллизации? Это всё дефолтное поведение из коробки. Вот здесь что-то обсуждали, но я ничего не понял: https://github.com/FasterXML/jackson-core/issues/223
>>2570913 Автовайр приводит к тем же результатам, что и new. >>2570921 ESCAPE_NON_ASCII экранирует ещё и кириллицу. С false он не экранирует эмоджи и результат такой же, как если не трогать эту опцию вообще.
>>2571017 Похоже на хуйню на бейсике, которая у нас была в школе. Надо было для ИСПОЛНИТЕЛЯ написать алгоритм из команд ПРЫЖОК, ШАГ и ПОВОРОТ, чтобы он нарисовал какую-то картинку.
Как ещё можно попробовать вычислить, что за таинственный objectMapper спринг использует по умолчанию? Задача минимум: получить именно тот инстанс, который используется спрингом для маршаллизации, когда из контроллера мы возвращаем объект. Задача максимум: избежать экранирования эмоджи при возврате объекта, как у первого попугая.
По ней видно что ObjectMapper бин декларируется спрингом, если еще не задекларирован (ConditionalOnMissingBean), и если в класспафе есть класс Jackson2ObjectMapperBuilder (он есть в составе spring-web). Я б попробовал размотать его отсюда.
Ну или если не хочешь париться - скорее всего достаточно просто переопределить ObjectMapper у себя в конгфигурации явно. Тогда автоконфигурацию спринг делать не будет. Главное регрессий не словить.
Бля, гайс, у кого-нить есть ссылочки на стримы Юрия Ткача по разработке микросервисов, использованию кафки, ELK и тд? А то у него доступ открывается к ним только после доната ВСУ - а это пиздец.
Ракую сейчас на гиперскилле, делаю проектик очередной. И тут обнаруживаю, что WebSecurityConfigurerAdapter депрекатнут. Думаю, ладно, сейчас разберусь как сделать без него. Ага, хуй. В англоязычном гугле куча бесполезных ссылок, на ютубе всякие мимо хуи с видоами по 1-3 часа. Пиздец, как же это мутороно когда тебя не водят за ручку на каком-нибудь учебном курсе. Как это блять изучать все без всяких гиперскиллов.
Но мне все равно видится сомнительным что хаскелиты прям сидят и дебажат по классике брякпойнтами. Реально - на чистую функцию проще тест написать, чем сидеть и втыкать че там происходит.
Ты прав, в реальности это не так, потому что система типов и гарантии джавы - совершенно не чета и не паритет хаскелевым.
>от ошибок в логике программы это не спасёт
Дебаг в таких случаях тоже хуйня. Он может помочь тебе найти косяки в моменте, но не убережет от регрессий. Тесты все же единственное вменяемое решение против логических ошибок.
>>2571398 Есть разница в собесе не просто у разных компаний, но и тупо у разных собеседующих. Стандартизированные собесы вроде бы в рф только в яшке и в тиньке.
А в Spring MVC без бута (пикрил) эмоджи экранируется вообще всегда, хотя в буте они экранировались только его секретным скрытым дефолтным objectMapper'ом(>>2571077). Когда я использую new ObjectMapper() - Jackson вызывается напрямую и спринг вообще тут никаким боком, но почему-то получается разный результат в зависимости от того, приложение на буте или нет. Как это возможно? В mvn dependency:tree видно, что версии джексона одинаковые. Остаются два вопроса: Как выключить экранирование в дефолтном маппере бута, который срабатывает, когда из @RestController возвращаешь pojo? Как выключить экранирование эмоджи в спринг MVC без бута хоть где-нибудь?
Event Driven Development для ебановАноним12/01/23 Чтв 15:04:09#411№2571523
Вот приходит запрос на какую-нибудь покупку. Об успешной покупке нужно послать нотификацию кому нибудь. Вместо того чтобы во флоу покупки встраивать логику отправки нотификации, мы просто регистрируем в системе событие УспешнойПокупки, после чего в фоне какой-то сервис-нотификатор консьюмит это сообщение и понимает что нужно отправить нотификацию (и делает это).
Это вроде называется Event Driven Development. Где обычно принято регистрировать вот такие бизнесовые события? Есть ли какие-то бест-практис как такое реализовывать?
Я смотрю в сторону кафки но там сразу много подводных камней: Можно ли как-то параллелить обработку в рамках одно консьюмера? Как хендлить неудачно обработанные события (чтобы можно было их ретраить)
>Можно ли как-то параллелить обработку в рамках одно консьюмера?
Как хендлить обработку - дело целиком и полностью потребителя. Либо я не понял вопроса.
>Как хендлить неудачно обработанные события (чтобы можно было их ретраить)
По всякому, здесь многое зависит от того, какие требования предьявляются к системе и как устроена модель. Иногда ретраят (если хендлинг идемпотентен). Иногда ебошат компенсационные механизмы. Иногда забивают и просто логируют факт косяка.
Вообще очень многое зависит от модели и ее разбития на независимые куски, общающиеся эвентами (bounded контексты). Правильно разбить модель - ИМХО самое сложное и рисковое что есть в микросервисах - ошибешься, и будешь сильно страдать. Обычно их целенаправленно бьют так, чтобы избежать какого нить пиздеца вроде распределенных транзакций, и бьют с прицелом на eventual consistency (то есть, сервис А и сервис Б могут прийти к согласованности не сразу, но рано или поздно придут, и это нормально).
>>2571545 1. про параллельную обработку. В кафке как я понял параллельность прежде всего идет засчет партиций. А если ты хочешь сразу пачку событий и партиции взять и параллельно обрабатывать, получается тебе нужно ввыбирать: либо сразу закоммитить оффсет и рисковать проебать пачку если что-то недообработается и упадет (например с OOM). либо пачку коммитить только когда все отпроцесси и рисковать многократно обработать событие. И еще насчет партиций. Я так понял даже если конкретному консьюмеру назачилось 2 партиции он не сможет в двух потоках их параллельно процессить, а будет получить в одном потоке то из одной то из другой партиции. Может я что-то недопонимаю
Изменилось как минимум то, что теперь больше не надо наследовать этот WebSecurityConfigurerAdapter чтобы пролезть туда со своими штуками. Терпеть не мог этот фортель.
Есть UserDetailsManager, вернее JdbcUserDetailsManager. Через него кладутся в таблицу юзеры. Когда пробуешь userExists, он всегда правильно выдает тру или фолс, но если вызываешь loadUserByUsername, эта хуита выдает 401. И из-за этого авторизация нихуя не работает. В чем может быть причина?
>>2571809 Так было показано на примерах, вот и пытаюсь заставить все работать. А что странного то? UserDetailsManager готовое это расширение UserDetailsService, который вроде как обязателен для авторизации через хранящихся в БД юзеров.
Или можно как-то по другому авторизацию через БД делать?
>>2571774 Эта хуита просто по определению не может выдавать 401. 401 - это HTTP статус код, а loadUserByUsername - джавовый метод джавового класса. Никакого отношения к HTTP этот метод не имеет и иметь не может.
401й статус выдает тебе spring MVC, когда видит что метод на контроллере, вместо того чтобы вернуть тушку под респонз, наебнулся с эксешоном. Вот и ищи эксепшон. Найдешь - поймешь что не так.
>>2572012 При чём тут деанон? Можно подтвердить, что несколько постов в одном конкретном обсуждении написано одним и тем же аноном, в другом обсуждении анон может придумать другой код. Практически анонимная электронная подпись. С регистрацией для такой цели пришлось бы каждый день создавать по нескольку аккаунтов, т.к. постоянный юзернейм неизбежно влечёт за собой предвзятое отношение от тех, кто раньше видел это имя. Для вниманиеблядства трипкод не нужен, хватит аватарки с аниме.
>>2571925 Короче, смог разобраться в том, что если ты добавляешь User (тот, который от UserDetails) с пустой коллекцией GrantedAuthority, то это говно постоянно выбрасывает респонстстатусэксешон с кодом 401 когда ты пытаешься его извлечь. А если добавшь хоть какую-нибудь афорити с любым названием, то все работает как надо. Вообще хуй знает почему так, нигде про это не написано, но вот так.
Я, конечно, всегда знал что Java нужно скачивать с сайта разработчика, но, блядь, что это за дно в дебиане?
поставил из пакетов openjdk и groovy написал хелловорлд (мне нужно по-быстрому для Jenkins отладить функции)
groovy use_class.groovy WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/usr/share/groovy/lib/groovy-2.4.21.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release
Java анальники, вы все еще пишите на этом недоСи? Неужели ваше очко настолько раздолбано, что вы не чувствуете, как туда медленно, но верно заползает R U S T
Бля почему Security и Oauth 2.0 такая боль в моя дырка задница? Ай хейт тхис щит мэн. Keycloak еще хуже - миллиард каких то настроек, туториалы устарели, а UI администрирования изменился, пропали нужные пункты, которые в старых туторах указаны. Я реально должен уметь настраивать всё это говно? Ну что за кал
>>2572316 Двачую насчёт доков. Не двачую насчёт - "джава хуйня". Все языки хуйня. Раст тоже. Даже тот язык, на котором ты пишешь для себя - тоже хуйня.
>>2572361 Нет, просто сэкономили на девопсере. Терпи, сынок. И еще - как ты успел заметить, твои "знания" по настройке этого анального зоопарка очень быстро устареют.
>>2571100 >инициализироваться он будет здесь Похоже, что это не так. Посмотри на parrot9() в пикрил. ObjectMapper, полученный из build() и пропущенный через configure() конвертирует не так же, как в parrot1(), в котором используется какой-то другой дефолтный секретный ObjectMapper, который зачем-то экранирует эмоджи.
Там это, Robo3T клиент для монги все, и вместо него рекомендуется использовать Studio3T Free. Я его скачал, оказалось что там нужна регистрация, а когда вошел, прихуел с тормознутого интерфейса и того, во что все превратилось (в bloatware самый настоящий). Какие есть альтернативы?
Аноны, как держать несколько версий апи? Как у апи ВКонтакте например. В гугле находил только какие-то костыли, либо то что проблемно внедрять в проект
Как же я заебался с этими эксемэлями блять. Время на таску подходит к концу я смог достать данные чисто через создание DOM и потом прохождение 5 раз по fisrtChild каждого Child, потому что в ответ на реквест мне срут голым эксемель текстом который я не понимаю раз сразу распарсить через jax2b, ой бля надо было в гей вебкам идти
Ты из какой эпохи, чел? Щас уже четвертый груви. Какое нахрен "за многие годы починили"? Ты откуда вообще такой мезозой выкачал - я его даже в централе не вижу))
И на чем ты его запускаешь? Небось на какой нить свеженькой джаве? А ничего что начиная с девятки Object.finalize задепрекейтили, на размышления не наводит?
>>2573056 Был. И няшным и волосы длинные по всей голове и пуза нет. Но пошел вот сюда, сейчас ничего не осталось. >>2573151 Так схема есть, классы для jaxb сгенеренны, но вот эти решили выебнуться и срут текстом заэнкоженным, вместо того чтобы нормально послать объекты.
>>2573158 >Так схема есть, классы для jaxb сгенеренны, но вот эти решили выебнуться и срут текстом заэнкоженным, вместо того чтобы нормально послать объекты.
>>2573221 >>2573224 Нет нихуя, это я бы получал будь у них всё как у людей, а через анмаршелинг будет ошибка. Обращаюсь через spring-ws, толку то. Вот так оно выглядит, я чутка сократилось сверху и payload. Да-да, там хедеры и боди внутри боди
Какая же мразь придумала этот Спринг! Насколько нужно быть тупоголовым уродом, чтобы придумать такое дерьмище?! Вот куда не плюнь, везде что-нибудь отваливается или работает через жопу. Зачем вообще надо было это делать, если не можешь сделать нормально?
>>2573715 Я когда учил Java Core, то радовался, что такой классный язык, всё лаконично, нет лишних конструкций. А сейчас смотрю и мне совсем не нравится.
>>2573724 Попробуй сишарп. Там конечно тоже говна хватает, но смотрится он гораздо чище и лаконичнее жавы. Крудошлепил на обоих, если что. Жава+спринг и шарп+аспнет.
>>2573738 В шарпе же вообще магия на магии. Хуже всяких аннотаций. Там везде пишут эти { get; set } на каждое поле. Всяких закорючек в выражениях полно, почти как в перле. Открывающие фигурные скобочки в новой строке. И ещё PascalCase всё портит.
>>2573780 Я насколько давно начал его скачивать, что уже месяц как устроился в говноланг >шарписты Так шарп кал. К джава кору претензий нет, только к пружине.
>>2573776 Какой смысл решать литкоды, если она всё равно будет нулевая? Сам ты думать не хочешь, вместо этого просишь остальных разжевать тебе условия задач.
>>2573746 Потому что это не филд, а проперти. А еще можно делать public record Creds(string Username, string Password); и получить имутабле запись с двумя пропертями. Без миллиона ломбоковских аннотаций.
>>2573568 У меня все самое новое. ведь я централизовано обновляюсь и специальные специалисты по скурити (вообще-то они лучшие во всем опенсорсе, выпускают патчи раньше всех) следят за безопасностью моей ОС
java -version openjdk version "11.0.16" 2022-07-19 OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1) OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)
>Суть: >Скармливать проге номера в формате 8 900 001 12 34/+7 900 001 12-34/8-900-001-12-34 и т.д., чтобы она удаляла ненужные символы и пробелы и выдавала номер в формате ссылки, например ватсаппа https : // wa.me / 79000011234 поставил пробелы, если вдруг макаба будет ругаться, которую я потом благополучно вставляю в браузер >Прога нужна для себя, заебался вручную удалять символы.
>>2562960 (OP) sup Аноны. Хотел узнать, где-нибудь есть free tier куда можно бы задеплоить веб серв на спринге? (есть только рф карта). Похуй, хоть с минимальными лимитами по всему. Чёто гуглил и расстроился, ничего нет.
>>2573788 >>К джава кору претензий нет, только к пружине. Так джава без пружины - легасное помойное говно, ее спринг и все эти стримы с реактивными вебфлаксами под ломбоком и выводят на конкурентный уровень.
У тебя, груви - древняя хтонь. Новейшее груви - 4.0.7 от Dec 24, 2022. А у тебя - groovy-2.4.21.jar 2003го года выпуска, судя по >>2572222. Разумеется тогда 11 джавы и в помине не было, но был в ходу finalize, который твоя версия груви по прежнему пытается использовать на 11й джаве, из за этого и фейл.
>>2574062 да я уже давно все собрал и отладил. Мне не нужно решать никакую из производственных проблем. А попиздеть и рассуждать об ИТ я люблю. Вот и в ubuntu примерно тех же версий груви.
Я зашел чтобы узнать почему так.
Груви - очень редкий язык? Или я все-таки столкнулся с очень редким багом?
>>2574063 Ты слишком непонятно с чего взял, что в официальных репах осей типа дебиана тебе гарантированно будут только последние версии всякого стороннего софта типа джавы или груви устанавливаться. В реале обычно это вообще нифига не всегда так.
Сап дважовые, в эфире не вдупленыш. В последнее время очень интересно стало то, как работает jvm и какая у него архитектура. Вот сижу и изучаю, в процессе решил в chatgpt спросить как очищается стек, на что он мне ответил пикрилом. И тут я запутался, как блять GC может лезть в стек? Как я понял забота GC куча, а стек очищается автоматически когда метод завершает свою работу. Я все правильно понимаю? Или что-то упускаю из виду?
>>2574156 То есть ты реально просишь пояснить что отвечает ChatGPT? В курсе, что >ChatGPT sometimes writes plausible-sounding but incorrect or nonsensical answers. ?
>>2574171 >>2574178 Да я понимаю что что ИИ не голденхаммер, но все же меня это ввело в некий ступор, вот и спросил. Но я правильно понимаю принцип работы стека? >а стек очищается автоматически когда метод завершает свою работу. Ну конкретнее я имел ввиду то, что когда метод завершает свою работу он из стека автоматически очищается
И такой вопрос, у меня есть класс с main() методом, и ещё условно 2-3 класса по 3-4 метода в каждом. Если я запущу свой говнокод, то у меня будет один main поток с одним стеком в который будут записываться все вызываемые методы, я правильно понимаю?
>>2574197 >Ну конкретнее я имел ввиду то, что когда метод завершает свою работу он из стека автоматически очищается
Кто он? Метод? Обьект? Стекфрейм? Стек?
Стек состоит из стек-фреймов - по одному на каждый контекст вызванного метода. Когда метод стартует, новый фрейм аллоцируется, когда заканчивается - деаллоцируется. А вместе со стек-фреймом очищается и его содержимое. Содержимое стек-фрейма - примитивы и референсы на обьекты. Именно референсы чистятся вместе с фреймом, а не сами обьекты.
А GC - отдельная штука. Упрощая - он работает на графе обьектов: ищет по нему обьекты, на которые не указывает ни одного референса, и деаллоцирует их.
>>2574197 >И такой вопрос, у меня есть класс с main() методом, и ещё условно 2-3 класса по 3-4 метода в каждом. Если я запущу свой говнокод, то у меня будет один main поток с одним стеком в который будут записываться все вызываемые методы, я правильно понимаю?
>>2574439 Вот и я думаю, что лучше кунчика искать. Да и чему тянка может научить? Я не сексист, но считаю, что тянки до конца не понимают, а просто заучивывают всё наизусть и пытаются воспроизводить.
>>2574156 Не стоит вскрывать эту тему... Чтобы лучше понять эту тему, придётся лезть в АСМ, разбираться чё там указатель стека делает, как это мапится на регистры, короче заебешься, крайне бы не советовал на это тратить время. Гпт по сути накинул базу, а конкретно кишочки разбирать - ну такое себе!
Спроектировать десктопный калькулятор типа виндовского (с GUI, хотя бы standard https://github.com/microsoft/calculator) этого задача какого уровня владения паттернами? Хочу такой pet, но уже от проектирования мне поплохело.
>>2574289 >>2574292 >>2574483 Бля как же я люблю харкач, можешь не стесняясь своей тупизны задавать свои вопросы а анончики тебе все в деталях расскажут, тонны чая вам:)
Кто-нибудь может мне на пальцах объяснить что такое REST? Из гугла я понял что рест это когда разделение на клиент-сервер,нет глаголов в урле,хттп методы и обмен нейтральными форматами типо жсона и хмл. Это все? На этом парадигма заканчивается?
>>2577911 Да. Ну и урл должен быть путём к ресурсу, типа GET /users - список всех юзеров, GET /users/anon1 - данные юзера anon1, PUT /users {данные_юзера_в_теле_запроса} - создать юзера. Выглядит как капитанство, но если сравнивать со всякими RPC типа SOAP, разница очевидна, там всё передают на один и тот же урл через один и тот же POST, а все данные для вызова серверной процедуры передаются в теле.
>>2577920 попытка протокол http сделать универсальным бизнес-протоколом. Основывается на шизе одного чела, который раскопал что изначально http делалось для html страничек и более-менее подходило для этого. Ну и написал книгу где пытался вместо страничек натянуть это на любые бизнес-сущности, ествественно это очень плохо натягивается. Эта шиза почему-то стала модной
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий: