• Как подключить два монитора к Apple MacBook Pro 14 M1 Pro?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день
    Недавно как раз гуглил. Готов поделиться ссылками
    https://support.apple.com/kb/SP854?viewlocale=en_U...
    https://www.macbookproslow.com/how-to-connect-two-...
    https://www.macworld.com/article/675869/how-to-con...
    Ответ написан
    Комментировать
  • Как перенаправлять авторизованных пользователей на домашнюю страницу?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Давно писал вот, такой код.
    Должен сработать.

    @GetMapping("/")
      public String homepage(Model model) {
    
        // Проверяем авторизован ли пользователь и если авторизован, то редиректим его в /dashboard
        if (SecurityContextHolder.getContext().getAuthentication() != null
            && SecurityContextHolder.getContext().getAuthentication().isAuthenticated()
            && !(SecurityContextHolder.getContext().getAuthentication()
                instanceof AnonymousAuthenticationToken)) {
    
          return "redirect:/dashboard";
        }
    
        return "index";
      }
    Ответ написан
    2 комментария
  • Почему в Spring Security роли нужно писать с приставкой ROLE?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    На самом деле необязательно писать ROLE_
    Все зависит от метода, который вы используете. Если используете hasAuthority, то при проверке вам нужно к роли добавить ROLE. Например, hasAuthority("ROLE_ADMIN") Если же используете hasRole("ADMIN")
    Role является разновидностью authority
    Ответ написан
    Комментировать
  • Какую книгу взять новичку в разработке микросервисов на Spring Framework?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если хотите быстро войти в курс дела, то можете глянуть курсы на Udemy.
    Например, у Сергея Каргополова есть курс по микросервисам на английском. А так разумеется, что для академических знаний книга не помещает.

    `Java в Облаке Джоша Лонга` не рекомендую. Это скорее даже рекламная книжка компании Pivotal, нежели что-то академическое.

    Микросервисы spring в действии. можно прочитать
    Ответ написан
    2 комментария
  • Оффлайн карта с открытым исходным кодом?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    ну скажем так...
    OSM + вам нужны экстракты данных - https://download.geofabrik.de/
    Ответ написан
    Комментировать
  • Hibernate не видит entity. Как пофиксить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый вечер.
    А кто пропишет в файл конфигурации, что этот класс является entity?)

    Обратите внимание на эту строку -
    <mapping class="hibernate.entity.User"/>

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="connection.url">jdbc:mysql://localhost:3306/spring_course</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.username">root</property>
            <property name="connection.password">springcourse</property>
            <property name="current_session_context_class">thread</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">true</property>
           
             <mapping class="hibernate.entity.User"/>
        </session-factory>
    </hibernate-configuration>
    Ответ написан
  • Hibernate не видит entity?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Недавно столкнулся с похожей ситуацией, когда один и тот же проект работал на моем ноуте, а в ноуте коллеги нет. Там правда, была проблема в rabbitmq.
    Как именно вы поднимаете БД? Если в докере, то попробуйте разные образы. Проверьте создается ли БД, есть ли нужные привилегии у пользователя и т.д. Может быть проблема даже не в коде...
    Ответ написан
    Комментировать
  • Как вносить изменения в шаблон страницы без перезагрузки томкат?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Установите live reload

    https://chrome.google.com/webstore/detail/liverelo...
    https://addons.mozilla.org/ru/firefox/addon/live-r...
    https://addons.mozilla.org/ru/firefox/addon/livere...

    И включите возможность в İDE (по ссылке ниже есть инструкция для intellij idea)
    https://stackoverflow.com/questions/33349456/how-t...
    Ответ написан
    Комментировать
  • Как сохранить разметку текста при конвертации в HTML?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    не знаю поможет ли вам это...
    Вот, например, если используете JSOUP, то выбрав элемент вы можете скинуть в этот метод и он сохранит форматирование текста
    public class HtmlToPlainText {
    
        public static String getPlainText(Element element) {
            FormattingVisitor formatter = new FormattingVisitor();
            NodeTraversor.traverse(formatter, element); // walk the DOM, and call .head() and .tail() for each node
    
            return formatter.toString();
        }
    
        private static class FormattingVisitor implements NodeVisitor {
            private static final int maxWidth = 80;
            private int width = 0;
            private StringBuilder accum = new StringBuilder(); // holds the accumulated text
    
            // hit when the node is first seen
            public void head(Node node, int depth) {
                String name = node.nodeName();
                if (node instanceof TextNode)
                    append(((TextNode) node).text()); // TextNodes carry all user-readable text in the DOM.
                else if (name.equals("li"))
                    append("\n * ");
                else if (name.equals("dt"))
                    append("  ");
                else if (StringUtil.in(name, "p", "h1", "h2", "h3", "h4", "h5", "tr"))
                    append("\n");
            }
    
            // hit when all of the node's children (if any) have been visited
            public void tail(Node node, int depth) {
                String name = node.nodeName();
                if (StringUtil.in(name, "br", "dd", "dt", "p", "h1", "h2", "h3", "h4", "h5"))
                    append("\n");
                else if (name.equals("a"))
                    append(String.format(" <%s>", node.absUrl("href")));
            }
    
            // appends text to the string builder with a simple word wrap method
            private void append(String text) {
                if (text.startsWith("\n"))
                    width = 0; // reset counter if starts with a newline. only from formats above, not in natural text
                if (text.equals(" ") &&
                        (accum.length() == 0 || StringUtil.in(accum.substring(accum.length() - 1), " ", "\n")))
                    return; // don't accumulate long runs of empty spaces
    
                if (text.length() + width > maxWidth) { // won't fit, needs to wrap
                    String[] words = text.split("\\s+");
                    for (int i = 0; i < words.length; i++) {
                        String word = words[i];
                        boolean last = i == words.length - 1;
                        if (!last) // insert a space if not the last word
                            word = word + " ";
                        if (word.length() + width > maxWidth) { // wrap and reset counter
                            accum.append("\n").append(word);
                            width = word.length();
                        } else {
                            accum.append(word);
                            width += word.length();
                        }
                    }
                } else { // fits as is, without need to wrap text
                    accum.append(text);
                    width += text.length();
                }
            }
    
            @Override
            public String toString() {
                return accum.toString();
            }
        }
    
    }
    Ответ написан
    Комментировать
  • Как оптимизировать задачу?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Может быть есть смысл подключить spring batch или spring quartz? И обрабатывать параллельно
    Ответ написан
  • При считывании отображаются пустые поля?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Ну, во-первых, вы можете использовать try-with-resources вместо try-catch.
    Во-вторых, стрим гораздо лучше закрывать в finally блоке, если решили все же использовать try catch
    В-третьих, лучше писать в логи те эксепшены FileNotFoundException и IOException
    В-четвертых, вы закрываете ObjectInputStream, но не FileInputStream (а надо бы)
    Теперь, по существу - предположу, что вы Contact contact = new Contact("", "", "", 0);
    Можно гораздо лучше написать данный участок кода. Например, считывать данные и если null, то используя класс Optional создавать новый пустой объект (или не создавать вовсе).
    Было бы неплохо, выложить содержимое вашего файла Contact.txt, чтобы иметь представление о том, как именно хранятся данные в файле. Как вы его читаете. Нужно ли их как-то разделять и т.д.
    Ответ написан
    Комментировать
  • Как почитать строку в java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    На самом деле можно по-разному реализовать ваш функционал.
    Все зависит от того, насколько глубоко вы хотите копнуть...
    Если вы только изучаете java, а судя по методу main, это так и есть, то коллега вам уже подсказал.
    А так можно например, глянуть в сторону постфиксных операторов https://stackoverflow.com/questions/12269191/postf...
    Или например, реализовать паттерн интерпретатор для реализации функционала калькулятора и т.д. В общем, вариантов куча
    Ответ написан
    1 комментарий
  • Если в API ArrayList поддерживает сериализацию, нужно в самом классе ставить implements Serializable?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Элементы, которые должны быть сериализованы должны имплементировать интерфейс Serializable
    Если вы пишете кастомную реализацию интерфейса list и т.д., то нет необходимости имплементировать интерфейс Serializable

    Что касается DAO, как отметил коллега, он реализуется иным способом и обычно, предоставляет методы для работы с БД.
    Ответ написан
    Комментировать
  • Как ускорить процесс получения большого объема данных?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Проблему решил путем применения Spring Batch.
    Ответ написан
    Комментировать
  • Как вернуть maven в intellij idea?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Maven может поставляться вместе с программой в виде одноименного плагина или же может быть установлен отдельно, но при этом необходимо будет в настройках указать путь расположения к нему.
    Если решите установить отдельно, то рекомендую использовать sdkman. Он как раз поддерживается на устройствах мак и линукс. Ну и обновите плагин или сам софт полностью
    Ответ написан
    Комментировать
  • Почему не выводит метод say?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    public String say(String something) {
            return "Ты чё не знаешь, что рыбы не разговаривают?";
        }


    Fish myFish = new Fish();
            myFish.say("Привет");


    Обратите внимание, что метод возвращает переданное значение через return в место вызова метода. Вот, только вы ее не выводите в консоль и не присваиваете к переменной

    попробуйте
    Fish myFish = new Fish();
    String fishSay = myFish.say("Привет");
    System.out.println(fishSay);
    Ответ написан
    Комментировать
  • Есть ли инструменты для отслеживание памяти для Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Доброго времени суток.
    Есть много разных инструментов, в том числе, как коллега подсказал visualVM.
    Если используете İntellij İDEA, то в него встроены некоторые инструменты для профайлинга.
    Если вам необходимо провести удаленный профайлинг, то можете еще воспользоваться возможностями удаленного дебага (Intellij IDEA -> Remote JVM debug)
    Ответ написан
    Комментировать
  • Какой инструмент-конструктор выбрать для разработки UI для REST API?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Может быть vaadin подойдет вам?
    Thymeleaf не подойдет, ибо это шаблонизатор для разработки MVC приложений.
    Если postman & swagger не подходят и вы не хотите писать отдельный фронт на reactç angular etc., то стоит посмотреть в сторону Vaadin
    Ответ написан
  • Зачем нужен WebFlux?

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

    Пока не вижу кейсов, при которых не хватало SpringBoot, либо MicroProfile-фреймворков.

    Уж поверьте, когда понадобится, тогда увидите нужные кейсы.

    Мне например, приходилось разрабатывать приложение, который на вход принимает огромное количество точек (более 1000), строит маршруты и возвращает инструкции. Тав вот, асинхронно (flux) я возвращал данные по мере готовности. А если вы работаете с БД, то можете вместо jdbc подключить r2dbc.
    Ответ написан
    Комментировать