• Не получается сделать клик по элементу внутри frama. Ошибка ElementNotInteractableException?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Если не ошибаюсь, то вам нужно переключиться на iframe. Вы не можете кликнуть на его элементы не переключившись на него.
    Полезная ссылка по теме:
    https://www.guru99.com/handling-iframes-selenium.html

    It is impossible to click iframe directly through XPath since it is an iframe. First we have to switch to the frame and then we can click using xpath.


    Вот, как происходит переключение на фрейм (прочитайте статью по ссылке выше):
    driver.switchTo().frame("a077aa5e");
    Ответ написан
  • Почему на JSP странице русские символы отображаются кракозябрами?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Я использую properties-файлы, в которых на нужном языке пишу текст. Нужно проверить, чтобы текст в данных файлах был установлен как UTF-8

    Если не ошибаюсь, то в properties используется кодировка ISO 8859-1
    Вот, похожий вопрос касаемый кодировки файла properties
    https://stackoverflow.com/questions/37436927/utf-8...

    Что касается ваших крякозабров, то основываясь на этой инфографике
    https://evc27.pcloud.com/dpZCsmjtXZHvQPG0Z4gx7Z7Zj...
    У вас UTF-8 кодировка, которая отображается в win-1252

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

    И еще вариант в html должна быть указана кодировка utf-8 внутри тега head
    <head>
      <meta charset="UTF-8">
    </head>
    Ответ написан
  • Как использовать код java, чтобы открыть текстовый файл например?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    К вопросу запуска программ Windows через Java, можно глянуть сюда:
    Как запускать программы через cli на Windows - https://superuser.com/questions/494538/how-do-i-op...
    К вопросу, как выполнять команды в cmd - https://stackoverflow.com/questions/15464111/run-c...
    Посмотрите на классы Process & ProcessBuilder. По ссылке выше показан пример их использования

    Или браузер например открыть.

    Зависит от того, с какой целью вы хотите открыть браузер. Если подразумевается дальнейшая работа с браузером из кода (например, тестирование, парсинг или еще что...), то гляньте на Selenium.
    https://www.browserstack.com/guide/run-selenium-te...

    Гуглим -
    java selenium {ваш_браузер}
    Ответ написан
    Комментировать
  • Как создать listView из объектов в javaFx?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Если вопрос в плане реализации, то вам нужно получить ObservableList<String> названий из вашего List<T> и вывести его:
    https://metanit.com/java/javafx/4.8.php

    Если вопрос в плане компонентов, то:
    Для JavaFX есть такая либа, как JFoenix. Можно например, воспользоваться ее функционалом.
    www.jfoenix.com/documentation.html#ListView

    Можно еще воспользоваться ControlsFX - https://controlsfx.github.io/features/listselectio...
    Ответ написан
    Комментировать
  • Если практически не знаю JS и TypeScript к изучению Angular бессмысленно приступать?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Изучать Angular или любой другой js фреймворк без владения js или ts равноценно, как строить ракету, не зная физику. Может быть что-то вы и построите, но полетит ли?

    Вывод:
    Изучите язык, чтобы иметь возможность пользоваться инструментом.
    Ответ написан
    Комментировать
  • Как заменить java 11 на java 8 в debian?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Соглашусь с коллегой Sand, лишь отмечу, что на linux гораздо удобнее использовать sdkman. С его помощью вы можете быстро переключаться между нужными версиями и устанавливать нужные вам версии
    https://sdkman.io/
    Ответ написан
    3 комментария
  • Почему аннотации @PreAuthorize, @HasRole и т.д. рекомендуется устанавливать в сервисе, а не в контроллере?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Вот, тут дан довольно неплохой ответ на ваш вопрос:
    https://stackoverflow.com/questions/14626969/shoul...
    Ответ написан
    Комментировать
  • Какой из бесплатных курсов посоветуете пройти?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Могу поделиться своим опытом изучения Java:

    Как по мне, курсы не стоит посещать с нуля, ибо в результате вам прочитают определенный набор лекций, дадут домашки и т.д. и в принципе, вы изучите азы разработки на Java, но в любом случае у вас останется куча вопросов, которые вы хотели бы задать преподавателю.
    Гораздо интереснее, когда вы уже владеете языком и посещаете курсы для систематизации своих знаний и получения большего опыта. В этом случае можно даже курсы не посещать, а найти ментора, который будет рад ответить на ваши вопросы. А если повезет, то можете поработать на реальных проектах совместно с ментором. Ментор поможет акцентировать ваше внимание на тех вещах, на которые вы возможно, ранее не обратили бы должного внимания.
    Курсы разные и по-разному обучают. Скажу честно, не увидел ничего особенного в JavaRush ровно, как и в курсах, которые предлагал Stepik. Можно глянуть на курсы Udemy, там есть неплохие (можете глянуть на курсы Наиля Алишева). Есть парочка курсов и на ютуб.
    Но одно скажу точно, без книг в серьезный девелопмент - никак. Вам однозначно нужно прочитать книги, которые вам уже посоветовали коллеги в своих ответах.
    Ответ написан
    Комментировать
  • Проверить встречается ли строка больше одного раза?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день. Давным-давно писал аналогичный учебный проект про приобретению билета для кино.
    Правда, я тогда уже использовал Hibernate + MySQL.
    Вот, тут можно глянуть исходники - https://github.com/hasanli-orkhan/learn-java/tree/...

    Скажу, что ваш код реализован некорректно.
    Во-первых, Java это ООП язык и соответственно, вам нужно использовать всю мощь ООП. Например, создайте pojo Ticket, у каждого билета своя стоимость, а также булево значение isPurchased и т.д. В общем, гляньте на исходник моего проекта станет ясно.

    Такой вариант плох тем, что во-первых это скорее процедурный подход, нежели ООП. Во-вторых, представьте, что у вас завтра изменится стоимость билетов и вам нужно править код в нескольких местах. А завтра заказчик скажет, что валюта не в долларах, а в рублях и вам придется заново править код и т.д.
    так не должно быть
    public static void ticketPrice(int rows, int seats, int checkRow) {
            System.out.println();
            if (rows * seats <= 60) {
                System.out.println("Ticket price: $10");
            } else {
                if (rows % 2 == 0) {
                    if (checkRow <= rows / 2) {
                        System.out.println("Ticket price: $10");
                    } else {
                        System.out.println("Ticket price: $8");
                    }
                } else {
                    if (checkRow <= rows / 2) {
                        System.out.println("Ticket price: $10");
                    } else {
                        System.out.println("Ticket price: $8");
                    }
                }
            }
        }


    Далее если вы оперируете валютой, то лучше использовать BigDecimal, вместо double.

    Разделите ваш код на объекты. Например, Cinema, Ticket, Session и др. Далее создайте сервисные классы, в которых будут методы по добавлению фильма, по приобретению билетов и т.д.
    Ответ написан
    5 комментариев
  • Как в цикле реализовать проверку условия?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день
    Чтобы не писать кучу if... else или switch ... case, можно попробовать использовать паттерн Chain Of Responsibility
    https://refactoring.guru/ru/design-patterns/chain-...
    Во-первых, код получится более лаконичным, а во-вторых, вы сможете реализовать то, что нужно.
    Условно говоря, если код не проходит на проверку через опеределенный фильтр, то условие не выполняется, а если выполняется, то запрос проходит по цепочке дальше.
    Ответ написан
    1 комментарий
  • Как посадить Swiper на ACF?

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

    - убедитесь, что название кастомного поля repeater указано верно: slider_card
    - убедитесь, что название кастомных полей указано верно: image_product и др
    - обратите внимание на то, где именно вы создали кастомные поля и как его выводите. Если это ACF Option, то вторым аргументов нужно указать 'option', если вы создали кастомное поле для определенной страницы (например, для главной), а выводите этот блок на другой странице, то нужно ID главное передать в качестве второго аргумента.
    - в полях, в которых вы выводите картинки обратите внимание на тип возвращаемого значения. Может быть вы не то возвращаете
    - попробуйте убрать swiper и без него просто выведите блок ACF. Скорее всего проблема сохранится, а если нет, то проблема уже на стороне swiper.
    - также может быть стили где-то переписываются и блок не видим или еще что...
    Ответ написан
    1 комментарий
  • Что делать если на мобильном телефоне ссылка открываеться со второго клика?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Предположу, что это связано со следующим:
    У вас есть div блок с классом: cms-banner-inner
    к нему добавлен event из js файла doubletaptogo.js (двойной клик, чтобы продолжить)
    cyDYFai.png

    Вот, ссылка на файл, который это делает:
    http://testsiteforbudsegment.pp.ua/wp-content/themes/toolsjet/js/codezeel/doubletaptogo.js

    Скорее всего этот скрипт при условии, что вход был произведен с моб. устройства, ловит клик на элементе, далее делает event.preventDefault и ожидает двойного клика на элементе.
    В общем, смотрите в настройки темы, скорее всего есть где-то функция, чтобы отключить это

    /*
    	By Osvaldas Valutis, www.osvaldas.info
    	Available for use under the MIT License
    */
    
    
    
    ;(function( $, window, document, undefined )
    {
    	$.fn.doubleTapToGo = function( params )
    	{
    		if( !( 'ontouchstart' in window ) &&
    			!navigator.msMaxTouchPoints &&
    			!navigator.userAgent.toLowerCase().match( /windows phone os 7/i ) ) return false;
    
    		this.each( function()
    		{
    			var curItem = false;
    
    			$( this ).on( 'click', function( e )
    			{
    				var item = $( this );
    				if( item[ 0 ] != curItem[ 0 ] )
    				{
    					e.preventDefault();
    					curItem = item;
    				}
    			});
    
    			$( document ).on( 'click touchstart MSPointerDown', function( e )
    			{
    				var resetItem = true,
    					parents	  = $( e.target ).parents();
    
    				for( var i = 0; i < parents.length; i++ )
    					if( parents[ i ] == curItem[ 0 ] )
    						resetItem = false;
    
    				if( resetItem )
    					curItem = false;
    			});
    		});
    		return this;
    	};
    })( jQuery, window, document );
    Ответ написан
    2 комментария
  • Как брать только определенные данные из сайта?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Вам нужно написать парсер, который будет собирать для вас необходимую информацию.
    Тут надо отметить один нюанс - все зависит от сайта.
    Например, если сайт является неким MVC app, то вы можете использовать jsoup для парсинга данных. Если контент сайта формируется динамически (т.е. есть некий фронтэнд), то можно не парсить данные из html, а глянуть на внутренний API сайта и спарсить JSON. А дальше средствами java собрать коллекцию pojo из спарсенных данных и сохранить в БД или еще где... А дальше вывести в устройстве (Например, RecyclerView или еще что...)
    В общем, как-то так...
    Ответ написан
  • Создание стр для записей и блога?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Это скорее задание, а не вопрос...

    Разделим вашу задачу на несколько этапов:

    1) нужны ли вам категории? Например, мебель для кухни, мебель для спальни и т.д. Если да, то создайте таксономию
    https://wp-kama.ru/function/register_taxonomy

    2) создайте кастомный тип записи
    https://wp-kama.ru/function/register_post_type или поищите плагин для создания CPT

    2) установите плагин Essential Grid и выведите ваши записи на нужной странице.
    Это самое простое решение

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

    Т.е. можно по-разному реализовать вашу задачу.

    Вот, похожие сайты:

    https://vashfasad.by/
    https://minskmebel.by/
    Ответ написан
    2 комментария
  • Какие способы для создания DSL есть в Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Как такового DSL в Java нет.
    Можно наверное воспользоваться либой Apache Camel
    https://camel.apache.org/manual/latest/java-dsl.html
    В ней для реализации Java DSL используется паттерн Fluent Builder.

    Вот, для spring - https://www.baeldung.com/spring-integration-java-dsl

    А зачем переходить на Kotlin только из-за DSL? Какие задачи вам нужно решать именно при помощи DSL
    Ответ написан
    Комментировать
  • Можно ли разрабатывать приложения под Android на Java и Kotlin на MacOS?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Да, можно разрабатывать на чем угодно.

    Соглашусь с коллегой Денис Загаевский как правило, разрабатывают на MacOS или на Linux. Вообще, не сильно принципиально, но удобнее разрабатывать на них.

    А также обязательно ли иметь Android устройство?

    Желательно. Но обычно эмуляторов бывает достаточно. Эмулятор из Android Studio или Genymotion

    У меня есть Android, но он слабенький или это неважно?

    Важно. Например, версия андроид и т.д. Все зависит от того, что именно вы тестируете. Вдруг вам нужно со старым андроидом для проверки обратной совместимости и т.д.
    Ответ написан
    Комментировать
  • Где создать sessionFactory в Spring проекте?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    В чем именно заключается проблема?
    Судя по всему у вас есть hibernate.cfg.xml, а также есть HibernateUtil.
    Можно чуть подправить этот класс на такой вариант:
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    
    public class HibernateUtil {
    
      final static StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
          .configure()
          .build();
    
      private static final SessionFactory sessionFactory;
    
      static {
        try {
          sessionFactory = new MetadataSources(registry).buildMetadata()
              .buildSessionFactory();
        } catch (Throwable ex) {
          throw new ExceptionInInitializerError(ex);
        }
      }
    
      public static Session getSession()
          throws HibernateException {
        Session session = null;
        try {
          session = sessionFactory.getCurrentSession();
        } catch (org.hibernate.HibernateException he) {
          session = sessionFactory.openSession();
        }
        return session;
      }
    
    }


    Далее используя метод getSession() получаете сессию и делаете то, что нужно.
    Например,

    Session session = HibernateUtil.getSession();
          session.beginTransaction();
          note.setTitle("Example");
          session.merge(note);
          session.getTransaction().commit();
          session.close();


    как это сделать в Spring проекте где нету main`a

    Почему это в Spring проекте нет main метода?
    Вот, туториал по Spring Framework, где указан main метод - https://www.youtube.com/watch?v=nLCYk1ySY_U
    Ответ написан
    Комментировать
  • Как работать с файловой системой в Spring Boot?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Но потом, когда я загружу проект на сервер, то там же другая файловая система, другие директории и т.д. - как с этим быть?

    Ну во-первых, как отметил коллега Dmitry Roo нужно использовать относительные пути.
    Во-вторых, у вас должны быть несколько файлов конфигурации (с разными профилями). Например, для dev upload.path будет /home/Desktop/uploads, а для prod профиля будет uploads/ и т.д.

    Во-вторых - а как быть с безопасностью? Как-то же надо фильтровать то, что мне загружают? А то скрипт какой-нибудь загрузят или ещё что-то. Как это вообще отслеживать?

    Обычно, делают проверку MIME type, как на клиентской стороне, так и на стороне сервера.

    Например, средствами js можно запретить загрузку других файлов, кроме image/* и т.д.
    Тоже самое делаю на сервере. Проверяют формат загруженного файла и если он не соответствует ожидаемому MIME type, то выбрасывают исключение и удаляют файл.

    Как отслеживать оставшееся место на диске?

    Смотря, что подразумевается в данном случае. Если хостинг, то java.nio подойдет. А если это amazon s3 или другой сервис, то смотрите документацию к REST API.
    Ответ написан
    2 комментария
  • Java Apache FPTS Client. Как победить 425 Can't open data connection при storeFile()?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    А подскажите пожалуйста, ведь вроде вы пытаетесь подключиться через FTP, но используете FTPSClient
    https://commons.apache.org/proper/commons-net/apid...

    Может быть вам нужен FTPClient?
    https://commons.apache.org/proper/commons-net/apid...

    Могу предположить, что вы пытаетесь подключиться к FTPS, используя порт для FTP (21) и соответственно, возникает ошибка

    Вот, например при подключении к FTP у меня все ок:
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPClientConfig;
    import org.apache.commons.net.ftp.FTPReply;
    
    import java.awt.*;
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Main {
    
        public static void main(String[] args) throws IOException {
    
            FTPClient ftp = new FTPClient();
            FTPClientConfig config = new FTPClientConfig();
            ftp.configure(config);
            boolean error = false;
            try {
                int reply;
                String host = "example.com";
                ftp.connect(host);
                ftp.login("example_user", "12345");
                System.out.println("Connected to " + host + ".");
                System.out.print(ftp.getReplyString());
    
                reply = ftp.getReplyCode();
    
                if(!FTPReply.isPositiveCompletion(reply)) {
                    ftp.disconnect();
                    System.err.println("FTP server refused connection.");
                    System.exit(1);
                }
    
                boolean changed = ftp.changeWorkingDirectory("public_html/");
                if (!changed) {
                    ftp.disconnect();
                }
    
                ftp.setFileTransferMode(ftp.BINARY_FILE_TYPE);
                ftp.enterLocalPassiveMode();
                InputStream inputStream = new FileInputStream("/home/admin/Desktop/newFile.txt");
                boolean stored = ftp.storeFile("newFile.txt", inputStream);
                if (stored) {
                    System.out.println();
                }
    
                ftp.logout();
            } catch(IOException e) {
                error = true;
                e.printStackTrace();
            } finally {
                if(ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch(IOException ioe) {
                        // do nothing
                    }
                }
                System.exit(error ? 1 : 0);
            }
    
        }
    
    }
    Ответ написан
    1 комментарий
  • Как подключать библиотеки вручную?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    А кто запрещает вам скачанный jar установить в репозиторий maven, а оттуда уже испоьзуя dependency подключить к проекту?
    Вот, аналогичный вопрос - https://stackoverflow.com/questions/4955635/how-to...
    Это конечно, если у вас maven проект и вы хотите подключить локальный jar.

    Если вы хотите подключить локальный jar без maven. то:
    https://www.cs.utexas.edu/~scottm/cs324e/Assignmen...
    Ответ написан
    1 комментарий