• Counter на php для выдачи файлов из директории?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Может можно обойтись без php?

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

    Карточки появляются через цикл в кастомных полях wp

    Вам нужно инициализировать переменную вне цикла. Например. $i = 0;
    Затем внутри цикла необходимо инкрементировать переменную $i++;

    Ну и значение переменной подставить в поле

    Примерно как-то так:
    <a href="<?php echo esc_url( get_template_directory_uri() ); ?>/hhhh/<?php $i.'.pdf'?>" class="about-item__btn btn" download></a>
    Ответ написан
    Комментировать
  • Как связать два отношения правильно в java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Отвечу исходя из вашего второго вопроса, на который я уже написал ответ:

    @Entity
    @Table(name = "category")
    @Data
    public class Category {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
        private String name;
    
        @Column(length = 1000)
        private String description;
    
        @ManyToMany(mappedBy = "categoryList")
        private List<Product> productList;
    }


    @Entity
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Product {
    
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Long id;
    	private String name;
    
    	@Column(length = 1000)
    	private String description;
    
    	private double price;
    
    
    	@ManyToMany(fetch = FetchType.LAZY, cascade = {
    			CascadeType.PERSIST,
    			CascadeType.MERGE
    	})
    	@JoinTable(name = "product_categories",
    				joinColumns = @JoinColumn(name = "product_id"),
    				inverseJoinColumns = @JoinColumn(name = "category_id"))
    	private List<Category> categoryList;
    
    }


    Полезная информация - https://vladmihalcea.com/the-best-way-to-use-the-m...
    Ответ написан
    Комментировать
  • Как в Spring правильно создавать и инжектить сервисы?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    1. Это нормально?

    Да, нормально. Вообще, наличие сервисного слоя для реализации бизнес-логики необходимо. В сервисном слое вы можете валидировать dto, конвертировать dto <-> model, а также описывать любую бизнес-логику.
    2. Почему инжектится "исходный" интерфейс?

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

    Зачем создаётся EmailServiceImpl, если он не используется? Он ведь не используется?

    Конечно же используется. Во время работы происходит примерно следующее:
    private EmailService emailService = new EmailServiceImpl();


    Тут какая-то хитрая магия Spring? Он видит, что есть ИмяИнтерфейсаImpl и учитывает это в процессе? Как это работает?

    Как я и сказал выше, если у интерфейса несколько реализаций, то необходимо уточнить название бина, который должен заинжекчен. Ну а если у интерфейса одна реализация, то конечно же она и будет автоматически взята.

    Как правильно в Spring создавать интерфейсы и правильно их инжектить?

    Собственно говоря, создайте нужный интерфейс. Затем имплементируйте данный интерфейс. В классах (контроллерах или еще где-то) используйте сам интерфейс для создания слабых связей.
    А сприн сам "решит" какую реализацию подключать, ну или же укажите название бина, который нужно заинжектить.
    Ответ написан
    5 комментариев
  • Как удалить всплывающее окно подтвердите действие на сайте?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый вечер.
    Said927, если вкратце, то вам нужно найти что-то что блокирует сабмит содержимого формы на уровне js кода. Где-то есть строка с preventDefault(), которая блокирует сабмит и делает alert() и ждет действий со стороны пользователя.
    Скрипт, который это делает находится по пути wp-content/themes/elki24/js/common.js
    В частности вот, сам скрипт:
    function(event) {
      alert();
      $(".wpcf7").on('wpcf7:mailsent', function(event) {
        // Your code here
        //alert('ERROR');
        function close() {
          //alert();
          $('.modal-wrapper').css('display', 'none');
          $('.modal-overlay').fadeOut(400);
        }
        //document.write(document.location.href = 'https://xn---24-qddplg.xn--p1ai/order-received/';)
        var url = "https://xn---24-qddplg.xn--p1ai/order-received/";
        //$(location).attr('href',url);
        location.href = url;
        //var text = '<div role="form" class="wpcf7" id="wpcf7-f231-o1" lang="ru-RU" dir="ltr"><div class="screen-reader-response" aria-live="polite"></div><div class="modal__title">Заказ оформлен!</div><p align="center"><img src="/wp-content/themes/elki24/img/icon_success.png" alt=""></p><p class="modal__subtitle">Менеджеры компании с радостью перезвонят Вам в ближайшее время</p><!--<p><input type="button" value="Закрыть" class="wpcf7-form-control wpcf7-submit modal-btn"><span class="ajax-loader"></span></p>--><div class="wpcf7-response-output wpcf7-display-none" aria-hidden="true"></div><br><br></div>';
        //$(".modal__inner").html(text);
    
      });
    }

    Как видите, там есть alert();
    Ответ написан
  • Как правильнее обработать кастомное исключение в Spring MVC?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый вечер.
    1) Прежде всего - вместо скриншотов добавляйте сниппеты кода. Если например, придется вносить правки в ваш код, то что прикажете делать? Не перепечатывать же его со скрина.
    2) Проверку на дубликаты и др. логику лучше перекинуть на сервисный слой.
    Например, некий CategoryService, где обрабатывается бизнес логика, а затем в сервисном слое вызываются методы CategoryDao
    3)
    Насколько ок завязываться на логике выброшеного исключения?

    Выбрасывайте свое кастомное исключение в сервисном слое. Например, DuplicateRecordExistsException, RecordExistsException или что-то типа такого.
    Далее ловите данное исключение на уровне контроллера или controllerAdvice. А затем уже на основе выбрасываемого исключения отдавайте на клиент сообщение с http статусом. Например,
    наличие дубликата это ошибка на клиенте. Соответсвенно, код ошибки 4xx (например, 400). Сообщение ошибки - Запись существует.
    Прочитайте вот это - https://spring.io/blog/2013/11/01/exception-handli...
    Обратите внимание на
    @ExceptionHandler
    а также вот, эту главу - Global Exception Handling Using @ControllerAdvice Classes
    Ответ написан
    Комментировать
  • Что лучше купить для комфортной работы программистом: Makbook Pro 13" 8gb или Makbook Air 13" 16gb?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Начнем с простого - выбор ОС. Прежде всего отмечу, то выбирая MacBook вы привязываете себя к MacOS, а значит, работать нужно будет именно с этой ОС. Отсюда сразу напрашивается первый вопрос - в какой ОС девушка лучше работает? Это должно быть одним из решающих факторов, ибо переход на другую ОС не всегда происходит без сучка и задоринки. Если она работала раньше с Windows, то и железо соответственно, должно быть подходящее. Под знакомой ОС разработчик работает продуктивнее...
    Я например, раньше работал в Windows, но уже несколько лет как работаю на Linux и он меня многим устраивает, в том числе и в плане продуктивности. К тому же как отметили коллеги, с учетом дороговизны железа Apple, можно на первую пору взять что-то от других производителей.
    Что касается Apple и в частности, MacBook, то:
    1) для разработки нужно 16 гб (8гб откровенно говоря маловато). Соответственно, берите либо MacBook Pro 16 gb, либо MacBook Air 16 gb. Надеюсь, не стоит говорить о том, что стоит брать модели от 2020 года с процессором Apple M1.
    2) для разработки оба модели имеют маленький экран. Извините, но 13 дюймов маловато. Отсюда вытекает следующий совет - подумайте над созданием док. станции с подключаемым внешним монитором / мониторами. P.S. Вы наверняка видели MacBook Pro 16", но с учетом того, что он работает не на M1, то брать его наверное и не стоит. Можно подождать, когда они выпустят другой чип что-то типа m2 или еще что... но не факт.

    И так как я понимаю, что скорее всего придется покупать Air 16gb, может кто знает, будет ли мак перегреваться при пассивном охлаждении в игре Genshin Impact?

    Скажу так - не стоит рассматривать ОС MacOS & Linux для гейминга.

    Или возможно стоит рассмотреть более ранние Pro версии, например 19 года? Но как я понял M1 дает слишком большой прирост ко всему.

    По той же цене, а скорее всего даже дешевле вы найдете других производителей с каким-нибудь intel core i9 или amd ryzen 9, а если установите OC Linux, то особой разницы между маком и не заметите)) (шутка).
    Ответ написан
    1 комментарий
  • Как правильно присвоить значение объекту в thymleaf?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Во-первых, убедитесь в том, что указанная строка что-то возвращает. Добавьте точку остановки и гляньте есть ли список категорий
    List<Category> category = categoryService.getAll();


    Точно не уверен, но могут ли названия двух полей, как-то конфликтовать?! Надо бы этот момент проверить.
    th:field="*{category}"
    Попробуйте в блоке ниже сменить category : на что-нибудь другое. Например, cat и соответственно, смените его в соответствующих строках тоже.
    <option th:each="category : ${categoryList}" value="${category.id}"
                                    th:text="${product.category}"></option>



    Вы имеете ввиду вот, тут не присваивается? th:text="${product.category}"
    Если да, то он и не будет присвоен, ибо в данном случае вы лишь получаете значение product.category, а так как product новый: Product product = new Product();, то и присвоенной категории для него тоже не будет.
    Ответ написан
  • Как понять работают все links в футере?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можно получить HTTP статус этих ссылок.

    Вот, простой пример (указанный ниже код можно сократить и упростить):
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class URLChecker {
    
      public static int checkUrl(String currentUrl) {
        URL checkUrl = null;
        HttpURLConnection http = null;
        int statusCode = 0;
        try {
          checkUrl = new URL(currentUrl);
        } catch (MalformedURLException e) {
          e.printStackTrace();
        }
        try {
          if (checkUrl != null) {
            http = (HttpURLConnection)checkUrl.openConnection();
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
        try {
          if (http != null) {
            statusCode = http.getResponseCode();
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
        return statusCode;
      }
    }

    А дальше проверяете статус ссылки и если он равен 200, то все ок. А если нет, то значит ссылка нерабочая.
    Ответ написан
    Комментировать
  • Почему не запускается чистый Maven проект?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый вечер. Давайте попробуем разобраться.

    Если вам не нужны плагины, то вы можете их удалить.
    <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.1.2</version>
            </plugin>
        </plugins>


    Для maven это норм такой геморрой?:)

    Нет конечно же. Просто вы решили начать изучать Java и сразу же решили взяться за Maven. Можно было для начала изучить сам язык, а затем изучить системы сборки, но это уже ваше дело)


    Error injecting: org.apache.maven.report.projectinfo.CiManagementReport
    java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent

    Вот, полезная информация:
    This is caused by maven-project-info-reports-plugin updated to 3.0.0, and rely on doxia-site-renderer 1.8 (and have org.apache.maven.doxia.siterenderer.DocumentContent this class), but maven-site-plugin:3.3 rely on doxia-site-renderer:1.4 (and do not have org.apache.maven.doxia.siterenderer.DocumentContent)

    https://stackoverflow.com/questions/51091539/maven...

    Для быстрого старта проекта вы можете использовать архетипы. В частности ищите архетип maven quickstart
    Скрин - https://i.imgur.com/tPVfFH9.png

    Попробуйте вышеуказанные решения, а затем отпишитесь. Также вы можете выложить исходник вашего проекта на гитхаб и скинуть ссылку.
    Ответ написан
    4 комментария
  • Какие знания нужны для взлома мобильной игры?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Ну во-первых, чтобы взломать клиентскую часть игры вам нужно изучить язык, на котором написана данная игра. Так как это фреймворк Unity, то скорее всего вам нужен язык C#.
    Далее вам нужно изучить реверс-инженеринг. Грубо говоря, вам нужно собранный apk игры декомпилировать, найти нужные строки, изменить их по своему усмотрению, а затем собрать новый apk. Тут вам скорее понадобится владение Java.
    Во-вторых, все современные игры синхронизируются с сервером, а значит, вам нужно взломать не только клиентскую часть, но и серверную часть тоже. Тут уже нужны совсем другие навыки. Например, вам нужно знание принципов работы сетей, владение языками рнр или пайтон, быть знакомыми с sql эксплоитами и xss атаками и т.д. В общем, как по мне это все выходит за рамки правил данного сервиса и далее нет смысла это все описывать. Ищите специализированные форумы, где вам могут подсказать или помочь.
    Ответ написан
    Комментировать
  • Делают ли MarketPlace на Java Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Микросервисы могут быть разработаны на разных языках и необязательно, чтобы они все были на одном языке. К тому же скорее всего вы это все разворачиваете при помощи докера, что безусловно упрощает процесс развертывания.
    В каком случае есть смысл переписать e-commerce продукт на Java ?

    В том случае, когда в вашем штате есть Java разработчик. И в том случае, когда содержать в штате других разработчиков обходится дорого.
    Наверное, можно попробовать собрать штат из js разработчиков, чтобы они пилили и фронт и бэк, но особого смысла это тоже не даст.

    Пока планируется переписать на фреймворк Symfony ( php ) с laravel для улучшения архитектуры приложения.

    Не вижу смысла потом переходить на Spring.

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

    Spring и Java со всем этим легко справляются. Но на Symfony тоже возможна реализация микросервисов. Так что выбирайте то, что вам дешевле обойдется и в плане разработки и в плане поддержки, развертывания и т.д.
    Ответ написан
    Комментировать
  • Как сделать редактор текста todo list?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Все довольно просто:

    1 способ:
    1) у вас должна быть страница редактирования записи.
    2) добавьте кнопку редактировать. Кнопка редактировать перенаправляет юзера (GET запрос) с id (path variable или request param - идентификатор записи).
    3) По идентификатору достаете текст записи на странице редактирования записи
    4) редактируете запись и сохраняете.

    2 способ:
    1) можно все указанное сделать при помощи ajax. Вместо перенаправления на отдельную страницу загружать содержимое в модальном окне (доставать данные средствами js при помощи ajax).
    2) а дальше уже сохраняете данные сабмитом содержимого формы из модалки

    P.S. небольшой совет:
    todo.setCompleted("No");
    Предположу, что у вас статус completed является типом String. Лучше используйте тип boolean. А еще лучше обертку Boolean, который принимает true false & null
    Ответ написан
    Комментировать
  • Подойдет ли MacBook Pro 2020 (MWP42) и в целом Mac OS для полноценной разработки на Java?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый вечер!

    Подойдет ли MacBook и в целом система Mac OS для программирования на Java?

    Да, также как и любая другая OS.

    Возможно ли пройти путь от полного неуча до Senior Software Java Developer на Маке или так без Windows не обойтись?

    Я этот путь прошел без виндовс, только на линукс (правда, до senior еще не добрался =) ). В общем, кому что нравится...

    Если все таки, если я хочу программировать на Mac OS, то мне стоит больше присмотреться к той же iOS разработке?

    Необязательно. Если вы хотите стать iOS разработчиком, то наличие MacOS обязательно. А так, вы можете писать на маках что угодно и на чем угодно... хоть на Java, C# и т.д.

    В дополнение к маку купите еще книжки по Java. Поищите аналогичные вопросы на этом сайте, уже были ответы что стоит прочитать начинающему разработчику.
    Ответ написан
    Комментировать
  • Можно ли использовать нижнее подчеркивание в методах для тестов?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Да, можно.
    Подробности тут:
    https://dzone.com/articles/7-popular-unit-test-naming

    А использование нижнего подчеркивания не в тестах не рекомендуется.
    Ответ написан
    3 комментария
  • Должны ли переменные final ( не static ) всегда писаться большими буквами?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    В данном случае согласен с коллегой @sergey-gornostaev
    Но вот, что самое интересное:
    https://vertex-academy.com/tutorials/ru/modifikato...
    *Обратите внимание: переменные с final - это константы. При этом их принято писать заглавными буквами - тут CamelStyle не работает :


    Вот, еще интересная выдержка из ответа:

    In java, making something final means that it can't be reasigned to another reference to another instance, but if it's a reference to a mutable class, the mutable values inside the class can still be modified.

    For example, a final String is a constant because Strings are immutable in Java, but a final ArrayList means that you cannot assign it to another ArrayList, but you can still add and remove elements to that ArrayList

    https://stackoverflow.com/questions/39459727/diffe...
    Ответ написан
  • Является ли объявление этой переменной бессмысленной или она улучшает читабельность кода?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    С точки зрения clean code лучше сделать с отдельной переменной.
    Ответ написан
    Комментировать
  • Как правильно конвертировать POJO в XML?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    У вас есть dto - Request, но нет dto Response.

    Вот, примерная структура pojo для Response (источник)
    public class Response { 
    	public int p_id;
    	public int status;
    	public String message;
    	public int id;
    	public Date dts;
    	public String text;
    }


    Также вам для того, чтобы ответ возвращать в xml нужно добавить одну библиотеку для jackson (если вы используете именно его).
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.11.1</version>
    </dependency>

    Подробности тут
    Ответ написан
    Комментировать
  • Как проще всего поднять несколько локальных инстансов приложения для отладки/тестирования?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Как по мне проще всего использовать docker. Можно еще использовать docker-compose, чтобы быстро разворачивать контейнеры с нужными параметрами.
    Ответ написан
    Комментировать
  • Пропали атрибуты в карточке товара после обновления темы, как быть?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.

    если не найду тут ответ напишу им, просто 50$ придется платить им за подписку на поддержу, и не факт еще если помогут)) в любом случае спасибо за ответ

    Коллега подсказал вам правильно. Нужно обратиться разработчику и да, они помогут.

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

    Попробуйте:
    1) обновить тему до актуальной версии.
    2) откатиться до старой версии WC или восстановить сайт из бекапа.

    Единственный вариант который я вижу и он меня не радует, это экспортировать товар и всю проделанную работу и заново загрузить движок WordPress.

    Это конечно решение, но зачем вам так сильно напрягаться.

    Использую тему *Betheme, лицензия* напомню что после обновления темы а именно с перехода 24.0.3.1 на 25.0.1

    Возможно, что есть некий конфликт. Можете еще попробовать другое решение. Из директории templates внутри плагина woocomemrce скопируйте шаблоны в директорию woocommerce самой темы.
    Ответ написан
    1 комментарий
  • Как понять микросервисы?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Прежде всего ответьте на один вопрос - какую именно проблему вы хотите решить переходом на микросервисную архитектуру. Обратите внимание, что обеспечивать ACID в микросервисной структуре сложнее, чем в монолитах. Также обслуживание микросервисов тоже сложнее. Если есть нагрузка на сервис, то не факт, что вам нужны микросервисы. Возможно, что вам нужна оптимизация сервиса или более производительное железо.

    Если у каждого сервиса есть свой api, зачем API Gateway (точка входа), можно же на nginx сделать обращение по location на нужный api?

    Например, в случае с Spring API Gateway в нем есть балансировщик. Балансировщик помогает снижать нагрузку с микросервиса, если у вас имеются несколько копий, то каждый раз запросы идут на разные копии. Также gateway удобен тем, что клиент не беспокоится о том, на какой эндпоинт нужно отправлять запрос. Возможно, что у вас несколько копий одного сервиса и то какой из них должен ответить на запрос клиента, самого клиента это не касается.

    Стоит ли использовать RabbitMQ для общения между сервисами? Правильно ли понимаю, что точка входа на ноде, посылает запрос в раббит и ждет от него же ответ и отдает клиенту?

    Можно и через RabbitMQ. А так например, Spring API Gateway использует асинхронные запросы (Spring Webflux) для реализации данной задачи.

    Например делаем микросервис по авторизации пользователя и регистрации. У него должна быть своя база данных?

    Это зависит от вашей задачи. Да, может быть и своя БД. А может быть и нет.

    Получается микросервис отвечающий за пользователей CRUD + Регистрация, авторизация, сброс пароля?

    Опять-таки зависит от вашей задачи, от нагрузки и т.д. Возможно, что регистрация, авторизация и сброс пароля будут отдельными микросервисами. А возможно, что User CRUD будет одним микросервисом.
    Ответ написан
    Комментировать