Задать вопрос
  • Как создать сервис бронирования на java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Я как-то раз писал сервис по бронированию номеров отелей. Это реальный проект или учебный?
    Если реальный проект, то посмотрите в сторону использования API Hotelbeds или GoGlobal.
    Рекомендую Hotelbeds. У них в тестовом режиме доступно до 50 запросов в сутки, а в препродакшн неограниченное кол-во запросов. Правда, нужно заплатить сумму 3-4К у.е. и рассказать про деятельность (b2b, b2c) и т.д.

    Если учебный проект, то тут зависит от того в каком объеме вы хотите реализовать вашу задачу.
    Например, для поиска можно подключить Hibernate Search или ElasticSearch, а можно обойтись простым sql запросом.

    Есть класс комнат и класс с резервацией, а так-же DTOшки к ним, теперь мне нужно написать примерно такой код: если в коллекции есть комната X, проверить, есть ли промежуток дат (timestamp) от A1 до A2.
    Фишка в том, что я приблизительно понимаю что делать и в то же время не знаю, как это написать.


    Как вы и сказали, код писать не буду, но расскажу примерно, как это можно сделать. Предположим, что есть некий контроллер, метод которого принимает некий DTO состоящий из: номера комнаты (roomNum), а также 2-х дат (from & to).
    Далее вы передаете этот DTO на уровень сервисного слоя и обрабатываете. Далее вам необходимо на уровне репозитория написать метод, который ищет по вхождению даты.
    Вот, похожий вопрос:
    https://stackoverflow.com/questions/39784344/check...
    Вот, примеры кода:

    findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);


    или:

    @Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
    public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);


    Несколько аспектов, на которые вам нужно обратить внимание:
    - также нужно проверить номер на занятость. Т.е. если у вас есть резервация на указанную дату, то не бронировать номер.
    - Если номер не найдет, то выбросить исключение и т.д.
    Ответ написан
    Комментировать
  • С помощью чего открыть .jar плагин minecraft чтобы изменить его?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если вкратце, то изучите реверс индженеринг.
    Jar это по факту тот же zip. Но внутри архива лежат class файлы (байткод). Соответственно, вам нужно декомпилировать их в исходники или можете поискать исходники (source code) на гитхаб, битбакет и т.д. Вдруг, это опенсорсный проект.
    Можете начать с этого аналогичного вопроса:
    https://stackoverflow.com/questions/647116/how-to-...
    А лучше начните изучение самого языка, а потом вопросов будет относительно меньше.
    Ответ написан
    2 комментария
  • GSON - Как объявить переменные для хранения названий из сложного JSON?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Есть такой сайт - www.jsonschema2pojo.org
    На сайте вы также найдете maven плагин для быстрой конвертации
    Результат

    -----------------------------------com.example.Address.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Address {
    
    @SerializedName("street")
    @Expose
    public String street;
    @SerializedName("suite")
    @Expose
    public String suite;
    @SerializedName("city")
    @Expose
    public String city;
    @SerializedName("zipcode")
    @Expose
    public String zipcode;
    @SerializedName("geo")
    @Expose
    public Geo geo;
    
    }
    -----------------------------------com.example.Company.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Company {
    
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("catchPhrase")
    @Expose
    public String catchPhrase;
    @SerializedName("bs")
    @Expose
    public String bs;
    
    }
    -----------------------------------com.example.Example.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Example {
    
    @SerializedName("id")
    @Expose
    public int id;
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("username")
    @Expose
    public String username;
    @SerializedName("email")
    @Expose
    public String email;
    @SerializedName("address")
    @Expose
    public Address address;
    @SerializedName("phone")
    @Expose
    public String phone;
    @SerializedName("website")
    @Expose
    public String website;
    @SerializedName("company")
    @Expose
    public Company company;
    
    }
    -----------------------------------com.example.Geo.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Geo {
    
    @SerializedName("lat")
    @Expose
    public String lat;
    @SerializedName("lng")
    @Expose
    public String lng;
    
    }
    Ответ написан
    1 комментарий
  • Как передать параметр из properties в Spring Boot в js файл?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Отвечу на свой вопрос.
    Если это классическое MVC приложение и например, используется шаблонизатор thymeleaf, то можно получить доступ к конфигам yml || properties следующими способами:

    1)
    ${@environment.getProperty('css.specific.name')}

    2) Либо используя аннотацию @ConfigurationProperties
    а в html использовать:
    <span th:text="@foo.getBar()"></span>

    Полезная ссылка по теме:
    https://stackoverflow.com/questions/56102116/acces...

    P.S. Использование Controller || ControllerAdvice для подобных целей не приветствуется.

    Ну а если у вас REST приложение, то это настраивается на клиентской стороне внутри js фреймворка.
    Ответ написан
    Комментировать
  • Как сделать get request java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ответ на ваш вопрос легко ищется поисковиком.
    Вот, пример:
    https://www.baeldung.com/java-http-request
    Вот, примерный код. Только обработайте исключения и подправьте под себя
    public class Main {
    
    
    	public static void main(String[] args) {
    		final String urlAdress = "http://example.com"; // url куда нужно совершить запрос
    		URL url = new URL(urlAdress);
    		HttpURLConnection con = (HttpURLConnection) url.openConnection();
    		con.setRequestMethod("GET");
    		int status = con.getResponseCode(); // совершаем запрос
    		BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); // читаем ответ
    		String inputLine;
    		StringBuffer content = new StringBuffer();
    		while ((inputLine = in.readLine()) != null) {
    		    content.append(inputLine);
    		}
    		in.close();
    		con.disconnect();
    	}
    
    }
    Ответ написан
  • Есть ли интерактивный курс по Vue.js?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Подобные курсы можно найти на Udemy. Там бывают и интерактивные курсы встречаются.
    Я купил недавно курс по VueJS на Udemy на английском, но там он не интерактивный, но с нуля подробно показывается как с ним работать. Также есть информация по axios, vuex и др.
    Ответ написан
  • Зачем нужен Queue?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Для начала было бы неплохо разобраться в таких терминах, как: FIFO & LIFO
    FIFO - first in - first out. "Первым пришел - первым ушел". Это наглядный пример очереди. Обслужен будет тот клиент, который стоит первым в очереди.
    LIFO - last in - first out. "Последним пришел - первым ушел".Это наглядный пример работы стека. Т.е. это обратный принцип FIFO. Первым обслуживается тот клиент, который стоит в конце очереди (вверху стека).
    Теперь, зная что такое FIFO & LIFO стоит отметить, что Queue (с англ. очередь) - это интерфейс, который основан на принципе FiFO.
    Выбор реализации jcf зависит от вашей цели, так как каждая из коллекций выполняет ту или иную операцию за разное время. Это отображено в таблице ниже:
    603e3b8cc408a641092521.png
    Полезная ссылка по теме:
    https://codenza.app/java-collections/
    https://www.examclouds.com/ru/java/java-core-russi...
    Ответ написан
    Комментировать
  • Какой курс по архитекторству лучше пройти?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Как мне кажется, у разработчика, которого назначили архитектором не должно быть вопросов касаемых становления архитектором, так как получение этой должности уже подразумевает под собой наличие необходимых навыков. Но тем не менее вопрос был задан, а значит, скину статейку, которая может быть вам полезна:
    https://medium.com/javarevisited/top-5-courses-to-...
    Тут указаны курсы на coursera, которые вам могут быть полезны.
    Ну а если найдете полезные материалы по вашему вопросу, то буду рад их увидеть) Может, понадобится когда-то)
    Ответ написан
    Комментировать
  • Как решить проблему с "Unable to create converter for class"?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Вот, аналогичная проблема, на которую уже дали ответ:
    https://stackoverflow.com/questions/32367469/unabl...
    Ответ написан
    9 комментариев
  • Как настроить корзину Bootstrap 5 через jstl?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    У вас есть ошибки в js коде и как мне кажется было бы лучше этот код переписать под себя, нежели использовать готовый.

    <c:forEach var="product" items="${listProducts}">
        var product_price =
        ${product.price}
        var product_count =
        ${product.count}
        </c:forEach>

    Тут по факту происходит следующее. Вы итерируете по списку listProducts, а затем создаете 2 переменные product_price и product_count. Притом в каждой итерации меняете значение этой переменной на соответствующий элемент в цикле. Т.е. значения переменных будут равны значению конечного элемента.
    + будет лучше, если добавление и удаление товаров будет происходить аяксом
    Ответ написан
  • Как решить эту задачку?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Так как это домашняя работа, то вместо написания кода я предоставлю вам цепочку событий. А код уже напишите сами.
    Итак, начали вы работу правильно использовав класс Scanner. Затем вы получаете 3 переменных math, history & geometry.
    Обратите, что согласно условию задачи значение типа переменной int указано в минутах.
    Т.е. 35 минут, 40 минут и 39 минут. (35 )
    Соответственно, вам сперва нужно просуммировать количество времени затраченное на домашнюю работу.
    Т.е. int result = math + history + geometry Так вы получите общее затраченное время.
    Затем вас просят перевести минуты в часы.
    1 час = 60 минут. Соотвественно, получившийся результат разделить на 60 и получить количество часов, а затем разделить по модулю и получить кол-во минут
    Ответ написан
  • Как решить javax.persistence.EntityExistsException в Hibernate?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    LikeKey,
    очень полезные ресурсы по каскадам
    https://www.baeldung.com/jpa-cascade-types
    https://vladmihalcea.com/a-beginners-guide-to-jpa-...
    Ответ написан
    Комментировать
  • Есть какой либо плагин опроса с выгрузкой в excel?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Да, есть. Можно взять например, ACF и создать форму. А далее при помощи плагина WP All Export экспортировать данные в xlsx или csv
    Ответ написан
    3 комментария
  • Как выучить java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Возможно ли самостоятельно освоить профессию?

    Да, возможно.

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

    Вы отметили, что хотите стать андроид разработчиком, но для этого вам скорее нужно изучить язык Kotlin, а не Java. Но настоятельно рекомендуется знание Java тоже.
    Так что вы можете сразу начать изучение языка Kotlin, а затем уже Android API или же вы можете начать изучение с Java, затем переключиться на Kotlin и изучить Android.

    Отмечу, что знаний Java (или Kotlin) для разработки на андроид недостаточно. Например, вам нужно изучить основы работы с SQL для запросов в БД. Нужно также уделить время на базовые вещи, например, принципы ООП, паттерны проектирования (GRASP, GoF) и алгоритмы.

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

    Также немаловажную роль играет знание английского языка на уровне чтения технической документации. Так что скачивайте приложения (Cake, Lingvo и возможно более лучшие) и улучшайте свой английский.

    Что касается изучения Java, то рекомендую начать с книг.
    Например,
    Г. Шилдт - Полное руководство по Java (можно начать с этой книги)
    Б. Эккель - Философия Java (лучше до него прочитать что-то попроще)

    Из видеоканалов могу рекомедовать следующие:
    Java
    Android
    Android_2
    Можете глянуть на курсы на сайте Udemy. Они относительно дешевые, в среднем - (от 10 у.е до 20 у.е.). Встречаются довольно хорошие курсы, особенно на английском.

    Проверить свои скиллы можно на сайтах:
    HackerRank
    LeetCode

    Хорошие статьи встречаются на Хабр и JavaRush. Для начала этих знаний должно быть достаточно.
    Ответ написан
    Комментировать
  • Верно ли я указал наследование в Java проекте?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Не верно.
    Легче понять вашу ошибку, если проговорить словами код написанный вами.
    Вот, ваш код:
    public class University{}
    public class Faculty extends University {}
    public class Group extends Faculty {}
    public class Student extends Group {}

    Итак, вы говорите, что есть некий Университет
    Факультет РАСШИРЯЕТ Университет. Уже нестыковка. Ведь, в Университете ИМЕЮТСЯ Факультеты. Далее вы говорите, что Группа расширяет Факультет. Что тоже нелогично, ибо каждый факультет ВКЛЮЧАЕТ в себя группы.
    Дальше вы говорите, что Студент расширяет класс Группы. Тоже ведь, нелогично, так как каждая группа содержит в себе некоторое количество студентов.

    Более корректным будет следующая реализация:
    public class University {
    private List<Faculty> faculties;
    }
    public class Faculty{
    private List<Group> groups;
    }
    public class Group{
    private List<Student> students;
    }
    public class Student {}

    Притом вместо List можно использовать Set, так как каждый факультет уникален, также как и группа и студенты.
    Ответ написан
    1 комментарий
  • Что значит метод Payload из javax.validation.Payload?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Это по сути тоже сужает действие, но позволяет применить к кастомным Constraint'ам
    https://docs.jboss.org/hibernate/validator/4.1/ref...
    6031262181841223775751.png
    https://beanvalidation.org/1.1/spec/
    Payloads are typically used by validation clients to associate some metadata information with a given constraint declaration. Payloads are typically non-portable. Describing payloads as interface extensions as opposed to a string-based approach allows an easier and more type-safe approach.
    Ответ написан
    Комментировать
  • Есть ли какой-нибудь готовый шаблон или что-то вроде Google Forms?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можете взять плагин ACF (acf form). Или плагин CF7, но надо дополнить его другим плагином, который хранить данные из формы в БД. Это самые простые решения
    Ответ написан
    Комментировать
  • Насколько актуален LibGDX?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если вы хотите профессионально заняться разработкой игр, то лучше изучать c# (unity) или c++ (unreal engine).
    Если на Java хотите поиграться, то libgdx
    Ответ написан
    Комментировать
  • Как исправить код в файле plugin.php, чтобы исчез белый экран админки в WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Проверьте версию рнр. Скорее всего у вас версия рнр 7.4 и ошибка возникла после апгрейда.
    Вот, похожая ошибка - https://stackoverflow.com/questions/59674903/tryin...
    Сказать, что конкретно нужно в вашем коде исправить не смогу, так как вы даже код свой не предоставили.
    Гуглите ошибку
    Ответ написан
    1 комментарий
  • Как работать с localeStorage в Spring приложении?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    localStorage это хранилище на клиентской стороне и соответственно к backend не имеет никакого отношения.
    Вы лишь можете при помощи js отправлять данные сохраненные в ls или получать данные из бек-энд и сохранять в ls при помощи js
    Ответ написан
    Комментировать