• Как соединить методы, написанные через точку в один?

    Jacen11
    @Jacen11
    это называется паттерн билдер
    Ответ написан
    Комментировать
  • Нормально ли при юнить тестах ставить @Spy на мапперы?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Если вы «ходите в бд» - это уже не юнит тесты.
    Если вам нужен интеграционный тест - используйте testcontainers
    Ответ написан
    Комментировать
  • Где обучиться Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Курсы не нужны. Нужен учебник и пет-проект. Потом нужно ходить по собеседованиям, выбивать обратную связь после провалов, подтягивать слабые места и снова ходить по собеседованиям, пока куда-нибудь не возьмут.
    Ответ написан
    Комментировать
  • Почему вдруг появились ошибки в проекте?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Не используйте IDE на этапе обучения. Применяйте обычный текстовый редактор и консоль. Во-первых, IDE избавляет вас от рутинных операций, но именно рутинные операции позволяют набить руку . Во-вторых, IDE скрывает многие процессы, выполняя их за программиста, но именно они позволяют понять базовые принципы. В-третьих, IDE сами по себе - сложные системы, в которых надо разбираться, а начинающему не стоит разбираться сразу с двумя трудными вопросами.
    Ответ написан
    8 комментариев
  • Нужно ли использовать множественное число при названии модулей java?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    project-usecases
    project-usecases
    project-usecases
    ....
    project-usecases

    согласитесь глупо

    project-utils
    project-models
    project-services
    это больше похоже на наймспейс или пакет
    Это как раз нормально
    Ответ написан
    2 комментария
  • Нужно ли использовать множественное число при названии модулей java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Главное правило: "Руководствуйтесь здравым смыслом".
    В большинстве случаев в единственном числе.
    Если вот прям напрашивается множественное - ничего страшного, используйте его.
    Ну и я бы рекомендовал отказаться от всяких приставок типа "project-" для подпроектов, наверное, и без того будет понятно куда они относятся.

    В Naming Conventions о числе ничего не сказано.
    Ответ написан
    Комментировать
  • Почему регулярка не срабатывает в java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вот тут ошибка;
    if(Pattern.matches(regex, reader.nextLine()));
            Str.add(reader.nextLine())

    reader.nextLine() читает строку и переходит на следующую.
    Т.е. вы читаете строку, анализируете ее, а добавляете уже следующюю (а там, видимо, ничего нет)

    Нужно создать в цикле переименую в которую сохраняется строка и действия все производить уже с этой переменной.
    Ответ написан
    1 комментарий
  • Почему ArrayList пустой?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Тут я вижу два варианта.
    1. Вы никакой асинхронщины не хотите, но вам попался асинхронный клиент. Тогда нужно что-то типа такого сделать:
    public List<Response> getAdditionalData(List<ExcelModel> excelList) {
            return Flux.fromIterable(excelList) // Превращаем лист во флюкс
                    .flatMap(excel -> webClient.get()  // по каждому элемену делаем асинхронный запрос
                            .uri(sybase + excel.getTransactionID())
                            .retrieve()
                            .bodyToMono(Response.class))
                    .collectList() // Собираем поток в лист. Тут получается Mono<List<Response>>
                    .block(); // Блокируем тред и ждем завершения. Можно в скобочках указать сколько ждать.
        }


    2. Либо вы пересаживаетесь на асинхронный стек, тогда вам нужно флюкс и отдавать, как и написал Михаил. И подписка на него дожна быть, скорее всего, где-то выше по стеку.
    public Flux<Response> getAdditionalData(List<ExcelModel> excelList) {
            return Flux.fromIterable(excelList)
                    .flatMap(excel -> webClient.get()
                            .uri(sybase + excel.getTransactionID())
                            .retrieve()
                            .bodyToMono(Response.class));
        }
    Ответ написан
    4 комментария
  • Почему ArrayList пустой?

    @Akela_wolf
    Extreme Programmer
    Так запрос же асинхронный. То есть вы его запускаете и говорите "вот когда данные придут - запиши их в список". И не дожидаясь пока запрос выполнится - возвращаете список (который, разумеется, пустой - запрос же еще в процессе выполнения).

    Поэтому, если уж вы начали использовать асинхронные запросы - надо жить в асинхронном мире дальше, везде протаскивая Mono и Flux.

    Либо переходить на Kotlin с его корутинами (которые прекрасно интегрируются с Mono/Flux)
    Ответ написан
    Комментировать
  • Как проверить наличие файла в проекте, если он находится в другом контейнере docker?

    @romaro
    У контейнеров ведь обособленные файловые системы, т.е. они могут общаться между собой через docker-network. Вам по идее нужно реализовать в контейнере бекенда API наличия картинки и дергать его из второго контейнера.

    Или выносить общие для контейнеров ресурсы на хостовую машину и монтировать директорию с этими ресурсами в оба контейнера. Тогда у них будет общая файловая система.
    Ответ написан
    1 комментарий
  • Как спарсить дату в нужный формат в Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    var s = "Tue Apr 19 00:00:00 ALMT 2022";
            var format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
            var date = format.parse(s);
            var newFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
            var formatedDate = newFormat.format(date);
    Ответ написан
    1 комментарий
  • Java графическое приложение справочник?

    Kats555
    @Kats555
    Где jbutton - твоя кнопка (Google Пошта).

    jbutton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                        JOptionPane.showMessageDialog((Component)
                                        null,
                                "Твой текст",
                                "Google Пошта",
                                JOptionPane.INFORMATION_MESSAGE);
    Ответ написан
    Комментировать
  • Как проверить Jwt(Keycloak) на валидность?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Приложение должно знать SECRET_KEY, он не должен передаваться по сети. Ну, и лучше взять готовую библиотеку для работы с JWT, а не изобретать велосипед.
    Ответ написан
    Комментировать
  • Как сделать автокликер на java android?

    iLLuzor
    @iLLuzor
    Java, Kotlin, Android Developer
    Ответ написан
    Комментировать
  • Оркестрация приложений на маленьком домашнем сервере. Что можете посоветовать?

    У меня в похожей ситуации сложился такой набор инструментов:
    - контейнеризация - докер
    - конфигурация и запуск контейнеров - docker compose
    - web IU к докеру - Portainer
    - деплой - Gitlab CI
    Ответ написан
    Комментировать
  • Котруется ли у it компаний курсы JavaRush?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Спешу вас огорчить, но компаниям плевать на то, какие вы курсы проходили. Ну, максимум можно сертификатом от cisco покозырять, но и он тоже будет максимум приятным бонусом в случае если будут выбирать между вами и еще одним претендентом одного с вами уровня (и то, далеко не везде).
    Прежде всего - спрашивать будут по конкретным вашим знаниям, без оглядки на то, где вы их приобрели.
    Ответ написан
    Комментировать
  • Spring boot + Kotlin. Где найти учебный материал?

    @Akela_wolf
    Extreme Programmer
    А зачем вам учебный материал по спрингу на котлине?

    Весь учебный материал по спрингу актуален для котлина. Переложить Java на Kotlin - даже не просто, а очень просто (даже IntelliJ IDEA умеет автоматически конвертировать Java в Kotlin). Поэтому берите Java и не мучайтесь (все равно при использовании котлина и спринга джаву знать необходимо т.к. постоянно будете натыкаться на джавовские библиотеки)
    Ответ написан
    Комментировать
  • Зачем нужно DTO в простых сервлетах?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Смотрите, entity в базе данных может содержать гораздо больше полей и объектов, чем Вы хотите передать на верх, или получить в виде формы.
    Как пример, вывод информации о пользователе. В entity скорее всего будут содержаться поля о хеше пароля, аклах (ACLs), дополнительных связях с другими объектами. На верх же, скорее всего эту информацию передавать не стоит, это внутренняя кухня вашего приложения. Для этого и создают DTO (data transfer object), в котором присутствует ровно то, что нужно передать. И да, нужно делать мерджинг или инкапсуляцию между entity и dto каждый раз туда и обратно. С одной стороны - лишние действия и преобразования из объектов в объекты, в другой - гарантия безопасности и разделение логики хранения и логики передачи сущностей.
    Нужно ли это конкретно в вашем приложении - не скажет никто, кроме Вас. Но, хорошая практика - делать dto на каждый случай.
    Ответ написан
    Комментировать
  • Сервлеты, меняется язык только со второго нажатия по ссылке, почему?

    @Akela_wolf
    Extreme Programmer
    Ну так вы полностью правы. Как работает Cookie.
    1. Сервер отсылает заголовок Set-Cookie браузеру
    2. Вместе с заголовком сервер отсылает страницу.
    3. Получив заголовок Set-Cookie браузер сохраняет "печеньку" у себя.
    4. При следующем запросе страницы с этого сайта браузер к запросу присоединяет заголовок Cookie, в котором передает сохраненные "печеньки".
    5. В ответе сервер снова может прислать Set-Cookie, тогда будет добавлена или обновлена имеющаяся "печенька".

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

    Вообще, для решения вашей проблемы я бы брал язык из URL и только если его там нет - из "печеньки". Тогда переход на страницу с нужным языком переключал бы его сразу (так как значение в URL имеет приоритет) и сохранял в cookie для последующих запросов.
    Ответ написан
    Комментировать
  • Как создать метод из SQL запроса?

    то же самое почти что:

    ResultSet resultSet = statement.executeQuery("SELECT count(*) as cnt FROM customers WHERE name = 'Bob' AND purchase = 'bike'");
      resultSet.next(); // not first() with PGSL JDBC it is forward only cursor
      final int cnt = resultSet.getInt(1);   
      System.out.println("cnt: " + cnt);


    учтите что можно конечно исходный SQL запрос выполнит через JDBC но его синтаксис не является стандартным SQL это какое то постгрес расширение:

    String query = "SELECT count(*) <> 0 FROM accounts WHERE username = 'bob';";
                  System.out.println("Executing count query: " + query);
                  ResultSet resultSet = connection.createStatement().executeQuery(query);
                  resultSet.next();
                  final boolean status = resultSet.getBoolean(1);
                  System.out.println("status: " + status);
    Ответ написан