• Как сделать DTO с валидацией данных в Java Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Если честно, то меня сама строка настораживает
    @NotNull(message = "123")
        @NotEmpty(message = "456")
        private String proxy;

    NotEmpty и так проверяет строку на NULL и на пустоту и соответственно, аннотация @NotNull не нужна.
    Попробуйте удалить эту аннотацию и проверьте заново.
    Ответ написан
  • JVM интерпретирует байт-код в машинный код?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Будет ли JVM компилировать или интерпретировать байт-код зависит от платформы.
    Прочитайте вот, этот ресурс - Ссылка
    Вот, похожий вопрос - https://qna.habr.com/q/897579?e=10433021#comment_2...

    Подводя итог, в зависимости от среды исполнения байт-код может быть:
    - скомпилирован заранее и выполнен как родной код (похожий на большинство компиляторов С++)
    - скомпилирован (JIT) и выполнен
    - интерпретирован
    - напрямую выполняется поддерживаемым процессором (байт-код - это собственный набор команд некоторых процессоров)
    Ответ написан
    2 комментария
  • Есть ли метод в java, который генерирует рандомную дату?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ответ на ваш вопрос легко ищется поисковиком.
    https://www.baeldung.com/java-random-dates
    https://stackoverflow.com/questions/3985392/genera...
    Ответ написан
    Комментировать
  • Реализация интерфейса Comparable java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Вот, тут дан ответ на ваш вопрос - https://stackoverflow.com/questions/369512/how-to-...
    Ответ написан
  • Как форматировать код с помощью линтера в VueJS проекте?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Насколько я помню в продуктах jetBrains (Storm, IDEA) это есть по умолчанию.
    В Sublime Text 3 - ищите beautify плагин. Некоторые из них требуют наличия node
    Для VSCode тоже есть плагины.
    Ответ написан
    Комментировать
  • Что не так с кодом Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    console.log(arrayList.perShape());
    Т.е. никого не напрягает, что эта строчка кода вообще не из Java, а скорее из JavaScript?
    Ответ написан
    Комментировать
  • Как реализовать сайт наподобие google form?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    1) есть сервер на ubuntu; 2) на него установил lamp

    Можно более простым способом обойтись и установить VestaCP
    https://vestacp.com/
    Но если нравится все ставить руками, то lamp в самый раз.
    Что касается выбора CMS, CMF или фреймворка, то тут зависит от вашего бюджета или навыков.
    С учетом того, что в ТЗ не было озвучено ничего специфичного, то CMS WordPress подойдет.
    Если будете делать на ВП, то вот, примерная инструкция:
    - установить плагин Advanced Custom Fields. Желательно, даже Pro
    - Создать кастомные поля (форму) куда пользователи смогут заносить свои данные
    Читаем как создать front-end форму
    - Создайте кастомный тип записи Читаем про register_post_type
    - А далее при сабмите формы из фронта создаете новый кастомный пост. Можно не публиковать пост сразу, а создавать его со статусом draft и отправлять админу уведомление о наличии нового поста (анкеты). Далее админ проверяет и публикует.
    - Ну а дальше остается это все лишь красиво вывести на сайте.
    Ну а если хотите написать с нуля, то можно и на фреймворках, типа Yii2, Laravel и др.

    Скажу честно, сама идея меня несколько напрягает. Смысл людям вбивать свои личные данные (ФИО, где и когда родился, инн, снилс, и копии каких либо документов), чтобы они были доступны другим людям? К тому же, вам надо обеспечивать безопасность этих данных иначе взломать ВП и украсть данные не такая уж и сложная задача. Особенно, когда устанавливают кучу обнуленных плагинов и т.д. Ну и чтобы не было проблем с юридической точки зрения, то надо бы тогда создать страницу "Политика конфиденцильности" и подробно написать, какие данные вы собираете у пользователей, как их храните, используете и есть ли доступ у третьих лиц к этим данным.

    Я бы подобное сделал бы на фреймворках, чтобы иметь возможность контролировать хранимые данные. Возможно, что данные в БД хранить в зашифрованном виде и дешифровать их при обращении к БД. Дополнительная мера безопасности так сказать...
    Ответ написан
    2 комментария
  • Перенос Joomla на Wordpress PhocaGallery?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Я давно использовал плагин FG Joomla to WordPress. Но для переноса сайтов предпочитаю писать парсеры на любом доступном языке. А парсер уже собирает данные с любой CMS и переносит их в WP (либо через REST API, либо используя плагин WP ALL Import предварительно спарсив данные в csv или xlsx).
    Если лень писать парсеры, а бюджет позволяет, то можно заказать на фрилансе или использовать сервисы типа - https://cms2cms.com/
    Ответ написан
    Комментировать
  • Разумно ли считать json-файл и присвоить в строку, потом строку в Arraylist?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Вопрос: Это тупое решение? если да, то как правильно решить данную задачу?

    Скорее вы пошли ооочень длинным путем.
    Вот, структура вашего json.
    {
      "movies": [
        {
          "name": "Good omens",
          "year": 2019,
          "description": "TV Series",
          "director": {
            "fullName": "Douglas Mackinnon"
          },
          "cast": [
            {
              "fullName": "Michael Sheen",
              "role": "Aziraphale"
            },
            {
              "fullName": "David Tennant",
              "role": "Crowley"
            }
          ]
        }
      ]
    }

    Лучше считайте его сразу в список объектов
    Можете замаппить json в объект используя этот сайт - www.jsonschema2pojo.org
    Получится примерно следующее:
    -----------------------------------com.example.Example.java-----------------------------------
    
    
    public class Example {
    
    @SerializedName("movies")
    @Expose
    public List<Movie> movies = null;
    
    }
    
    -----------------------------------com.example.Movie.java-----------------------------------
    
    public class Movie {
    
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("year")
    @Expose
    public Integer year;
    @SerializedName("description")
    @Expose
    public String description;
    @SerializedName("director")
    @Expose
    public Director director;
    @SerializedName("cast")
    @Expose
    public List<Cast> cast = null;
    
    }
    
    -----------------------------------com.example.Director.java-----------------------------------
    
    
    public class Director {
    
    @SerializedName("fullName")
    @Expose
    public String fullName;
    
    }
    -----------------------------------com.example.Cast.java-----------------------------------
    
    public class Cast {
    
    @SerializedName("fullName")
    @Expose
    public String fullName;
    @SerializedName("role")
    @Expose
    public String role;
    
    }

    Прочитайте например, эту статью как прочитать json в объект
    https://mkyong.com/java/how-to-parse-json-with-gson/
    Ответ написан
    Комментировать
  • Как в hibernate создать объект без поля optional?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Наверное будет лучше, если вы с клиента будете создавать DTO, а его уже конвертровать в Entity. Это не связано с вопросом, так небольшой совет.
    А то получается, что вы на клиенте формируете User. И возможно, что project, так как он не создается передается null.
    А при этом у вас nullabe = false
    @ManyToOne(fetch = FetchType.LAZY, optional = true)
        @JoinColumn(name = "project_id", nullable = false)
        @OnDelete(action = OnDeleteAction.CASCADE)
        @JsonIgnore
        private Project project;

    Получается нельзя создать юзера, но при этом назначить ему null project. Потому у вас и ConstraintViolationException

    В общем,
    1) используйте DTO
    2) Наверное, стоит поставить nullable = true
    Ответ написан
    Комментировать
  • Почему Hibernate разрешает удалять сущность, на которую ссылается FK?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Наверное, помимо ограничений на уровне БД можно использовать проверку средствами Java. Т.е. создать метод, который проверяет наличие курсов у юзера и выбрасывает соответствующее исключение. Соответственно, исключение будет выброшено до вызова метода delete() и будет выброшено то исключение, которе вам нужно.
    Я конечно не отвечу вам наверняка, но думаю этот ответ будет для вас полезен
    https://stackoverflow.com/questions/14875793/jpa-h...

    JPA does offer possibility to cascade operations (merge, persist, refresh, remove) to associated entities. Logic is in JPA and does not utilize database cascades.
    There is no JPA standard compliant way to do cascades with database cascades.

    Т.е. скорее всего вы каскады не указали при создании сущности ManyToMany. Проверьте ваш код

    Дополнено:
    There is no clean cut means to do this in JPA. The following will get you what you want... You can use CascadeType.DELETE, however this annotation only applies to the objects in the EntityManager, not the database. You want to be sure that ON DELETE CASCADE is added to the database constraint. To verify, you can configure JPA to generate a ddl file. Take a look at the ddl file, you'll notice that ON DELETE CASCADE is not part of the constraint. Add ON DELETE CASCADE to actual SQL in the ddl file, then update your database schema from the ddl. This will fix your problem .
    Ответ написан
  • Какие карты использовать для приложения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    MapsForge
    сама либа - https://github.com/mapsforge/mapsforge
    работает с OSM картами
    Ответ написан
    Комментировать
  • Как отправить изображение на сервер через мобильное приложение на Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Не совсем понятно пишете ли вы клиентсткую часть или серверную, так как в вашем вопросе освещены обе стороны.
    Если вкратце, то вам нужна серверная часть (API). Например, некий контроллер, который принимает массив байтов файла, а также другие данные. Далее картинки сохраняет на сервере или по АПИ передает на распределенную файловую систему (например, S3). А в ответ на клиентсткую часть возвращает урл, по которому можно скачать картинку или отобразить в андроид.
    Для сервера можно и на Spring Boot поднять небольшое приложение. В таком случае обратите внимание на: Spring Data, Spring Web. Принимать будете MultiPartFile + dto (саму заметку). Ну и скорее всего нужно будет реализовать CRUD для картинок и заметок
    Ответ написан
    5 комментариев
  • SPA концепция node+vue/react?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Как правило, в данном случае это 2 разных приложения.
    Клиентская часть - vue, react, angular, swelte и др.
    Серверная часть - laravel, django, yii2, RoR, Spring и др.
    Общение между сервером и клиентом происходит при помощи запросов к API через например, axios или любые другие библиотеки для выполнения http запросов.
    Если пользователь перейдёт по ссылке, то не будет перезагрузки страницы?

    То что нет перезагрузки страницы, не говорит о том, что не был выполнен запрос. Например, выполняется GET запрос и первый компонент заменяется вторым. Если при подключении компонента нужно выполнить запрос к серверу (к API) и например, получить список объектов, то запрос в свою очеред тоже делается
    Ответ написан
    Комментировать
  • Как развернуть portable программу MySQL+JAVA+REACT JS?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Да, можно реализовать.
    Вообще, можно обойтись и без React. А использовать только Spring Boot + JavaFX
    https://better-coding.com/javafx-spring-boot-gradl...

    А можно обойтись и без Spring Boot и использовать ElectronJS, т.е. написать на JS.
    https://electronjs.org/

    Или можно написать на JavaFX и без спринга и без других фреймворков.

    Но если нужна именно такая связка: Spring + React, то по факту вам нужно будет локально поднимать это приложение на клиенте.

    В качестве базы можно использовать файловые БД (тот же Sqlite).
    А можно использовать H2 базу - www.h2database.com/html/advanced.html

    С учетом того, что Spring Data из коробки работает с H2, то H2 предпочтительнее.

    Если наличие реакта не сильно принципиально, то я бы выбрал JavaFX + Spring Boot
    Ответ написан
    Комментировать
  • Как к entity присоединить список других entity и потом работать с ними и со списком?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Во-первых, на основании ваших слов:
    Есть сертификат(Certificate), у него может быть много тегов (Tag).
    Предполагается что в таблице тегов может быть куча дубликатов по имени, т.е. 3 сертификата могут иметь один и тот же тег "Java" ну или как-то так.

    Могу предположить, что связь OneToMany & ManyToOne не очень подходит.
    Вот, смотрите: один сертификат может иметь несколько тегов, но при этом один тег может относится к разным сертификатам. Тут явно связь ManyToMany.
    https://vladmihalcea.com/the-best-way-to-use-the-m...
    https://www.baeldung.com/jpa-many-to-many
    Соответственно, получится, что со стороны Certificate вы сможете получить список его тегов, а со тороны тега, можете получить список сертификатов, к которым он принадлежит.
    А то у вас получается, что и со стороны тега и сертификата OneToMany связь, но при этом с обеих сторон используется List
    При использовании ManyToMany будет создана новая таблица вида certificate_id | tag_id, где вы сможете хранить данные. И соответственно,
    Как к entity присоединить список других entity и потом работать с ними и со списком?

    Этот вопрос устранится само собой
    Ответ написан
    7 комментариев
  • Как выбросить IllegalArgumentException, если значение slot некорректно?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Условно говоря, вам нужно проверить не является ли переданное методу shotWithWeapon() значение slot меньше 0. Используйте конструкцию if. Дальше было бы неплохо узнать, каким типом данных является Slot. Например, если это массив, то нужно проверить входит ли переданное значение в массив значений. Ну а дальше внутри конструкции

    public void shotWithWeapon(int slot)  {
    if (slot < 0 || другие условия) {
    throw new IllegalArgumentException();
    }
            //TODO проверить на выход за границы
            // Проверить на выход за границы
            // Выбросить IllegalArgumentException, если значение slot некорректно
    
            Weapon weapon = weaponSlots[slot];
            weapon.shot();
        }
    Ответ написан
    Комментировать
  • Куда вставлять код формы?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте! Было бы нелпохо уточнить. Что является формой? Это form?
    Или это код размещения баннера (некий блок, типа div) или вообще некий iframe?
    А добавить блок на сайт можно по-разному. Например, использовать виджет html и вставить свой код туда.
    Или есть используете визуальный редактор Visual Composer (то в нем есть виджет html). Возможно, подобные виджеты есть и в других редакторах.
    Ну или добавить на уровне кода (шаблона). Или же создать свой шорткод в functions.php, а его вывести уже на сайте
    Ответ написан
    7 комментариев
  • Как сделать список одного select зависимым от выбора в другом?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Во-первых, backend тут ни причем. Это все решается на стороне front-end.
    Я бы сказал, что JS обязателен к использованию, а точнее можно обойтись готовыми библиотеками типа select2 или bootstrap-select
    Вот, вариант реализации без js библиотеки
    https://stackoverflow.com/questions/4480637/how-to...
    Ответ написан
  • Как удалить пост с помощью get запроса?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    При нажатии на кнопку должен удаляться пост. Мне сложно сориентироваться как правильно это сделать.


    Давайте разделим работу на несколько условных частей и разберем поотдельности.
    1) Back-end.
    Создайте сервлет, который будет обрабатывать ваши get запросы на удаление записи.
    Например, структура запроса должна быть примерно такой:
    /posts/delete/{id}
    Конечно, правильнее было бы сделать урл иной структуры, но пока не будем на этом зацикливаться. В данном случае {id} это id поста, который нужно удалить.
    Соответственно, получаете запрос из фронта и достаете из урла id статьи.
    Далее обращаетесь в базу данных (скорее всего вы используете jdbc). Находите статью по этому id и удаляете ее.

    2) Front-end
    Вам из фронта нужно выполнить запрос на удаление статьи.
    Судя по вашему коду <c:forEach var="post" items="${postList}"> у вас выводится некий цикл (список) статей.
    А эта кнопка предназначена для удаления статьи.
    <a class="btn btn-primary btnPost" role="button">Delete</a>


    Измените кнопку и добавьте в нее href атрибут, в котором укажите url на который нужно сделать запрос и id поста, который вы получаете отсюда post.getId()
    Ответ написан
    Комментировать