Ответы пользователя по тегу Веб-разработка
  • Каким образом лучше создать администратора в Spring Boot проекте?

    azerphoenix
    @azerphoenix Куратор тега Java
    Приветствую, коллега!
    Да, Spring посложнее, чем Django. Но раз тебе удобно писать именно на нем, то конечно же стоит писать backend на нем.
    И да, если уж делать проект по-хорошему, то тебе нужен Spring Security. Тебе нужно создать роль ADMIN.
    Так как проект простой, то можешь использовать In-Memory Auth.
    Так как ты пишешь REST, то скорее всего тебе нужно будет реализовать jwt auth.
    Чтобы по умолчанию при старте приложения создать пользователя, можешь имплементировать интерфейс CommandLineRunner и в методе run() создать юзеров и сохранить в БД.

    P.S. БД необязательно.
    Ответ написан
  • На каком языке CMS сайта будет работать быстрее?

    Здравствуйте!
    Прежде всего стоит различать такие термины, как CMS, CMF и фреймворки.
    Раз к вашему вопросу добавлен тег Java, то скажу следующее - как правило, на Java CMS не пишут. Можно конечно же написать, но так как такие языки, как Java и C# ориентированы на Enterprise, то обычно на них пишут веб-приложения с использованием различных фреймворков под конкретную задачу. К тому же, если сравнить готовые CMS написанные на Java (например, HippoCMS) и на РНР (например, WordPress), то вы заметите, что деплоить приложения написанные на Java сложнее, чем на РНР. Опять же знаменитая 5-ти минутная установка WP на сервер намного легче. + важный момент заключается в том, что CMS системы написанные на РНР можно развернуть на любых shared хостингам, в то время, как для Java развертывания приложений вам нужно подготовить сервер (VPS или VDS), установить Tomcat или любой другой сервлет-контейнер. Или же деплоить приложение в облако - AWS, Heroku и др. Как минимум, это требует доп. знаний и опыта или же привлечения доп. специалиста - DevOPS.
    Соответственно, не лучшая идея писать CMS на компилируемых языках. Java, C#, Kotlin, Scala и т.д.
    Также многое зависит непосредственно от разработчика. Если вы лучше владеете ЯП - python, то конечно же вам будет легче и лучше писать на нем, нежели на Java.
    Также стоит учесть, что CMS подразумевает некую универсальность применения и соответственно, на CMS может быть много лишнего кода (функционала), который вам и не нужен, но при этом потребляет ресурсы сервера. Или например, CMS может быть подточен на реализацию определенной цели. Например, на блог (как в случае с ВП), но при этом владельцу сайта может понадобится и интернет-магазин или еще что-нибудь. Довольно часто, из-за подобной универсальности приходится жертвовать архитектурой приложения, что непосредственно сказывается на быстродействии. Для наглядности - WP. Там в одной таблице wp_posts могут храниться различные данные (от записей и страниц, вплоть до товаров и объявлений и сообщений форума), хотя по факту каждый из них является отдельной сущностью.
    Также при разработке CMS систем предпочтение я бы отдавал интерпретируемым языкам и также учел бы их распространенность на хостингах. Тут опять-таки преимущество имеет РНР.
    Ответ написан
  • Парсинг (скрапинг) получение информации с сайтов, авторизация, инструменты, примеры?

    Здравствуйте!
    Начнем с простого, когда контент сайта загружается без фреймворков. Соответственно, нет никаких аяксов, не нужно никуда скроллить, чтобы получить следующую страницу или кликать на кнопки и т.д. для получения материалов. Т.е. вам достаточно отправить GET запрос на некий сайт и получить данные.
    В этом случае для парсинга будет достаточно библиотеки jsoup. Либо для своей кастомной реализации используйте DOM & SAX Parser.

    Теперь, чуть усложним задачу сайт точно также формируется без фреймворков, но для получения доступа к информации нужна авторизация. Если тут используется какая-то простая авторизация, то достаточно будет единожды получить кукисы и при каждом запросе указывать на сервер. Также не забывайте про referrer & User-agent.

    Теперь, еще усложним задачу - контент формируется динамически (посредством js-фреймворков или аякс запроса и т.д.). В этом случае jsoup не поможет, так как для загрузки контента вам нужно прокликать на кнопку (Загрузить еще) или проскроллить вниз, чтобы тригернуть загрузку контента и т.д. Т.е. вам нужна некая интерактивность. Для этого стоит посмотреть в сторону Selenium + (любой браузер). В качестве браузера можно использовать - firefox, chromium и др. Для быстродействия желательно использовать headless браузеры.

    Усложняем задачу дальше. Понадобилось авторизоваться и решить некую капчу. В часности рекапчу. Тут скажу заранее, что я сам когда-то давно искал возможные пути обхода и самое простое решение - использовать платный сервис.
    Ссылка на сайт - https://anti-captcha.com/
    После ввода имени пользователя и пароля селениум триггерит клик на капче, а дальше данные пересылаем на сервер и получаем решение капчи.

    Усложним задачу еще больше - различные honeypot. Тут как говорится кто на что горазд. Все зависит от конкретного сайта и конкретной реализации (софта) honeypot. Некоторые могут заблокировать по ip, если запрос был произведен на несуществующий урл. Например, на сайте всего 100 страниц, а вы запросили 101 страницу и попались в ловушку. Или например, вы заполнили невидимое input поле, которое в норме пользователь не видит и соответственно, не заполняет.

    Идем дальше - если вам нужна некая интерактивность (т.е. пользователь сайта должен иметь возможность самостоятельно парсить сайт), то вам нужна клиентская часть написанная на javascript. Подобные онлайн-сервисы имеются. Наберите в гугл web scraping online и увидите различные сервисы. Как правило, они предлагают установить некое расширение, при клике на котором он получает доступ к элементам DOM, а далее уже можно при помощи селекторов (id, xpath, class ) определить что нужно спарсить. Определить тип навигации / пагинации (например, пагинация при помощи нумерации страниц или пагинация при помощи кнопки Далее и др.). Тут могут свои подводные камни. Например, некоторые сайты при достижении максимальной страницы могут выдавать ошибку (404), некоторые не выдают ошибку и лишь показывают контент заново. Иногда нужно проверять страницу на наличие пустоты на странице (на отсутствие элементов по селектору). Иногда нужно проверять страницу на наличие ошибки 404 и т.д. В общем, это уже работа фронтэндера.

    Некоторые динамически формируемые страницы могут подгружать контент при помощи json или xml. Соответственно, для парсинга некоторых сайтов можно обойтись без использования selenium. А лишь запросить материалы по их внутреннему API, а затем при помощи gson или jackson спарсить их.

    Одним из универсальных инструментов парсинга, с которым мне приходилось сталкиваться была программа Visual Web Ripper. Стоит примерно 250-300 долларов. Программа подгружает контент сайта внутри себя через IE (может уже и обновили этот момент). А далее уже можно задавать условия парсинга и экспортировать данные.
    Ответ написан
  • Нужен совет, как оживить дроп сайт?

    Здравствуйте!
    Довольно долго занимался этим вопросом и пришел к следующим выводам:
    - иногда лучше не восстанавливать сайт, а лишь парсить нужные данные и создавать новый сайт на базе ВП. В любом случае в скачанном вами архиве лежит статика и круто, если она вообще полностью рабочая.
    - для скачивания использую консольное приложение wayback machine downloader написанный на Ruby. Его можно найти на github
    - После скачивания в зависимости от пожеланий заказчика либо пишу парсер (я например, пишу на java - jsoup) и собираю данные, импортирую их на ВП (либо через REST API или xlsx - плагин WP All Import) и переношу на новый дизайн (на ВП тему), либо создаю тему на основе той статики, которая имеется.
    - Иногда бывает лучше при парсинге не сохранять старые урлы, а настраивать корректные редиректы со старых на новые.
    Ответ написан
  • Как называется эта ветвь в программирование?

    Веб-разработка. Просто в вебе тоже есть разные направления... frontend backend etc.
    Ответ написан
  • Где лучше хранить изображения?

    Без разницы, где вы будете хранить медиафайлы. На проф. проектах они могут храниться на облачном хранилище (например, AWS).
    Если у вас shared хостинг, то обычно есть ограничения на inodes. В среднем 200 - 250 000. А значит, хостинг будет ограничен этим кол-вом файлов.
    Можно еще хранить на Google Drive (Use your drive), Dropbox (Use your Box) & Yandex Disk и т.д.
    Ответ написан
  • Какая есть альтернатива vueJS для spring Boot?

    Здравствуйте!
    Думаю, что вам стоит серьезно изучить о том. что такое фронтэнд и какие языки имеются для фронта. Если коротко, то html / css / js.
    Используемый фреймворк фронта не имеет никакого отношения к бекенду. Вы можете использовать React, Angular, VueJs и др. Ведь, по факту на беке это просто restful сервис, который отдает контент и взаимодействует с фронтом.
    Есть ли инструменты для фронтенда у python или быть может на ruby ?

    эти языки предназначены для бекенда. Соответственно, инструментов для фронта у них нет. Но и с фреймворками написанными на вышеуказанных языках (Django, RoR etc.) можно использовать абсолютно те же самые фреймворки, которые я указал выше.
    Ответ написан
  • "Скрипт" для загрузки файлов на сайт с помощью Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Как сделать так чтобы скрипт использовал мой браузер или был залогинен на нужном сайте.

    Selenium + любой браузер (chromium, firefox) + drive для этого браузера.
    Запускаете браузера в headless режиме и производите все что нужно (загрузить файлы и т.д.).
    Если нужно регулярно выполнять задачу, то добавьте системный процесс.
    Но на мой взгляд в вашем случае скриптовым язык будет лучше реализовать подобное. А-ля js, python.
    Ответ написан
  • Как создать такое такую кнопку на каждой странице?

    Вот, важные моменты:
    Создаете обычный div или button или a
    Добавляете ему в CSS свойство position:fixed или position:absolute; right: 0;
    По клику на кнопке средствами js отображаете другой div блок, который виден у вас на скрине справа внизу. Этому блоку например, назначаете position:absolute; right:0; bottom:0;
    Для отображения или скрытия блока используйте jQuery show() & hide() или toggle()
    Ответ написан
  • Сервис хостера: конструктор сайтов или VDS + Wordpress?

    Здравствуйте!
    Мое личное мнение, как человека, который постоянно наступает на грабли... не выбирайте конструкторы!
    WordPress vs Конструкторы - однозначно ВП. Но также важный момент что именно вы хотите реализовать. Для серьезных проектов может быть есть смысл смотреть в сторону CMF & фреймворков
    Ответ написан
  • Для веб разработки php важнее остальных ЯП?

    Никто и не говорит вам, что нужно изучить все ЯП подряд.
    Для сайтостроения достаточно html, css, js, php, sal, regex.
    Ну и изучите пару фреймворко (CMF) написанных на рнр (laravel, yii2) и cms (WordPress, Joomla, bitrix, Drupal). И можете ещё изучить js & css фреймворки( bootstrap, vuejs, react)

    Что касается других ЯП и веб-разработки, то они очень важны. Нельзя недооценивать Java, Python, Ruby, Javascript.
    Ответ написан
  • Social network на Wordpress хорошо или плохо?

    Здравствуйте!
    Соц. сеть и подобные сайты для реализации на ВП очень плохая идея. Подобные задачи нужно решать на уровне фреймворков.
    Ответ написан
  • Почему не подключились стили Wordpress?

    Вот, ваша ошибка:
    Вы пропустили slash символ
    wp_enqueue_style( 'calendar_first', get_stylesheet_directory_uri() . 'assets/css/eventCalendar.css' );
      wp_enqueue_style( 'calendar_second', get_stylesheet_directory_uri() . 'assets/css/eventCalendar_theme_responsive.css' );


    В начале assets должен быть slash /
    wp_enqueue_style( 'calendar_first', get_stylesheet_directory_uri() . '/assets/css/eventCalendar.css' );
    wp_enqueue_style( 'calendar_second', get_stylesheet_directory_uri() . '/assets/css/eventCalendar_theme_responsive.css' );


    Вот, ваш лог ошибок:
    http://webdanger.ru/wp-content/themes/Dovzhenko_underassets/css/eventCalendar_theme_responsive.css?ver=5.3.2 net::ERR_ABORTED 404 (Not Found)
    (index):36 GET http://webdanger.ru/wp-content/themes/Dovzhenko_underassets/css/eventCalendar.css?ver=5.3.2 net::ERR_ABORTED 404 (Not Found)


    Обратите внимание на:
    Dovzhenko_underassets
    Ответ написан
  • Какими способами и технологиями можно реализовать сайт строительной компании?

    Для лучшей кастомизации я бы в данном случае выбрал фреймворк вместо ВП. А вот, какой фреймворк вам стоит выбрать зависит от того, каким языком вы владеете... Если рнр, то Yii2 подойдет. Если .net, то ASP.NET Если Java, nj Spring вам в помощь. Ну а если python, то конечно же Django...

    И как можно реализовать такое: https://i.imgur.com/TOjiufG.mp4

    Я уже встречал готовые решения в интернете, которые используют js, canvas и многое другое. Если вы поищете на toster, то также найдете готвоые решения. Ну или гляньте в интернете.
    Ответ написан
  • Как отправлять email определяя необходимость отправки в runtime?

    azerphoenix
    @azerphoenix Куратор тега Java
    Не уверен, но если я правильно понимаю задачу, то вам по идее должны помочь Spring Email, @Scheduled для запуска по крону например, и @Async для асинхронной отправки. Но возможно, что есть варианты попроще
    Ответ написан
  • На сайте уже есть меню, но нужно чтоб оно было вертикально, как сделать?

    Прежде всего, огромное спасибо Ragtime Kitty за юмор))) Как говорится, какой вопрос, такой и ответ...
    А сейчас, если честно, то у вас на сайте сейчас горизонтальное меню и скорее всего по верстке вертикальное меню туда не подойдет.
    Что касается самого меню, то поверьте тут ВП ни причем. Скорее тут важна верстка. Соответственно, нужны знания html css js. Если вам сложно разбираться с этими языками и писать свой код, то можете попробовать готовые плагины или сниппеты кодов.
    Вот, вертикальное меню плагин - https://wordpress.org/plugins/bellows-accordion-menu
    Далее вы можете использовать Uber Menu. Универсальный плагин.

    Вот, готовые сниппеты - https://bootsnipp.com/search?q=vertical+menu
    Вот, еще примеры - https://freebiesupply.com/blog/css-menus/
    Правда, тут вам все-таки понадобятся знания кодинга, в частности Walker (смотрите WP Codex - Walker) + html + css + js
    Ответ написан
  • Как корректно считать данные с веб страницы и положить в бд?

    azerphoenix
    @azerphoenix Куратор тега Java
    Здравствуйте!

    Первое, что сразу попадается на глаза -
    public interface UserRepo extends CrudRepository<ClientOrder, Integer> {
    }


    public class ClientOrder {
    
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name = "id", nullable = false)
        private Long id;


    Обратите внимание, что создали вы тип Long, а используете Integer

    Соответственно, должно быть так
    public interface UserRepo extends CrudRepository<ClientOrder, Long>


    + это интерфейс, необязательно писать public

    + Надеюсь, что для сущности ClientOrder есть конструктор. Просто, в сниппете этого не увидел, решил уточнить. Если нет, то создайте:

    ClientOrder() {}

    По идее тут нужно раскомментировать строку
    public String savePerson(Model model,
                                 @ModelAttribute("personForm") ClientOrder personForm) {


    Проверку на пустоту лучше проводить не так:
    firstName != null && firstName.length() > 0
    а так:
    firstName != null && !firstName.isEmpty()
    так как у вас строка
    Ответ написан
  • Как сделать мобильную версию сайта на WP такой же, как турбо-страница яндекса?

    Кто-то подскажет, как это сделать? может, плагин какой есть?

    https://ru.wordpress.org/plugins/wptouch/ (премиум версия довольно хорошая, легко настраивается, легко кастомизируется, легко интегрируется)
    https://wordpress.org/plugins/wordpress-mobile-pack/
    Ответ написан