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

    @alexalexes
    запрос для получение ссылки с использованием прокси, но я так подумал, а разница

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

    @alexalexes
    В вашем случае, если задание звучит именно так, то просто ставится ВордПресс, настраивается 3 роли пользователей, открывается возможность регистрации. Всё - любой пользователь может создать учётку на базе возможностей самой CMS.
    К сайту нужно подключить БД

    Если вы ставите любую CMS, это уже автоматически подразумевает, что вы провели романтическую ночь с мануалом по установке MySQL или PostgreSQL, и уже на зубок знаете какое имя пользователя вы создали в СУБД, и знаете параметры подключения к ней для сторонних клиентов, в роли которого выступит веб сервер с CMS.
    Ответ написан
    3 комментария
  • Могут ли скачать программу через DevTools?

    @alexalexes
    все исполнительные файлы во вкладке

    И что? Они отдают только тот контент, который доступен пользователю согласно его уровню прав доступа.
    Кроме сеансовых ключей в куках клиент ничем критическим не обладает с точки зрения безопасности приложения.
    Интерфейсная клиентская часть приложения закрытой по определению не является. Эксклюзивная часть кода под ста слоями абстракций находится на сервере, вы его никогда не увидите не будучи разработчиком, работающим в компании, которой принадлежит сайт.
    Получается если взять и вручную всё скопировать а потом собрать в редакторе кода

    Получите тряпичную куклу-марионетку, у которой обрезаны нити.
    Выглядит красиво (скопирован интерфейс и дизайн сайта), можете пошевелить руками и головой (открыть менюшку, вызвать модальные окна). Но не функционально (не можете делать запросы на сервер, чтобы изменить состояние пользователя или выполнить действие).
    Кукловод с крестовиной сидит на сервере - вы его не скопируете. Нити - это запросы к API сервера.
    Ответ написан
  • Хорошая ли идея создавать БД на стороне клиентской части (фронтенда)?

    @alexalexes
    СУБД на стороне клиента разработчику нужно воспринимать только в качестве разновидности кеша данных, для которого по счастливому случаю предусмотрен API в виде SQL.
    Какие проблемы?
    - Все те, что есть у любой подсистемы, что обеспечивает кеширование. То есть, нужно следить, чтобы в ней находились только актуальные данные. Обеспечивать своевременную синхронизацию данных с сервером, решать конфликты кеша и данных сервера. Если у вас для пользователя предусмотрено ведение учетной записи, то в локальную базу данных не должно загружаться никаких данных, не предусмотренные правами доступа пользователя.

    В любом случае, у вас эксклюзивная часть приложения, в которой, например, ведутся сведения об учетных записях пользователей, хранится состояние лицензий, должна находится на сервере. И там будет нормальная, взрослая СУБД.

    Суть в том, что имеющие SQL запросы (INSERT, JOINT LEFT - RIGT) делать на стороне клиента, и я задался вопросом себе, насколько это нужная задача, и какие аргументы мог бы противопоставить, что это нужно - не нужно?

    Если вы хотите собирать текст запросов на клиенте, передавать на сервер, и там исполнять.
    Не самый хороший вариант, но терпимо только в одном случае, если учетная запись пользователя в точности соответствует учетной записи в СУБД, и доступ к данным в СУБД четко ограничен правами доступа - из учетной записи в СУБД нельзя дотянуться ни до каких данных, не принадлежащих только этому пользователю.
    Но такое редко бывает, так что воздержитесь от этой практики, воспользуйтесь лучше GraphQL/TreeQL, чтобы ограничить API только тем функционалом и теми данными, которые необходимы для конкретного пользователя.
    Ответ написан
    2 комментария
  • Какой стек технологий выбрать для разработки веб-приложения по учету успеваемости студентов?

    @alexalexes
    Это дипломная работа и требований по языку и фреймворку нет. Из-за этого не могу определиться со стеком бэка.

    Пишите пояснительную записку. Вообще не отвлекайтесь на разработку. Оставьте реализацию на уровне статичных HTML. Для защиты диплома что-то реализовывать, кроме проектной документации - только терять время.
    Ответ написан
    Комментировать
  • Как правильно оповестить пользователю о занятых его данных?

    @alexalexes
    Любой способ приемлем для оповещения о неверном логине/почты при регистрации или авторизации. Главное, не скатиться до кейса "Вы ввели неверный пароль, который уже занят пользователем <логин/почта>".
    Ответ написан
    Комментировать
  • Как скрыть одну форму для комментария при заполнении другой?

    @alexalexes
    При нажатии "Добавить комментарий", пробежаться по всем формам и принудительно привести их в статус "свернуто", кроме той формы, где кликнули кнопку "Добавить комментарий".
    Ответ написан
    Комментировать
  • Как можно вывести на сайт документ Office?

    @alexalexes
    Любое решение, не связанное с развертыванием облачного офисного пакета на своем сервере, будет сводиться к виду:
    <iframe src="адрес_облачного_сервиса/просмотрщик_облачного_сервиса?url=url_файла_на_вашем_ресурсе_в_открытом_доступе">
    </iframe>
    Ответ написан
    5 комментариев
  • На чем писать маленький портал для тестирования сотрудников?

    @alexalexes
    Moodle. Но это про "развернуть систему для проведения курсов" из коробки, но тестирование там есть как элемент проверки освоения курса.
    Ответ написан
    Комментировать
  • Как настроить обмен данными между сайтами, для автоматического обновления данных?

    @alexalexes
    На ум приходит только организовать выгрузку на основном сайте обновленных данных каталога товаров в JSON или XML – формате, передачу и получение данных на дополнительных сайтах, и затем в цикле проводить запросы к базе, сравнение и обновление данных о стоимости каждого товара.

    Именно так и использовать, поскольку у вас нет единой базы данных на все сайты. Только нужно написать скрипты, чтобы все операции осуществлялись в полуавтоматическом режиме с логированием каждого действия и ошибок на каждом этапе импорта/экспорта.
    Подозреваю, 4 тыс. запросов к базе данных в цикле - не рационально, но как это сделать более разумно?

    Вообще, ерунда. Конечно, нужно продумать использовать очереди, если такой пакет обновлений проходит значительное время. И не забыть правильно настроить блокировки в транзакциях, чтобы не получить коллизии данных во время выполнения импорта/экспорта, если в это время будут делать заказы на изменяемый товар.
    PS:
    два дополнительных сайта на LARAVEL,

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

    @alexalexes
    Живой таймер в вебе обычно нужен, когда нужно открыть или закрыть какой-то функционал без перезагрузки страницы, на какой-то период:
    - открыть форму предзаказа с X часов;
    - начать, завершить онлайн тестирование;
    - открыть, закрыть подачу заявок, документов и т.д.
    - начать показывать видеотрансляцию в определенное время вместо статичной заставки (знакомо? до начало осталось 10 часов, 2 мин, ждем пользователя ... - это работа такого таймера).
    Ответ написан
    2 комментария
  • Какую базу данных использовать для такого проекта?

    @alexalexes
    Любую СУБД, с чем дружит php, и заводится с полточка: mySQL (лучше брать 8+ версию, а не 5.x, так как намучаетесь с реализацией аналогов оконных функций), postgresql и т.д.
    И ещё когда лучше реляционную и нереляционную использовать?

    Чем структуированнее и связаннее данные вводятся и выводятся в/из систему, тем проще ее сделать в реляционных сущностях.
    Различные шедулеры и таск менеджеры в реляционных СУБД на раз расписываются, нужно лишь набитый навык, как функциональную схему и потоки данных переложить на ER-диаграмму.
    Ответ написан
    Комментировать
  • Что будет с сайтом, если не платить за хостинг?

    @alexalexes
    Если в разделе "Резервные копии" не осталось никаких записей. То можно не вспоминать, что был какой-то сайт, а сразу переходить на тему его разработки сызнова.
    Если перешли на эту тему, то по вебархиву смотреть, что сохранилось там по части "как выглядели публичные разделы", и составлять ТЗ на разработку.
    PS: Еще вариант - выпросить контакты предыдущего разработчика. Вероятно, у него остался проект. Но вы же понимаете, что заказчик не просто так обратился к вам, и тот разработчик тоже понимает, почему с ним перестал работать заказчик.)
    Ответ написан
    Комментировать
  • Как извлечь данные из бд в number_format?

    @alexalexes
    1. Получить значение из базы в integer, или в другом целом формате.
    2. Сдвинуть разряды числа так, чтобы корректно выделить "центы" в нужной валюте - разделить на 100, 1000, 10^6.
    3. С помощью функции number_format() вставить нужные разделители, чтобы радовало глаз пользователя (ну, или было корректное отображение, как это принято в определенной стране).
    Ответ написан
    Комментировать
  • Хорошее ли решение разделение таблиц юзер и роли?

    @alexalexes
    Вы выделили в системе два класса сущностей. Одна - Пользователь, вторая - Роль.
    Под каждый класс нужна отдельная таблица.
    Как определить какие взаимоотношения между этими классами?
    Нужно примерить следующие коммутативные гипотезы:
    Первая пара гипотез:
    "Один пользователь должен (может) иметь только одну роль."
    "Одна роль должна (может) быть назначена многим пользователям."
    Вторая пара гипотез:
    "Один пользователь должен (может) иметь несколько ролей."
    "Одна роль должна (может) быть назначена многим пользователям."
    Если в вашей архитектуре системы справедлива первая пара гипотез, то вы строите взаимоотношение между классами Роль и Пользователь как "один ко многим". Это значит, что у таблицы Пользователь будет внешний ключ в виде идентификатора роли, тем самым вы каждому пользователю сможете назначить только одну роль. Но сами роли могут повторятся у разных пользователей.
    Если в вашей архитектуре системы справедлива вторая пара гипотез, то вы строите взаимоотношение между классами Роль и Пользователь как "многим ко многим". Для этого нужно создать промежуточную таблицу, например Пользователь_и_роль, в которой будут два внешних ключа - идентификатор пользователя и идентификатор роли пользователя (можно, но технически нужно еще создать еще идентификатор первичного ключа, чтобы можно было корректно обращаться к записям этой таблицы, не путая их). В этом случае каждому пользователю можно выделить целый набор ролей, не ограничиваясь одной ролью.
    Ответ написан
    Комментировать
  • Что является разработкой клиентской части?

    @alexalexes
    Все окружение браузера, до чего дотягивается JS интерпретатор - DOM-дерево, window, куки, локальное хранилище, интерфейсы XHR (он же ajax), web_sockets, api к графике/звуку - это все клиентская часть приложения.
    Вы можете полностью создать одностраничный сайт без применения фреймворков, веб-сервера, и просто сохранить в виде html файла (плюс еще несколько статичных css, img, js, font файлов, но это можно использовать без поднятия настоящего сервера) - и это будет полноценное клиентское приложение без серверной части.
    Ответ написан
    Комментировать
  • Как быстро сделать список адресов для скачивания?

    @alexalexes
    Если прямо "на коленке" нужно написать и за 5-20 минут получить список url к определенной странице.
    То открываете консоль браузера F12.
    Открываете вкладку "элементы", чтобы изучать дерево документа.
    Также заходите во вкладку "консоль" и с помощью document.querySelector пытаетесь написать CSS селектор, чтобы дотянуться до нужного img узла изображения. Если вам нужна ссылка на то, что выводится тегом img, то забираете атрибут src. А оригинал изображения может лежать в соседнем атрибуте этого же тега, например, data-src - тогда забираем его.
    Далее, пробуем получить список узлов img по заданному селектору с помощью document.querySelectorAll.
    Если функция подхватывает все узлы, то результат готов. Вам нужно подставить в url-ы домен ресурса или адрес текущей страницы (без части запроса), так как ссылки могут быть относительны.
    Можно накопить результат в виде массива, перевести в JSON и забрать строчку JSON из консоли. Если еще проще, то склеить результат в строку через запятую и тоже забрать из консоли.

    В отдельных случаях одним CSS селектором можно не обойтись, чтобы забрать все ссылки, или img узлы лежат не в постоянной структуре.
    Тогда нужно в несколько этапов получать содержимое.
    Сначала нужно научиться дотягиваться до узла-контейнера списка элементов (элементы - не обязательно интересующие Img узлы, ими могут быть какие-нибудь карточки товаров - тоже контейнеры).
    Потом от контейнера-карточки пытаемся дотянуться до нужного изображения.
    Далее организуем forEach, чтобы перебрать контейнеры-карточки.
    Ответ написан
  • Как сделать реализацию чата как в мессенджерах?

    @alexalexes
    что должно происходить при отправке первого сообщения пользователем А пользователю B?

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

    @alexalexes
    Берете статистику использования браузеров в проектах, которые охватывают основную аудиторию.
    Смотрите наиболее старые версии браузеров, которые используют более 1% пользователей - это будет нижняя планка поддерживаемых браузеров. Узнаете названия движков этих браузеров и их версии - эти данные вписываем в тех. задание.
    Через год снова смотрим статистику, и примечаем, как изменились версии, какие версии ушли ниже 1%.
    Если ваш начальник или какой-то ключевой пользователь, находящийся в этом 1%, упорно сидит на старом браузере, то этот момент прописываем отдельным пунктом в ТЗ - также регулярно интересуемся, не изменились ли у него предпочтения, чтобы занести эти изменения.
    Ответ написан
    Комментировать
  • Как сделать такую анимацию?

    @alexalexes
    63c28d38a84cb120374748.png
    Делаете два боковых контейнера (красные), чтобы были примерно по свойствам такие:
    position: absolute;
    width: 49%; /*ширина должна быть меньше 50%, но больше половины ширины основной колонки (синяя)*/
    left: 0; /*right: 0; - для правого контейнера*/
    overflow: hidden; /* чтобы текст не вылезал из бокового контейнера с другой стороны основной колонки */
    z-index: 1; /*у основной колонки (синяя) z-index должен быть больше, или текущее свойство меньше*/

    Теперь в эти контейнеры можете положить текст, обернутый в контейнер (абзац или div). Этими текстовыми контейнерами можно управлять теперь через css свойство transition left/right. Если возможностей css для анимации недостаточно, то привлекаете js для полного анимирования или только для переключения состояния анимации или для ее перезапуска.
    Ответ написан