Задать вопрос
  • Проверить встречается ли строка больше одного раза?

    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 комментарий
  • Как запретить десериализацию поля в jackson?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    нужно , чтобы в поле result попадал json как строка. Менять ответ контроллера (например обернуть в кавычки) я не могу.

    Можно написать свой кастомный конвертер для контроллера.
    https://stackoverflow.com/questions/57536693/how-t...

    Или вы имеете ввиду:

    аннотацию JsonIgnore?
    https://www.tutorialspoint.com/jackson_annotations...
    https://stackoverflow.com/questions/12505141/only-...

    Есть еще аннотации
    https://www.baeldung.com/jackson-bidirectional-rel...
    Ответ написан
    Комментировать
  • Как возможно сделать переключатель на 3 позиции?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Может быть эти материалы будут вам полезны:
    Вот, готовый компонент:
    https://github.com/BeppiMenozzi/TriStateToggleButton
    Вот, похожий вопрос:
    https://stackoverflow.com/questions/44279442/3-sta...

    гуглим
    Ответ написан
    1 комментарий
  • Как работают библиотеки java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Было бы неплохо конкретизировать вопрос. Например, о какой библиотеке Java идет речь?
    Если в целом, то предположим, что у вас есть некая библиотека с неким классом Human, в котором есть некий метод bmi(), который расчитывает индекс массы тела (ИМТ).
    И допустим, вы хотите в своем приложении реализовать функционал расчета ИМТ. Вы подключаете библиотеку в свой проект (через maven, gradle или без них), импортируете нужный класс и работаете с ним.
    Вот и все...
    Ответ написан
    3 комментария
  • Как поднять эффективность обучения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Попробуйте поработать с различными библиотеками. Например, напишите парсер при помощи jsoup. Попробуйте написать некий универсальный тул для экспорта данных в xlsx | csv (Apache POI). Изучите apache common langs, apache common collections и др. распространенные библиотеки. Можете глянуть на lombok.
    Придумайте себе идеи для pet проектов. Например, телефонная книга (javafx), консольное приложение (jcommander) и т.д.
    Решать задачи на hackerrank прикольно и в принципе, можно потратить время на них. В частности, Java, SQL, Problem Solving. Но как отметил коллега, подобные сайты нужны больше при трудоустройстве.
    Попробуйте изучить jdbc, поработать с БД. Вот, сайт sql-ex.ru решите задачи по SQL.
    Ну и не останавливайтесь на достигнутом, развивайтесь дальше. Мне например, для прибавления уверенности в себе помогли фриланс биржи. Я писал различные простые парсеры и ботов. Как бы и денежки есть и прикольно видеть результат своих трудов.
    Ответ написан
    Комментировать
  • Как получить значение определенного параметра в ответе на запрос api (Java Selenium)?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Предположу, что в ответе вы получаете JSON. Соответственно, вам нужна либа для работы с json. Например, gson или jackson. Создайте pojo с нужной структурой, прочтите ответ в JSON (десериализация). Получите значение secret.
    Другое решение, если обойтись без либы - напишите DOM Parser.
    Ответ написан
    Комментировать
  • Как отказаться от SEO-плагинов без ущерба для сайта?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Практически все сео-плагины с изъянами.

    Ну ничто в мире не идеально)
    А чем именно вам сео-плагины не нравятся? Я раньше, когда занимался разработкой на ВП всегда использовал Yoast SEO Premium.

    Почему нельзя сделать всё просто, по принципу работы виджета "Отрывок"?

    Можно конечно же.

    Простое решение - установите плагин ACF. Создайте нужные вам поля (title, description, keywords). Выведите эти кастомные поля в шаблоне (внутри head в header.php)
    Если хотите средствами самого ВП (без плагинов), то прочитайте:
    https://wordpress.org/support/article/custom-fields/

    Как сделать, что дописать в файл functions.php чтобы работало всё то, что я нарисовал, по принципу виджета "Отрывок"

    Это больше не вопрос, а задание. То что нужно прочитать я указал выше. Как по мне простое решение использовать ACF. А лучше я бы рекомендовал использовать SEО плагин. В них много всяких плюшек и они стараются актуализировать свой функционал согласно требованиям гугла. Например, кол-во символов для тайтла, дескрипшна. Также например, гугл не ранжирует keywords и Yoast SEO убрал из своего функционала поле keywords. Также например, есть микроразметка в сео плагинах и т.д.
    Ответ написан
  • Можно ли так использовать спринг?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день
    имеет ли смысл только для работы с бд подключать springframework

    Может быть для работы с БД стоит подключать ORM фреймворки. Например, Hibernate, EclipseLink, MyBatis, ormlite.

    По факту spring это контейнер бинов (реализация IOC & DI). Соответственно, если вы хотите использовать DI в своем приложении, то можете использовать спринг. Ну или другую либу для DI (guice, dagger etc.)

    Например, если вы пишете JavaFX приложение, то есть хорошая либа для ьыстрой интеграции спринга
    https://github.com/rgielen/javafx-weaver/

    А просто для работы с БД используйте связку hibernate + hikaricp
    Ответ написан
    6 комментариев