• Android разработка на Java в Sublime Text?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Давайте, рассмотрим варианты, которые у нас имеются:
    Вы можете использовать Sublime Text 3 для Java разработки. Скажу, что как начинающему разработчику будет чуть сложнее подготовить рабочее пространство под android, с учетом того, что вам нужно скачать различные sdk, установить gradle и т.д.
    Вам понадобится:
    Android SDK Command line tools - https://developer.android.com/studio#downloads
    Sublime Text 3 или 4
    Плагин для Sublime Text 3. Например, Javatar или Andrew
    Gradle (для удобства можно использовать https://sdkman.io/install )
    В качестве OS - с учетом железа можно взять Linux, так как он легче, чем остальные

    В качестве альтернативы можете рассмотреть OSS (Visual Studio Code)
    Вот, минимальные требования для него - https://code.visualstudio.com/docs/supporting/requ...

    Можно попробовать кое-что другое еще...
    Изучить javascript & React Native и писать кросплатформенные приложения на нем. Но что по ресурсам не подскажу.
    Ответ написан
    2 комментария
  • Как скачать файлы по URL?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Итерируете по массиву и для каждой ссылки проводите действие указанное по ссылке ниже. Выбор вариантов скачивания огромен
    https://www.baeldung.com/java-download-file
    Ответ написан
    Комментировать
  • Как эффективно освоить backend-разработку на Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Один мой коллега заявил, что если учить программирование само по себе — по книгам/документации, — то это потеря времени впустую. Нужно делать какой-то проект. У меня такой вопрос: а какой проект можно сделать, если только начал изучать программирование и понятие не имеешь что писать?


    Чтобы знать, что писать - надо знать, как писать. А значит, для начала ты должен овладеть теорией. Хорошо, когда изучая теорию ты попутно учишься писать код. До написания pet project я бы рекомендовал изучить еще исходные коды различных проектов коллег поопытнее. Найти их можно на github, bitbucket и т.д.

    Итак, подведем итог:
    1) изучить теорию
    2) попутно стараться решать задачи на различных сайтах (hackerrank, leetcode и др.)
    3) когда овладеете базовыми навыками, то изучать различные паттерны и подходы. KISS, YAGNI, GRASP, SOLID, GoF, DTO, DAO и т.д.
    4) написать свой pet project.
    Ответ написан
  • С помощью каких фреймоворков создают мобильные приложения на Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Подскажите, с помощью каких фреймоворков создают мобильные и десктоп приложения на Java?

    Добрый день.
    Десктоп - платформа JavaFX. Остальные старые либы, но используются и по сей день. Например, swt, awt, Swing
    Мобайл - на Java пишут нативно под андроид используя Android SDK.
    Под iOS есть вроде бы Multi-OS Engine - https://multi-os-engine.org/ , но я сам никогда его не использовал.
    Если хотите кросплатформенно писать мобайл приложения, то смотрите в сторону React Native (javascript, typescript) или Flutter (Dart). Ну и изучив js можно писать десктоп на ElektonJS
    Ответ написан
    2 комментария
  • Как найти итоговые поступления каждого маршрута за 7 дней?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Это тестовое задагние или реальный проект?
    На всякий случай отмечу, что если вы оперируете с валютой, то для высокой точности стоит использовать тип данных BigDecimal вместо примитивов. Тип данных int тем более не подойдет, так как могут быть не только целые значения.

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

    Предположу, что это тестовое задание или домашка и потому вместо ответа дам вам несколько подсказок.
    1) Создайте класс, который хранит в себе информацию по каждому из маршрутов. Приведу простой пример. Можно учесть много аспектов например, дату и т.д., но не будем.
    Например, (псевдокод):
    class Route {
        int busNum;
        Map<DayOfWeek, BigDecimal> incomePerDay;
    }

    далее вы можете создать массив или использовать jcf для хранения данных.
    Не будем морочиться и возьмем массив:
    Route [] routes = new Route [];
    Инициализируем массив маршрутов. В мапу кладем доход. Ключом является день недели, а значением доход на этот день.
    Далее остается при помощи класса Scanner, который вы используете принять выручку на каждый день недели для каждого из маршрутов.
    После того, как вы примете значения остается итерировать по массиву Route. Внутри цикла получить мапу. Проитерировав по мапе получить значения (доходы) по ключу и вывести сумму (недельный доход) в консоль

    Я условился, что за маршрут можно получить от 1000 до 10000.

    За маршрут можно получить и 550 руб. 50 коп. Целых значений может и не быть
    Ответ написан
    2 комментария
  • Как обновит массив объектов в spring boot?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Ну во-первых, вам не нужно итерировать по старой и новой коллекции.
    Вы можете либо воспользоваться методом addAll(). либо же раз решили итерировать, то
    создать методы add() и remove()
    Прочитайте эту статью:
    https://vladmihalcea.com/the-best-way-to-map-a-one...
    Для более полного ответа нужно увидеть весь код. Например, вы указали вот, эту строку в комментарии:
    List<Address> addressList = oldUser.getAddress()
    Тут либо действительно проблема. либо метод назван неправильно, так как getAddress() подразумевает получение одного адреса, а не списка адресов пользователя. Должно быть getAddresses(), ну а метод getAddress() должен возвращать 1 адрес
    Рекомендую поставить брейкпоинты и провести дебаг
    Ответ написан
    Комментировать
  • Почему мои куки исчезли? Как мне оставаться в одной сессии?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Если я вас правильно понял, то у вас есть проект на Angular + Spring Boot.
    Не видя исходный код проекта сложно что-либо объективно сказать, но тем не менее постараюсь.
    Итак, рассмотрим простую модель - вы пишете REST приложение. Имеется некий эндпоинт, который принимает логин и пароль и в ответ генерирует jwt (токен). В чуть более сложной модели могуть быть 2 токена - access token & refresh token.
    Затем вам необходимо каждый раз в заголовке этот токен передавать. Например, Bearer xxxxxx
    Не забываем сохранить сам токен в localStorage и каждый раз отправлять его в бэкенд
    Ответ написан
  • Возможно ли поместить в option selected Значение переменной из Thymeleaf?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    <option selected>Как сюда поместить значение  переменной Thymeleaf??</option>
            <option th:each="ru: ${rule}"
                    th:value="${ru.id}"
                    th:text="${ru.name}">
            </option>

    Тут нужно сделать проверку при помощи th:selected
    https://attacomsian.com/blog/thymeleaf-conditional...
    Если я вас правально понял. то атрибут selected нужно добавить, если значение из цикла совпадает со значением из вашей переменной (допустим из БД)?
    Если так, то в цикле th:each вы при помощи th:selected проверяете на совпадение и если значение переменной и элемента из цикла совпадают, то добавляете атрибут.
    Ответ написан
    5 комментариев
  • Как одну сущность использовать в нескольких таблицах?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Было бы неплохо увидеть стек.
    А так попробуйте:

    class Rate {
    
    	@ManyToOne(fetch = FetchType.LAZY)
        private Tarif tarif;
    
        @ManyToOne(fetch = FetchType.LAZY)
        private TarifGarant tarifGarant;
    }
    
    class Tarif {
    
    	@OneToMany(
            mappedBy = "tarif",
            cascade = CascadeType.ALL,
            orphanRemoval = true
        )
        private List<Rate> rates;
    
    }
    
    class TarifGarant {
    
    	@OneToMany(
            mappedBy = "tarifGarant",
            cascade = CascadeType.ALL,
            orphanRemoval = true
        )
        private List<Rate> rates;
    }
    Ответ написан
  • Как ограничить доступ пользователю к чужим постам на сайте?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Как отметил коллега, в первую очередь вам нужно связать пользователя и его посты.
    Рекомендую ознакомиться со связями между сущностями. (OneToOne, OneToMany & ManyToOne, ManyToMany). Затем связать пользователя и его посты при помощи OneToMany & ManyToOne. Таким образом на стороне поста у вас будет ID пользователя, который его добавил.
    Далее в контроллерах, вам необходимо получить текущего авторизованного пользователя и проверить принадллежит ли пост этому пользователю или нет. Если нет, то показываем 403. Тут уже зависит от вашей задумки. Можно по-разному проверить и по-разному реализовать
    Ответ написан
    1 комментарий
  • Как подключится к Apache Derby по URL адресу?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Там написано, что не удалось установить соединение.
    1) Убедитесь в том, что derby на порту - 1527
    2) попробуйте вместо localhost ввести 127.0.0.1
    Вот, информация по работе с Derby через jdbc
    https://www.codejava.net/java-se/jdbc/connect-to-a...
    Вот, похожая проблема:
    https://stackoverflow.com/questions/10420902/data-...
    Ответ написан
    Комментировать
  • Как и где найти грамотного персонального преподователя JAVA?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Так как обучение по сути самообучение, то время от времени возникают вопросы, которые хотелось бы детально на примерах разобрать с наставником / преподавателем.

    Нет смысла в персональном обучении... Либо ищите ментора, либо можете записаться на курсы.
    Но необязательно. Можно самому все изучить. Тут уже от вас зависит все. Не забываем про учебники
    Ответ написан
    1 комментарий
  • Может ли одно Java-приложение работать с разными БД?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Что за приложение. которое работает по принципу "1 сервер - 1 клиент". А если в будущем будет 1000 клиентов? А если 1М?
    Ну а так вы можете перейти на микросервисную архитектуру. Развернуть отдельный сервер конфигурации (config server), gateway & discovery service. А затем развернуть по 1 инстансу приложения на каждого клиента
    Ну или как отметил коллега, реализовать мультиарендность (multitenancy)
    Ответ написан
  • Как исправить ошибку 405 при отправке Post запроса через Rest, ajax в Spring проекте?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Сделал код ревью вашего кода и дам вам несколько советов, если конечно вы не против:
    1) Обратите внимание на структуру REST запроса. Есть общепринятые стандарты наименования эндпоинтов, которым было бы неплохо следовать:
    @PostMapping("/cart/add/{pid}/{qty}")
    2) Вместо System.out.println("authentication is null"); используйте логгер. Ознакомьтесь с @Slf4j например.
    3) Нет смысла использовать PostMapping, если у вас нет тела запроса. Для этих целей допустимо использование PatchMapping, как вариант. Либо отправьте Post запрос, но с телом. Вообще, рекомендую прочитать про идемпотентность методов и вообще про методы.

    Ответ на ваш вопрос в 3-м пункте
    Ответ написан
    Комментировать
  • Java как после точки переносить на новую строку текст?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Было бы неплохо увидеть код.
    Каким образом мне отследить точку в тексте?

    "Отследить" вы можете при помощи регулярного выражения. А затем, использовать замену на перенос строки (\n)
    Вот, пример - https://regex101.com/r/dJux7d/1
    Ответ написан
    Комментировать
  • Почему не работает ввод с консоли Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Проблема заключается в следующем:
    Вы сперва с вводите первое число и нажимаете на перевод строки (Enter).
    Когда вы нажимаете на перевод строки срабатывает ввод числа b, который и принимает собственно говоря знак перевода строки и так как он не является числом, то выбрасывается исключение.
    Чтобы этого не было:
    int c = Integer.parseInt(scanner.nextLine());
    Scanner.nextline();
    int b = Integer.parseInt(scanner.nextLine());

    И как отметил коллега - используйте nextInt() вместо nextLine()
    Вот, аналогичная проблема - https://stackoverflow.com/questions/13102045/scann...
    Ответ написан
    Комментировать
  • Разница между if else и try catch?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Стоит также обратить внимание на то, что есть try with resources, что позволяет после работы автоматически закрывать соединение и т.д. Т.е. все, что имплементирует интерфейс AutoClosable. Например, подключиться к БД, что-то сделать, а затем закрыть соединение. Как мимнимум в if else этого нет.
    С другой стороны try catch более тяжелый с точки зрения производительности.
    Ответ написан
    Комментировать
  • Как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Согласен с коллегой. Возможно. вам стоит рассмотреть вопрос о слиянии микросервисов или же о создании доп. микросервиса, у которого будет доступ к базе и данные будут согласованы (сага паттерн вроде должен подойти)
    Ответ написан
    Комментировать
  • Какой хостинг лучше использовать для spring приложения?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Если приложение действительно простое, то подойдет любой VPS / VDS.
    Однако, замечу, что было бы неплохо провести профилирование и глянуть на объем потребляемой оперативной памяти и т.д.
    Также при выборе хостинга стоит учесть тот факт, что могут быть проблемы с оплатой услуг зарубежных провайдеров. А так я бы посоветовал Hetzner (немецкий) из разряда дешево-сердито.
    Ответ написан
    Комментировать
  • Где взять тексты сообщений и ошибок Java + Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ну во-первых, давайте не путать ошибки и исключения. Также не стоит путать их с http ошибками.
    Ошибка - StackOverflowError
    Исключение - NullPointerException, RuntimeException
    Подскажите пожалуйста, где можно взять список всех ошибок и сообщений для Java?

    Гиблое дело, ибо каждая либа может создавать свои кастомные исключения. Даже в Spring вы можете расширить класс RuntimeException и создать свое кастомное исключение.
    Одним списком вы не найдете. Будут куча разных списков в лучшем случае... на каждую либу / фреймворк. А найти их можно на оф. сайте либы
    Ответ написан
    Комментировать