• Spring Security не понимаю, как работает?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    А что если запрашиваемого пользователя не существует? Тогда что делать? как Spring-у сообщить что такого пользователя нет?

    Зачем Spring-y что-то сообщать? Если юзера нет, то будет выброшено исключение throws UsernameNotFoundException
    Или вас интересует что-то другое?
    Ответ написан
    4 комментария
  • Как выбрать направление развития, если все пытаются отговорить?

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


    Ну конечно))) Зачем вашему знакомому новый конкурент в этой сфере... Шутка.
    А если серьезно, то для начала определитесь с тем, что именно вас интересует, front, back, mobile etc. А дальше уже выбирайте ЯП. front - js (react, vuiJS, angular), back - java, C#, ruby, python (Spring, Play, RoR, Flask, django), mobile (kotlin, java, swift) и т.д.

    За 1 год вы можете здорово подтянуть знания по java и пойти джуном. Например, за 6 мес. можно пройти курсы по java fundamentals & java enterprise.

    Ну и подтяните html, css, javascript, sql
    Ответ написан
    Комментировать
  • Есть ли способ менять порядок блоков сверстанных с ACF?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Если вам нужно именно через ACF, то используйте ACF Repeater.
    В шаблоне выводите цикл согласно документации.
    ACF Repeater поддерживает перетаксивание блоков местами.

    Если в секциях должен быть разный контент, то можно чуть поизвращаться и вложить ACF flexible content в ACF Repeater. Однако, предупрежу, что разработчики иногда обновляют плагины без полной проверки и иногда подобная структура слетает...
    Ответ написан
    Комментировать
  • Роль продавца на сайте в одном экземпляре, как следить с помощью плагина и какого?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Если принципиально нужна форма добавления товара на фронте, то можете попробовать создать форму при помощи acf_form (плагин ACF). Также установить плагин WP Recall для личного кабинета. Далее по id пользователя проверять и если это он, то показывать ему эту страницу с формой. Ну а дальше он уже добавит товар.
    Другой вариант, если у него есть доступ к админке (например, он редактор), то при помощи плагинов для этого пользователя отключить все ненужные ему ф-ции и оставить парочку (добавить товар, страницу, запись и т.д.)
    Ответ написан
    Комментировать
  • Как поменять тип столбца в postgresql через spring boot?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Вы можете задавать length. Например,
    @Column (length = 2000)
    private String message;

    https://www.baeldung.com/jpa-size-length-column-di...
    или
    Использовать аннотацию @Lob
    https://www.baeldung.com/hibernate-lob
    Ответ написан
    Комментировать
  • Как зайти во внутреннию сылку сайта и парсить от туда данные?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    public class readAllLinks {
    Названия классов должны начинаться с заглавной буквы. Прочитайте про name convention

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

    Вы просто открыли главную страницу сайта и выбрали ВСЕ ссылки (тег а).
    Elements links = doc.select("a");

    Теперь вопрос как мне переходить по всем ссылкам сайта и забирать только информацию товара?

    Я бы сделал следующим образом. Вместо того, чтобы собирать все ссылки, я бы собрал ссылки на разделы (категории).

    5f7f96bf48139905711369.png
    Вот, селектор
    #categories .sub-menu-item .sub-menu-link
    Далее собираете их в какой-нибудь List

    Далее итерируете по этому списку и переходите по ссылке, также как и здесь
    doc = Jsoup.connect(url).userAgent("Mozilla").get();

    вместо url будет ссылка из листа спарсенная из меню (картинка выше)

    Страница каталога товаров имеет пагинацию.
    Например, https://al-style.kz/catalog/mobilnye_telefony/
    5f7f97fc965ae322761133.png

    Смотрим, как работает пагинация
    https://al-style.kz/catalog/mobilnye_telefony/
    https://al-style.kz/catalog/mobilnye_telefony/?PAGEN_1=2
    ?PAGEN_1={pageNum}

    По факту к урл добавляется query param, который инкрементируется, а значит после того, как мы перешли на страницу категории, мы для каждой категории добавляем этот параметр и инкрементируем его значение до тех пор, пока страницы не закончатся. В зависимости от сайта можно по-разному проверять есть ли страница или нет.
    Например, проверить просматривется ли или существует ли тот или иной блок.

    Далее на каждой странице находим блоки (карточки товара).
    Вот, селектор:
    .elements .element
    5f7f99505660f300295427.png

    Находим селектор ссылки и сохраняем тоже в отдельный List
    .elements .element .link
    После того, как постранично прошлись по категории и собрали список всех ссылок карточек товара итерируем по этому списку и также открываем эти ссылки.

    Т.е. страницу самого товара - например, https://al-style.kz/catalog/mobilnye_telefony/mobi...

    Ну а дальше остается собрать данные при помощи в селекторов, сохранить в pojo (например, Product ) и экспортировать куда-нибудь.

    Для экспорта в xlsx можно использовать Apache POI
    Ответ написан
    2 комментария
  • Можно ли создать такой сайт на Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можно ли создать сайт для вакансий на WordPress

    Да, можно. Есть куча плагинов.

    добавлять(за деньги) и смотреть вакансии

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

    вакансии отображаются на главной странице

    да, где угодно...

    сортировка вакансий по городам

    вроде, встречал в какой-то из плагинов...

    регистрация

    конечно, не без этого

    Вот, эти разработчики предлагают готовые решения (тема + плагины) для реализации подобных задач.
    Сайт вакансий
    https://www.appthemes.com/themes/jobroller/
    Сайт объявлений (Демо)
    https://www.appthemes.com/themes/classipress/
    Фриланс биржа
    https://www.appthemes.com/themes/taskerr/
    https://www.appthemes.com/themes/hirebee/
    Ответ написан
    Комментировать
  • Как посадить готовую верстку на wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Вопрос скорее должен звучать, так: "Как создать тему для WordPress из верстки?"
    Тут все зависит от бюджета проекта и ваших целей...

    Хотите продавать тему в дальнейшем на themeforest или бюджет проекта позволяет или же по желанию клиента (согласно ТЗ), то подключайте фреймворк. Например, redux
    https://ru.wordpress.org/plugins/redux-framework/

    Если хотите сделать все стандартно согласно кодексу ВП, то читайте про Theme Customization API
    https://codex.wordpress.org/Theme_Customization_API

    Ну а если нужно быстро и дешево, то плагины ACF Pro, Carbon Fields и т.д. помогут в этом

    Ну а основы разработки темы изучите тут:
    https://codex.wordpress.org/Theme_Development
    Ответ написан
    Комментировать
  • Как работать с файлами дочерней темы в Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    После того, как вы создали дочернюю тему, то вы можете скопировать нужные шаблоны из родительской и добавить их в дочернюю (с соблюдением вложенности). Например, если что-то лежит в определенной директории родительской темы, то нужно создать такую же директорию в дочерней.
    Если речь идет о шаблонах плагина Woocommerce, то их директории templates этого плагина шаблоны закидываем в созданную директорию woocommerce в дочерней теме и т.д.

    В сети куча статей на эту тему, но ни в одной нет нормального объяснения, что делать с файлами.

    В общем, в инете куча туториалов на самом деле.

    Если в родительской теме есть файл, НАПРИМЕР, tum.php с кодом чисто от темы и внесённым вручную кодом, надо скопировать этот файл, убрать из него код чисто от темы и положить в дочернюю?

    Вы копируете шаблон из родительской темы. Можете отредактировать нужные части, но например, вам и в дочерней теме нужен будет header & footer. Соответственно, get_header() get_footer() оставляем и т.д. Все зависит от шаблона и от темы...

    В загруженной мной дочерней есть всего два файла - style.css и functions.php - а с ними как быть? Копировать аналоги из родительской с заменой?

    Не нужно содержимое functions & style из родительской темы копировать. Они и так подхватятся. В дочерней вы можете наоборот при помози хука отключить какой-то функционал из род. темы и т.д.
    Ответ написан
    4 комментария
  • Почему пропали стили при переносе сайта Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Сделаю смелое предположение, что в БД вы вручную (автозаменой в блокноте) сменили урлы и импортировали, тем самым нарушили возможные сериализованные данные.
    Решение - импортировать БД и корректным образом обновить урлы, не вручную!
    Ответ написан
  • Как напимер работать с api вконтакте или другими сервисами использующими Basik Autentification?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Для работы с API других сайтов вы можете использовать RestTemplate.
    В статье описано, как с ним работать. Как слать POST GET и др. запросы. Как получать ответы и как этот ответ разобрать в pojo
    https://www.baeldung.com/rest-template

    Вот, например, реализованный метод для получения статуса сервиса hotelbeds
    public HttpStatus getStatus() {
            RestTemplate restTemplate = new RestTemplate();
            HttpEntity httpEntity = new HttpEntity(hotelbedsAuth.hotelsAuth());
            ResponseEntity<String> response = restTemplate.exchange(
                    hotelbedsProperties.getHotelBaseUrl()+"/status", HttpMethod.GET, httpEntity, String.class);
            return response.getStatusCode();
    }

    В общем, прочитайте про RestTemplate.

    Once the bearer token expires, you will have to use Basic Authorization again to obtain a new bearer token.

    Тут вы можете использовать CRON или аннотацию @Scheduled, чтобы по крону в заданный интервал времени запускать метод по обновлению токена

    https://www.baeldung.com/spring-scheduled-tasks
    Ответ написан
    1 комментарий
  • Как вывести продукты и количество каждого из них в заказе? Например: молоко купили 3 раза, сыр 1 раз. Как такое сделать?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Напишите для начала, что именно вы пробовали и что у вас не получилось.
    public class Main {
    public static void main(String[] args) {
    
    }
    }


    Ответ на этот вопрос схож с ответом на предыдущий ваш вопрос. Посмотрите на ответ предыдущего ответа. Сгенерируйте геттеры и сеттеры.
    Далее получаете массив продуктов, а далее итерируете по нему.
    Ответ написан
  • Как вывести вложенный массив по шаблону конструктора?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    Вы забыли создать геттер для Student[] students Геттером получаете массив и циклом for итерируете по нему

    public class Group {
    
        private String name;
        private Student[] students;
    
        public Group(String name, Student[]students ) {
            this.name = name;
            this.students = students;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Student[] getStudents() {
            return students;
        }
    
        public void setStudents(Student[] students) {
            this.students = students;
        }
    
    }
    
    class Student {
    
        private String name;
        private int age;
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
        
    }
    
    class Test {
    
      public static void main(String[] args) {
    
          Group group1 = new Group("KIT-25", new Student[]{
                  new Student("Max", 20),
                  new Student("Misha", 21),
                  new Student("Vitya", 19),
                  new Student("Alyona", 20),
                  new Student("Ira", 19)
          });
    
          // Вариант №1
          for (Student student : group1.getStudents()) {
            System.out.println(student.getName());
          }
    
          // Вариант №2 (Stream API)
          Arrays.stream(group1.getStudents()).forEach(System.out::println);
    
      }
    
    }
    Ответ написан
    1 комментарий
  • Как в Spring из FilterChain отправить ModelAndView?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Думаю, что вот тут ответ на ваш вопрос -
    https://stackoverflow.com/questions/3616763/settin...
    В частности:
    i think this is not possible, because this is a servlet filter, which would be applied after the spring request mapper servlet was applied. so basically, the request mapper servlet thinks it is finished, and passes the request back to the servlet container.
    view names only work INSIDE of spring - outside of spring, in the servlet container, you will have to talk about urls, not view names.
    Ответ написан
    Комментировать
  • Какой можно использовать плагин для masorny галереи для WP?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можете попробовать Essential Grid.
    https://www.youtube.com/watch?v=hefXPZ-NR6g
    https://www.themepunch.com/essgrid-doc/core-anatom...

    А на jquery вообще куча подобных плагинов...
    https://masonry.desandro.com/
    Гуглим
    Чтобы реализовать на js, установите плагин ACF. Используйте такие компоненты, как ACF repeater или ACF Gallery. Ну и добавьте понравившийся скрипт в шаблон для вывода изображений
    Ответ написан
    Комментировать
  • Стоит ли мне продолжать учиться разработке?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    2 недели назад начал учить java по одной из книг "для чайников", проще говоря самые основы. Чувствую что мне это нравится, но замечаю что в упражнениях делаю откровенно глупые ошибки в коде - "{" не в ту сторону ";" забыл поставить, "int" не написал перед объявлением переменной. Обычно до того, как в дело включается компилятор подвоха не замечаю, даже при проверке кода своими глазами. Это сильно бьёт по самооценке и ставит под вопрос мои интеллектуальные способности.

    Все мы спотыкались... в этом нет ничего страшного. Со временем все придет)

    Как это лечится?

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

    Получится ли у меня стать хорошим разработчиком, если я начинаю свой путь в it с такими проблемами?

    Даже не сомневайтесь. Все получится. У каждого из нас бывают взлеты и падения, каждый из нас спотыкается (даже профессионал).
    В IT есть фраза, если код сработал с первого раза, то значит, что-то не так))

    Мне 28 лет, пол мужской, программистом никогда не был (на случай, если это поможет ответить на вопросы).

    Мне тоже 28 лет, сам не программист, изучаю разработку на Java, тоже мужского пола, если это поможет вам не падать духом и просто усердно заниматься)))
    Ответ написан
    Комментировать
  • Как сохранить связь категорий с постами в переносе сайтов с джумлы на вордпрес в FG Joomla to WordPress?

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

    Когда-то давно использовал этот плагин и он штатно отработал перенеся записи с их связями.
    Возможно, что есть некий баг в плагине или вы некорректно настроили его для переноса. В этом случае можете попробовать перенести материалы другим способом. Например, написать свой парсер или как вариант на Joomla установить плагин для экспорта и создать xlsx, а уже в WordPress при помощи WP All Import импортировать.
    Я например, чтобы не вникать в особенности всех CMS при необходимости пишу парсер материалов, собираю их в xlsx Или импортирую напрямую в ВП через REST API
    Ответ написан
    Комментировать
  • Как в Spring Security переименовать таблицу mysql "persistent_logins"?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Нуу... как по мне тут довольно ясно говорится о том, что нужно сделать.
    Создайте класс и расширьте класс JdbcDaoSupport. Затем имплементируйте класс PersistentTokenRepository. Используйте этот класс, как spring bean.
    Далее в конфигах пропишите этот класс в атрибуте - token-repository-ref
    Ответ написан
    Комментировать
  • Существует ли плагин для wordpress - чтобы посетители сайта могли отмечать места на карте?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день. Используйте плагин ACF (или ACF Pro). В нем есть поле Google Map. Возможность добавления метки с фронта имеется
    Ответ написан
    Комментировать
  • Spring application.properties как сделать?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Здравствуйте!
    Запросто...
    1) Создайте класс например,
    @Configuration
    @ConfigurationProperties(prefix = "custom")
    public class AppProperties {
    
    // названия полей должны соответствовать названиям из properties. 
    private String baseUrl;
    private String uploadPath;
    
    // тут геттеры 
    }


    А вот, пример application.properties
    custom.base_url=http://localhost:8080
    custom.upload_path=/home/example.com/uploads


    Spring сам уже связывает base_url к baseUrl и т.д.
    Единственное, @ConfigurationProperties(prefix = "custom")
    тут в prefix укажите тот префикс, который вам нужен. Т.е. тут custom.base_url custom является префиксом.

    Подробности тут - https://www.baeldung.com/configuration-properties-...
    Ответ написан
    3 комментария