Задать вопрос
  • Как сделать так, что бы репозиторий был полностью независимым от внешней папки с Apache Tomcat?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Не делать такую зависимость. Обычно, пользователи приложений, предназначенных для разворачивания в web-контейнере, готовы к тому, что конфигурация сборщика будет только собирать артефакт, а деплоем они должны будут заниматься самостоятельно. Если стоит задача сделать софт, который будет запускаться сразу без деплоя, то можно использовать встроенный Tomcat или лучше даже Jetty.
    Ответ написан
  • Есть ли жизнь на Java (Бекенд) кроме Финтеха?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Востребован ли стек на новые проекты?

    Очень даже.

    И есть ли топовые (вплане зп) вакансии не в финтех?

    Есть и не мало. Финтеха просто больше.

    Причем везде идет Java 8, иногда Java 11 и комментарии ребят, что там работали - что какое-то копание в легаси без намека на светлое будущее.

    Там - это где? В РосСельхозБанке?
    Ответ написан
    Комментировать
  • Есть ли жизнь на Java (Бекенд) кроме Финтеха?

    @Akela_wolf
    Extreme Programmer
    Есть. Скажу лично про себя - работаю в сфере логистики, у нас в рантайме Java 11, а пишем мы на Kotlin. Стек вполне современный (некоторое количество легаси есть, но не слишком много).

    Еще точно знаю что СДЭК ищет Java-разработчиков, но больше про них ничего сказать не могу.
    Ответ написан
    Комментировать
  • Есть ли жизнь на Java (Бекенд) кроме Финтеха?

    Jacen11
    @Jacen11
    копание в легаси без намека на светлое будущее
    а вы значение слова легаси точно понимаете? не существует проектов без легаси в принципе

    Востребован ли стек на новые проекты?
    да

    И есть ли топовые (вплане зп) вакансии не в финтех?
    ну как бы да, но скорее нет. Изредка пара жирных вакансий на два десятка из финтеха

    Причем везде идет Java 8, иногда Java 11
    еще бывает java 4. Если вам не понятно почему нет 9, 10 версии и новее 11, то у меня большие вопросы к вашей компетенции

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

    @Akela_wolf
    Extreme Programmer
    Главная идея принципа инверсии зависимостей "детали зависят от абстракций, но не абстракции от деталей".
    В приведенном вами примере класс Main зависит от всего: от интерфейса INumberOperation и от обоих классов NumberOperation1, NumberOperation2. То есть тут принцип инверсии зависимостей вообще не работает. Никак.

    Проявляется же он в следующем примере. Пусть у меня есть некая абстрактная логика "прочитай число, выполни над ним операцию, запиши результат". Эта абстрактная логика (потому она и абстрактная) ничего не должна знать ни откуда она читает число, ни какую операцию над ним выполняет, ни куда и как записывает результат. Таким образом, у нас есть модуль, состоящий из
    interface NumberInput {
      int read();
    }
    interface NumberProcessor {
      int process(int a);
    }
    interface NumberOutput {
      void write(int a);
    }
    class Processor {
      private final NumberInput input;  
      private final NumberProcessor processor;
      private final NumberOutput output;
    
      public Processor(NumberInput input, NumberProcessor processor, NumberOutput output) {
        this.input = input;
        this.processor = processor;
        this.output = output;
      }
    
      void process() {
        output.write(processor.process(input.read()));
      }
    }

    Все. Модуль получился очень абстрактным и ни от кого никак не зависящим.
    Затем мы можем сделать реализации этих интерфейсов - они будут зависеть от нашего модуля логики (так как ссылаются на интерфейсы). И это полностью соответствует принципу инверсии зависимостей - детали зависят от абстракций.

    И наконец функция main, которая будет собирать все это в единое целое. Она самое конкретное что есть в нашей программе, так как она имеет дело с конкретными классами, экземпляры которых она создает. Поэтому она зависит от всех модулей - от модуля абстрактной логики и от модулей с реализациями интерфейсов. И тут принцип инверсии зависимостей тоже соблюдается - деталь (в какой именно конфигурации запускается программа) зависит от абстракции (абстрактная логики и конкретные реализации интерфейсов из которых выбирается именно та, которая будет использована)

    Этот принцип очень хорошо объяснен в книге Р.Мартина "Чистая архитектура", по крайней мере у меня все встало на свои места именно после прочтения этой книги.
    Ответ написан
    1 комментарий
  • Как безопасно изменить кодировку codepage консоли в Windows 10 или в JDK 1.8?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Найдите в интернетах этих, древнюю, как говно мамонта, статью "java, русские буквы и не только". Она таки актуальна, иногда еще.
    За вас поискал, не благодарите - citforum.ru/internet/javascript/java_rbint.shtml
    Ответ написан
    1 комментарий
  • Нужно ли везде использовать TypeScript? или это хайп?

    @Akela_wolf
    Extreme Programmer
    В пет-проектах вы можете использовать то что нравится лично вам. На то они и пет-проекты. Лично я обычно использую в пет-проектах то что хочу опробовать на практике, просто чтобы понять как с этим работать. В разное время это были Python, Typescript, Scala, Haskell, сейчас добрался до Kotlin Multiplatform.

    Если же говорить о целесообразности использования TypeScript - она есть. И начинает раскрываться на больших проектах, когда становится сложно уместить в голове все детали: что, где, и какого черта типа? Вот в таких случаях тайпскрипт и выручает. В том числе когда запутался в трех объектах и передал не тот тип - джаваскрипт свалится в рантайме (да и то может свалиться не всегда, а только когда звезды сойдутся), тайпскрипт не скомпилируется.

    Так что изучать этот язык на мой взгляд стоит. Использовать ли его в игрушечных проектах, не будет ли он там overkill - решать вам.
    Ответ написан
    Комментировать
  • Нужно ли везде использовать TypeScript? или это хайп?

    Xuxicheta
    @Xuxicheta
    инженер
    Нужно ли везде использовать TypeScript?

    ну видимо нет.

    или это хайп?

    нет

    Есть ли смысл использовать Typescript в пет проектах?

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

    типа создал мини игру 15 строчках кода на TypeScript?

    как хотите, ради 15 строчек мне было бы лень настраивать конфиг, но я бы точно писал всегда на ts если бы оно поддерживалось по дефолту.

    Или он только в крупных проектах нужен? и вообще все прям без него будто не могут писать судя по отзывам или это какойто хайп или реклама Microsoft

    еще раз. ts - удобнее и надежней.
    Ответ написан
    2 комментария
  • Как реализовать асихронность в telegram боте?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    1. Так же как и в любом другом приложении.
    2. Есть. Можно загуглить "Java async". Вот первый результат: https://www.baeldung.com/java-asynchronous-programming
    3. Всегда это будет отдельный поток (а как вы вообще себе представляетет асинхронное выполнение без многопоточности?!), но в современной джаве есть несколько вариантов, в которых вы вообще new Thread можете ниразу и не написать.
    Ответ написан
    1 комментарий
  • Как типизировать такой объект данных?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Нет, обобщенные типы можно использовать не только в функциях
    type SomeData<Data = any> = {
        data: Data[];
    }
    const a: SomeData<number> = {data: [1,2,3]};
    Ответ написан
    Комментировать
  • Меняют ли аннотации данные в коде?

    @Akela_wolf
    Extreme Programmer
    Давайте по порядку.

    Что такое аннотация? Аннотация - это некоторые произвольные метаданные, которые программист может присоединить к некоторому объекту. И только. Данные, ничего кроме. Никакого поведения сама по себе аннотация не добавляет.

    То есть аннотация ничего не делает? Да, именно так. Сама по себе аннотация ничего не делает.

    Тогда зачем она вообще нужна? Для того чтобы аннотация оказала какое-то влияние на программу нужен процессор аннотаций. Процессор аннотаций бывает двух видов: первый работает во время компиляции программы. И аннотации оказывают влияние именно на процесс компиляции. Это может повлиять на итоговой код программы, либо изменить логику работы компилятора, например, добавить какие-то дополнительные проверки.

    Второй вид процессоров аннотаций работает во время выполнения программы. Через механизм рефлексии он анализирует аннотации, которые добавил программист, и выполняет логику в соответствии с аннотации и содержащимися в них даннми. Так, например, работает Spring, который в соответствии с аннотациями @Service, @Scope, @Autowired, @Controller и т.п. инициализирует компоненты приложения и запускает его в нужной конфигурации.

    У Эккеля написано неточно (либо это неточный перевод, такое тоже часто бывает). Переменные никакого значения не получают, получает значение поле в аннотации (аннотация в Java - это тоже объект и тоже имеет поля). А затем уже процессор аннотаций значение этого поля как-то использует (в приведенном примере - устанавливает соответствие с колонкой в таблице базы данных соответствующего типа и, при необходимости, создает её).

    У Шилдта написано корректнее - сами по себе аннотации никак семантику программы не затрагивают, для того чтобы они заработали требуется дополнительный код.
    Ответ написан
    1 комментарий
  • Зачем нужны НЕ void методы?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Может для того, чтобы передавать значения другим, не?

    Верни мне из xxx() значение, чтоб передать его в другой метод.
    Например, в метод yyy(int value)
    Вызови метод yyy() и передай ему значение, которое ты получишь от xxx(), без дополнительной переменной

    Или возьми и получи данные метода LocalDateTime.now() - прикинь, это тоже метод и он не void

    P.S.
    Это откровенно глупый вопрос человека, который второй день видит программирование.
    Ответ написан
    5 комментариев
  • Как при помощи JpaRepository выполнить строку?

    @Akela_wolf
    Extreme Programmer
    То что вы пытаетесь сделать называется - SQL-injection. Почитайте для интереса сколько сайтов было взломано только потому что возможно было подставить какую-то строку в SQL-запрос и таким образом повлиять на его результат.

    Поэтому JPA (да и вообще Hibernate) вам этого не позволит. Да вам этого и не нужно. Сформулируйте нормально проблему, которую хотите решить и задайте другой вопрос - получите совет как сделать это без подобных извращений.
    Ответ написан
    Комментировать
  • Почему при сравнении 2-х хешей BCryptPasswordEncoder они могут не совпадать?

    @IchBinImmerFertig
    У меня была проблема в том, что при смены роли юзера менялся и пароль сам. Вот это помогло

    if (!user.getPassword().equals(userService.getById(user.getId()).getPassword())){
    user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
    }
    Ответ написан
    1 комментарий
  • Как исправить ошибки в программе "Побитовое шифрование"?

    @Akela_wolf
    Extreme Programmer
    Зачем вы извращаетесь со строкой alfa?
    Откройте для себя метод String.getBytes() и вообще разберитесь что такое кодировка символов.
    Ответ написан
    Комментировать
  • Стоит ли использовать разные DTO для Response и Creation объекта?

    Jacen11
    @Jacen11
    Стоит ли для этого создавать разные ДТО
    в больших проектах принято разделять, в личном можно и так, вряд ли проблемы словишь из за этого
    Ответ написан
    Комментировать
  • Для чего нужна область видимости scope?

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

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Животное a = Собака (новая);
    Ответ написан
    3 комментария
  • Как запускать код из разных файлов в одном package одновременно в java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    С помощью потоков, очевидно.
    Ответ написан
    Комментировать