Ответы пользователя по тегу HTML
  • Как сохранить разметку текста при конвертации в 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();
            }
        }
    
    }
    Ответ написан
    Комментировать
  • Как сделать систему "HTML - дизайн, jAVA - функционал"?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    А как насчет ElectronJS в качестве GUI и Spring (REST приложение на Java)?
    Ну или же Spring Boot + JavaFX приложение на фронте и Spring на беке.
    https://github.com/rgielen/javafx-weaver
    https://habr.com/ru/post/478402/
    Ответ написан
  • Почему не выходит запустить html файл в docker?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день.
    Вам томкат не нужен. Это дорого и неудобно.
    Вам нужен nginx.
    Прочитайте вот, эту статью:
    https://medium.com/code-to-express/https-medium-co...
    или вот эту:
    https://www.dailysmarty.com/posts/steps-for-deploy...
    Ответ написан
    Комментировать
  • Как обновить данные в таблице без перезагрузки страницы?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Ваш вопрос больше касается js, нежели java.
    Теперь, по поводу реализации: после добавления нового пользователя не нужно вызывать каждый раз метод showUser и обновлять весь список. Вместо этого вы можете добавить нового пользователя в таблицу новой строкой.

    Чтобы сделать вышеуказанным способом нужно:
    Вместо void вернуть другой ответ. Например, нового пользователя.
    Т.е. ResponseEntity или User вместо void
    @PostMapping("/adduser")
        void addUser(@RequestBody User user)
        {
            System.out.println("MY RESPONSE: "+user.toString());
            ajaxrepos.save(user);
    
        }

    А дальше последней строкой добавить нового пользователя через append в существующую таблицу

    Было бы неплохо подебажить ваш код на серверной стороне и на клиентской стороне и глянуть в консоль браузера на предмет наличия ошибок в js.
    В частности, надо бы глянуть что приходит в ответ после добавления нового юзера и вызова showuser()
    Возможно, что ошибка происходит при вызове showuser().
    Ответ написан
    Комментировать
  • Как сохранить в таблице картинку при изменении других полей?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Как сохранить в таблице картинку при изменении других полей?

    А зачем вы удаляете / изменяете картинку при изменении полей?
    Допустим, что есть некий эндпоинт, куда нужно отправлять POST запрос для загрузки картинки и принимает он MultiPartFile.
    Соответственно, при загрузки новой картинки можно отправить аякс запрос на этот урл, а id картинки назначить для сущности, которая добавляется из формы.
    А значит, при изменении других данных вы никоим образом не будете изменять картинку и соответственно, она не удалится.
    Ответ написан
  • Как вернуть изображения некоторые?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Если вы заглянете во вкладку "Сеть" консоли браузера, то увидите, что картинки не загружаются по следующим причинам:
    - ошибка 404 - т.е. картинки не найдены (not found)
    - ошибка 429 - слишком много запросов (too many requests)
    Притом, большинство картинок не загружаются именно по второй причине. Это может быть из-за конфигурации сервера. Соответственно, нужно обратиться к хостеру.
    Аналогичная проблема - https://wordpress.org/support/topic/post-429-error...
    Цитаты из сайта:
    Please ask your host if they’re using “mod_secure” and if this error is a result of their rule set.

    Hosting company has sorted it out by turning off the rate limiter!
    Ответ написан
    2 комментария
  • В чем особенность верстки под WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Важно различать понятия верстки и создания новой темы.
    Верстка она и в Африке верстка. Состоит из html, css, js.
    Другое дело, что вам нужно создать тему для ВП, т.е. интегрировать готовую верстку с рнр кодом согласно кодексу ВП.
    1-й этап - верстка макета
    2-й этап - создание темы на ВП. И тут вам нужно изучить кодекс ВП для разработчиков и владеть основами рнр
    Ответ написан
    2 комментария
  • Возможно ли при вставке pdf на сайт, автоматически отображать его страницы как изображения?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Гуглить не пробовали?) Говорят, иногда помогает...
    https://stackoverflow.com/questions/31534746/creat...
    function process_pdf( $file ) {
    
        if( $file['type'] === 'application/pdf' ) {
    
            // Get the parent post ID, if there is one
            if( isset($_REQUEST['post_id']) ) {
                $post_id = $_REQUEST['post_id'];
    
                $filename = $file[ 'name' ];
                $filename_wo_extension = basename( $filename, ".pdf" );
    
                $im = new Imagick();
                $im->setResolution(300, 300);
                $im->readimage( $file[ 'tmp_name' ] ); 
                $pages = $im->getNumberImages();
    
                $attachments_array = array();
    
                // iterate over pages of the pdf file
                for($p = 1; $p <= $pages; $p++){
                    $im->setIteratorIndex( $p - 1 );
                    $im->setImageFormat('jpeg');
    
                    $filename_neu = $filename_wo_extension .'_'. $p .'.jpg';
    
                    // upload new image to wordpress
                    // https://codex.wordpress.org/Function_Reference/wp_insert_attachment
                    $upload_file = wp_upload_bits($filename_neu, null, $im);
                    if (!$upload_file['error']) {
    
                        $attachment = array(
                            'post_mime_type' => 'image/jpeg',
                            'post_title' => preg_replace( '/\.[^.]+$/', '', $filename_neu),
                            'post_content' => '',
                            'post_status' => 'inherit'
                        );
    
                        $attachment_id = wp_insert_attachment( $attachment, $upload_file['file'] );
    
                        if (!is_wp_error( $attachment_id )) {
                            require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                            $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
                            wp_update_attachment_metadata( $attachment_id,  $attachment_data );
                            $attachments_array[] = $attachment_id;
                        }
                    }
                }
    
                // add new images to a gallery (advanced custom fields plugin)
                // http://www.advancedcustomfields.com/resources/update_field/
                update_field( 'field_55b0a473da995', $attachments_array, $post_id );
    
              $im->destroy();
           }
        }
    
        return $file;
    
    }
    
    add_filter('wp_handle_upload_prefilter', 'process_pdf' );


    https://wordpress.org/plugins/pdf-image-generator/
    Гугл, храни тебя!
    Ответ написан
    2 комментария
  • Оптимизация Wordpress. Или как оставить только нужное в head?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Для оптимизации я использую плагины:
    Fastest Cache + Fastest Cache Premium + Autoptimize. Правильно сконфигурировав эти плагины можно добиться результатов до 100 баллов по PageSpeed. Другой вопрос - а надо ли?
    Вообще, использование виз. редакторов чуть усложняет оптимизацию сайта, но тем не менее это возможно. Ну и в целом обратите внимание на размеры и вес фото, на хостинг, на используемые плагины и на многое другое. Желательно использовать меньше внешних скриптов или подгружать их асинхронно
    Ответ написан
    Комментировать
  • Можно ли ускорить загрузку таблицы?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ну для начала не отдавайте на фронт все 1600 строк для таблицы. Получается, что вы отдаете все строки с сервера, а далее DT средствами js разделяет их на страницы.
    Вам нужно настроить ServerSide пагинацию и аяксом получать данные по 100-200 штук.
    Вот, готовая либа для DataTables + Spring:
    https://github.com/darrachequesne/spring-data-jpa-...
    Вот, готовые либы для DataTables + Java
    https://github.com/davioooh/datatables-pagination
    https://github.com/eveoh/datatables-java
    Ответ написан
    4 комментария
  • Как обнаружить ошибку в CSS?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Использовал давным давно этот плагин оптимизации и кеширования, но в конечном итоге остановился на плагине Fastest Cache + Fastest Cache Premium. Причиной того, почему я использую этот плагин - минимум затрат, максимум эффекта. И до сих пор практически не встречался с ошибками, которые могли быть связаны с этим плагином. Помню один раз была проблема в теме Divi и с этим плагином и то наблюдалась она в браузерах IE.
    Попробуйте установить этот плагин и включите все пункты и посмотрите на результат и на то, будет ли ошибка.
    Ответ написан
    Комментировать
  • Что в вёрстке отвечает за подпункты меню?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Откройте dev tools браузера и проинспектируйте элемент.

    Как сделать так, чтобы эти "рамки" были на весь подпункт меню?
    Ещё хотелось бы сделать выравнивание текста по центру в подпунктах - что за них вообще отвечает?

    Вам нужно тег ul субменю сделать на всю ширину - width:100%; или задать минимальную ширину: min-width:300px;

    Чтобы выровнить текст добавьте text-align:center
    Ответ написан
    1 комментарий
  • Как верстать и сразу же натягивать на WP?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Как понимать верстаю ли я или натягиваю на ВП? Понимаете, это разные абсолютно вещи.
    И вообще верстка не связана с натягиванием на ВП.
    Все начинается с работы дизайнера. После чего дизайн отдается верстальщику. Верстальщик с учетом ТЗ верстает шаблон используя html, css, js (тут он может подключить кучу разных сборщиков, препроцессоров и т.д. - gulp, haml, less, scss и т.д.).
    Далее разработчик создает тему для WordPress на основе верстки, т.е. пишет рнр код зная кодекс ВП.
    Ответ написан
    Комментировать
  • Как сделать оптимизацию стилей и скриптов для разных устройств?

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

    Можно индивидуальные стили и скрипты подключить при помощи условной логики ВП
    https://wp-kama.ru/function-tag/uslovnyie-tegi

    Можно при помощи разных сервисов, возможностей IDE и т.д. удалить неиспользуемые стили и скрипты.
    Например, https://unused-css.com/

    Можно при помощи плагинов оптимизации и кэширования сжать скрипты и стили.
    Я обычно использую Fastest Cache + Fastest Cache Premium
    Ответ написан
    2 комментария
  • Как реализовать на сайте поиск по csv файлам?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можно ли реализовать это на питоне и подключить к ворпресу или писать на чистом html или возможно кто-то посоветует какой-то плагин на ворпресе или свое решение задачи?


    1) Что именно вы собрались писать на чистом html? html - язык разметки. Соответственно, никакую логику взаимодействия реализовать не сможете на нем.
    2) Если решили писать на python, то продолжите идею и используйте фреймворк Django. Далее эти csv файлы импортируете в БД (маппинг в БД). Для удобства используйте ORM. Далее реализуете поиск (можете взять elasticsearch и создать необходимые индексы). Ну а дальше весь остальной функционал сайта и интернет-магазина.
    3) Если решили сделать все на WordPress, то плагин Woocommerce (интернет-магазин). Используйте CSV таблицы, чтобы по ним создать товары. Например, плагин WP All Import + Woocommerce Addon для импорта товаров.
    Ответ написан
    Комментировать
  • Как сделать калькулятор JS + HTML + WORDPRESS?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Если вы не хотите, чтобы ваш код был виден на клиентской стороне, то js вам не подходит.
    Лучше используя технологию ajax, отправляйте на сервер введенные пользователем данные, а затем обрабатывайте их на сервере и отправляйте результат вычислений обратно
    Ответ написан
    1 комментарий
  • Как настроить открытие страницы во всплывающем окне?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Прочитайте документацию этого плагина.
    Там есть возможность открывать необходимую информацию в попапе.
    Другой вопрос, что именно вы хотите открыть в попап.
    www.themepunch.com.cach3.com/index.html@p=5645
    https://www.themepunch.com/essgrid-doc/lightbox-op...
    Ответ написан
    Комментировать
  • Верстка под wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Все возможно. Зависит от вас и от того, как именно вы реализуете функционал
    Ответ написан
    2 комментария
  • Как сделать модальное окно Wordpress на своей верстке?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    это через WP или нужен чистый CSS/JS?

    что вы подразумеваете под реализацией через WP?
    Если нужны плагины, то вот:
    Popup Maker, Easy Modal

    Если тема на бустрапе, то тут подсказывать даже нечего.
    Также можно подключить любую jQuery библиотеку для модалок и т.д.
    Ответ написан
  • Пара вопросов: background для записей категорий wordpress, header?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    для одиночной записи понятно:

    .postid-1 {
    
    background-image: url(".... ") ;
    ...
    }


    В теории это не совсем одиночная запись, а запись с ID равным 1 postid-1
    Думаю, что это некорректный способ присваивания стиля для одиночной записи.

    как установить общий фон "X" для всех записей входящих в категорию 1?

    Подобная логика должна решаться на уровне рнр.
    Прочитайте про условные теги ВП.
    https://wp-kama.ru/id_89/uslovnyie-tegi-v-wordpres...

    Второй вопрос. Установил отступ для хедера
    аналогично первому вопросу - как реализовать отступ только на домашней странице (на домашней странице предполагается временно), в категориях (всех записях категорий)?


    Ответом на все ваши вопрос будут - условные теги Wordpress.

    Для домашней страницы логика:

    if( is_front_page() || is_home ) {
    // вставляем стили для главной
    }


    Для одиночной записи тег
    if( is_single()  ) {
    // вставляем стили для одиночной записи
    }


    Для проверки находится ли запись в определенной категории (рубрике)

    if ( in_category( 10 ) ) {
    // вставляем стили для записи, которая находится в рубрике с ID 10
    }
    Ответ написан
    Комментировать