Задать вопрос
  • Spring boot: как логировать в файл отдельно от консоли?

    @Wan-Derer Автор вопроса
    mayton2019, пока только задан файл:

    logging.file.name = log/log.txt

    всё остальное по умолчанию. Логгер импортирован slf4j.
  • Почему ArrayList пустой?

    @Wan-Derer
    Метод toString() нужно реализовать

    Реализовывать метод в готовом библиотечном классе? Наверно у меня какая-то неправильная Java, но у меня такой код:
    List<String> stooges = List.of("Larry", "Moe", "Curly");
    System.out.println(stooges);

    вполне работает и выдаёт ожидаемый список.

    инициализация ArrayList выполняется неправильно

    Инициализация выполнена вполне законно. Заполнение сделано неправильно (точнее не сделано) - это да :)
  • Почему ArrayList пустой?

    @Wan-Derer
    ArrayList нельзя вывести таким вот образом System.out.println(arrayList);

    Тамщет, у коллекций есть toString(), так что можно. Это массивы нельзя (но можно, используя метод Arrays.asList()).
  • Какую область программирования выбрать PHP или Java?

    @Wan-Derer
    Jacen11, Есть такое понятие - порог входа. Считается что для Java он достаточно высок. Т.е. выучить базовый синтаксис языка недостаточно, надо знать основные классы Java core плюс "внешние" вещи, о которых я писал выше. Java сложная именно в этом смысле. И "хорошие деньги" тут как бы сами собой получаются? Я начал с 60 тыр (Москва). Но я почему-то думаю что и Питон-джуны заходят примерно с этих денег. Тоже потому что недостаточно пройти курс "Питон для самых маленьких". В вакансиях написано что нужно от питониста - и там тоже фреймворки. Но считается что у Питона или ЖС порог ниже. Да, синтаксис проще и Core как такового нет. И выучить синтаксис ЖС (зная какой-нить другой язык) можно за пару дней. Но потом мы заходим в браузер и начинаем разбирать DOM-дерево.... Потом осваиваем Ноду.... а потом- фреймворк! Ну, наверно можно стать React-джуном за пол-года. С Java вряд ли так получится.

    Он специально создавался для более быстрого обучения программистов

    Его создавали как упрощение С++. В этом смысле Java до сих пор проще. Но голая Java никому не нужна, ну почти, мне однажды попались ребята, которые пилят на Java какую-то математику, они про фреймворки вообще не спрашивали, но это редкость. В основном на собесах заходят прямо со Спринга :)

    ну откуда то же берутся там люди

    Да. Студенты :)

    В одном только сбере требуются тысячи джавистов

    Я в Сбер ходил и получил аж несколько приглашений. Там действительно не сложные собесы. Но это после года обучения и полу-года работы. Мне повезло найти место где не требовался Spring. Я его (и Hibernate тоже) учил уже работая. Но это именно что повезло.
  • Какую область программирования выбрать PHP или Java?

    @Wan-Derer
    для создания крупного проекта с долгой поддержкой для бизнеса, java я бы выбрал ну очень в последний момент.

    А какой язык ты бы выбрал для такого проекта?

    Очень многословный язык

    Многословие Java далеко в прошлом ибо:
    - исторически, например, дженерики позволяют устранить много однотипного кода;
    - сам язык развивается: Stream API, Records и прочее;
    - библиотечка Lombok позволяет (почти) совсем исключить шаблонный код;
    - есть паттерны, например, bulder позволяет очень красиво и компактно создавать объекты со множеством полей;
    - есть фреймворки, которые позволяют множество кода просто не писать :)
    А ещё к плюсам java:
    - отличные IDE, которые знают что ты хочешь написать лучше тебя :)
    - фреймворки, позволяющие решать типовые задачи, кодируя только бизнес-часть;
    - системы сборки проекта и их интеграция с IDE;
    - толпы, нет ТОЛПЫ специалистов, которым обрыдло оживлять легаси и которые готовы с удовольствием окунуться в новенький и чистенький проект (и превратить его в легаси, но это уже детали).
  • Firebird, как использовать со Spring Boot 3 (Hibernate 6)?

    @Wan-Derer Автор вопроса
    Dmitry Roo, Так называется драйвер, выбрал самый новый. Раньше эти индексы ни на что не влияли. Мне кажется, дело всё-таки в Хибернейте, он не может расчухать диалект Firebird. И я не пойму что с этим делать...
  • Firebird, как использовать со Spring Boot 3 (Hibernate 6)?

    @Wan-Derer Автор вопроса
    Dmitry Roo, обновил:
    <dependency>
          <groupId>org.firebirdsql.jdbc</groupId>
          <artifactId>jaybird</artifactId>
          <version>4.0.8.java11</version>
        </dependency>


    Не помогло, ошибка та же.
  • Firebird, как использовать со Spring Boot 3 (Hibernate 6)?

    @Wan-Derer Автор вопроса
    Dmitry Roo, мавен:
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.0</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>
    
      <groupId>com.broadview</groupId>
      <artifactId>xxx-api</artifactId>
      <version>0.0.1</version>
      <name>xxx-api</name>
      <description>xxx-api</description>
    
      <properties>
        <java.version>17</java.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    
        <dependency>
          <groupId>org.firebirdsql.jdbc</groupId>
          <artifactId>jaybird-jdk17</artifactId>
          <version>2.2.15</version>
        </dependency>
    
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <scope>runtime</scope>
          <optional>true</optional>
        </dependency>
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
              <excludes>
                <exclude>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                </exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    </project>
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    О, много новых слов :)
    Спасибо, будем почитать :))
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    mayton2019, IDEA не любит Firebird и не хочет автоматически генерировать код :) Но это вопрос двадцатый. Я не собираюсь в один присест описывать всю базу, буду делать это по мере необходимости.
    Вопрос в том как организовать раздачу объектов (варианты подробно описывал выше). Т.е. как это обычно делается в подобных случаях?
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    Сейчас так и есть. Я забираю только те таблицы, которые нужны, более того, только те поля таблиц, которые нужны. Но если я вынесу работу с базой в отдельную часть, мне в конце концов придётся описать все таблицы с помощью объектов. Пусть их будет не 1000 т.к. есть какое-то число зависимых таблиц, которые будут представлены вложенными объектами. Пусть их будет 300-400, но это всё равно до фига :)
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    Архитектуры как таковой нет, я собственно и пытаюсь её разработать. Сейчас есть работающее приложение, тот самый монолит, представляющий собой один из "модулей", о которых я говорил ранее.
    Базу данных я не проектирую, она мне предоставляется в готовом виде. И сейчас готовится новая версия, в которой база разделяется на две части: в одной объекты "общего назначения" (юзеры и т.д.), а в другой - специфичные для моего приложения. Но данные мне нужны из обеих баз.
    В принципе, я умею делать Spring-приложение с двумя (несколькими) базами, это не проблема. Но я пытаюсь думать немного вперёд. Допустим, у меня появится задача реализовать ещё одну часть предметной области. Будет то же деление: объекты "общего назначения" и специфичные для этой части. Добавлять функционал к текущему приложению не надо - это будет совсем другая логика, просто часть исходных данных будет общая, т.е. это в любом случае будет отдельное приложение. Тогда, в рамках монолитного подхода мне надо будет скопировать код, отвечающий за "общую" часть, а потом поддерживать его уже в двух приложениях. Я и хочу эту общую часть вынести и использовать как в текущем приложении, так и в последующих.
    Вот я думаю как это лучше сделать. Если единственный нормальный вариант - библиотека, ну ok, будет библиотека. Но я хочу и другие варианты рассмотреть, какие - об этом и вопрос.
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    Jacen11, Не надо никого топить, это неконструктивно :) Я тут не для того чтобы отстаивать "неправильную позицию", я спрашиваю как сделать правильно.
    Не нравится слово "микросервисы"? Хорошо, давайте назовём части приложения "маленькими монолитиками". Надо ли делить приложение на части? Надо - т.к. они несут весьма разные функции и есть смысл разнести их по разным портам и прикрутить к каждому по собственному фронтенду. При этом разрабатывать, разворачивать, модернизировать каждую часть можно и нужно по отдельности, не затрагивая остальных.
    Надо ли пилить каждую часть на более мелкие части? Думаю - нет т.к. они действительно небольшие и функционально законченные.
    НО! Они все пользуются одной и той же БД, из которой "черпают" данные "общего назначения": юзеры, ассеты, события и пр. Плюс есть данные, специфичные для каждой конкретной части, они их получают всякими способами: своя БД, очереди, пользовательский ввод и пр.
    Вот я и хочу "общую часть" вынести куда-то отдельно. И спрашиваю как это принято делать: библиотека? модуль? сервис? Велосипед изобретать не хочу - поэтому и спрашиваю: как это делают обычно?
  • Подскажете по архитектуре "мультисервисного" приложения?

    @Wan-Derer Автор вопроса
    Dr. Bacon, Хорошо, назвал неправильно :) А как правильно делать подобные приложения?
  • Какие курсы выбрать по java?

    @Wan-Derer
    Здесь хорошо бы уточнить что именно не понравилось :)
  • Какие курсы выбрать по java?

    @Wan-Derer
    Илья, ну, фиг знает :) Я рекомендую то где можно научиться (сужу по себе).
  • Ошибка при запуске сервера на SpringMVC?

    @Wan-Derer
    kenan_999, Вряд ли тебе ответят предметно не видя кода (например, на гитхаб). А так, ошибка говорит что не может поднять Taймлиф. Наверно что-то напутал с аннотациями. Сделай ещё раз, строго по инструкции :)
  • Может ли приложение менять файлы внутри JAR?

    @Wan-Derer Автор вопроса
    Спасибо. Это моё приложение :)
    Но кажется, я уже нашёл способ избежать грязных хаков :)
  • Может ли приложение менять файлы внутри JAR?

    @Wan-Derer Автор вопроса
    Понятно что лучше. Но всё-таки: можно или нет? Давайте считать это академическим вопросом :)
  • Какие параметры передать в format в JAVA?

    @Wan-Derer
    Darya Boo, Когда ты пишешь код, ты его периодически запускаешь и проверяешь как он работает, подсовывая ему разные данные, проверяя нормальные условия и какие-нибудь ненормальные:
    - а что если придёт пустая строка?
    - а что если придёт вообще null?
    - а что если...........?
    @Test ты пишешь когда приложение уже более-менее готово и эти тесты должны выполниться автоматически при сборке приложения, т.е. если какой-то тест не прошёл - приложение не соберётся.
    Иногда наоборот - сначала пишут тесты, а потом сами "рабочие" классы. Но это когда приложение сначала спроектировано, т.е. заранее определена структура приложения, иерархия классов и функции каждого элемента.
    Тема автоматизированного тестирования - это отдельная наука, даже есть профессия - тестировщик. Хотя программисты этим тоже немного владеют :)