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

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Чтобы забыть о проблеме на долго конечно лучший выбор отдельное объектное хранилище. Не обязательно это должно быть облачное решение, можно организовать self-hosted S3-совместимое решение с использованием https://min.io/. Это позволит использовать любую готовую библиотеку s3-клиента для работы с файлами (upload/download/delete)

    Плюсы - при правильной настройке размер хранилища можно бесконечно расширять и масштабировать/реплицировать.

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

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

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    сделать редирект после приёма формы

    header("Location: /new/url/");
    exit;
    Ответ написан
  • Можно ли как-то подменить свой IP адрес на сервере НЕ используя proxy или vpn?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Нормальные сайты не доверяют ip которые приходят в X-Forwarder-For
    Поэтому единственный надёжный способ смены ip это vpn/proxy так как сервер всегда видит фактический адрес с которого сделано соединение, как правило он лежит REMOTE_ADDR и подделать его нельзя.
    Ответ написан
    Комментировать
  • Какие способы существуют по отделению реальных пользователей от роботов, для статистики просмотра страниц?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Если речь про легитимные боты, например поисковые то подойдёт эта библиотека
    https://github.com/JayBizzle/Crawler-Detect

    Общий принцип это смотреть на HTTP-заголовки, user-agent как минимум, но подделать можно что угодно.
    Таких "умных" ботов можно вычислять только по поведенческим факторам, например отслеживать частоту запросов, находить определённые шаблоны в запросах и тд.
    Например запросы когда загружается страница, но не идут следом запросы на загрузку ресурсов (картинок, стилей js и тд).

    Можете посмотреть старенький доклад от 2ГИС про то как они защищаются от парсинга api
    https://www.youtube.com/watch?v=pYxnW7kYcbU
    Ответ написан
    Комментировать
  • Как правильно загружать изображения на сервер для их превью на клиенте?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Почитать про URL.createObjectURL https://learn.javascript.ru/blob

    <script>
    function preview() {
        frame.src=URL.createObjectURL(event.target.files[0]);
    }
    </script>
    
    <form>
      <input type="file" onchange="preview()">
      <img id="frame" src="" width="100px" height="100px"/>
    </form>
    Ответ написан
    5 комментариев
  • Как правильно оценивать сроки на разработку сайта в web студии?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    «В молодости я спросил у начальника, как оценить время на выполнение работы? И начальник ответил мне:
    — Время, которое ты планируешь, умножить на Пи пополам, плюс 2 недели.
    — Почему Пи пополам? — удивился я.
    — Потому что в реальной жизни ты никогда не будешь двигаться к своей цели напрямую, а скорее — по дуге окружности.
    — А почему плюс две недели?
    — А потому, что когда ты в итоге просрёшь все сроки, то за две недели хоть что-то успеешь сделать.» (с)
    Ответ написан
    1 комментарий
  • Как вести разработку сразу в сети?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    В PhpStorm есть возможность автоматической заливки изменений по ftp/sftp при сохранении файла по ctrl+s
    Tools -> Deployment -> Automatic upload

    Ещё вариант - использовать NFS и примонтировать файловую систему сервера как локальную
    А xdebug и прочие плюшки можно установить на удалённый сервер так же как и на локальный.
    Ответ написан
  • Как создать полностью анонимный и абузоустойчивый сайт?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Главное, если это будет очередной маркетплейс в даркнете, не регистрируйтесь там под именем Morzhovyj_h чтобы по никнейму не нашли концы, где в итогу дойдут до тостера и этого вопроса.
    https://habr.com/ru/post/376717/

    Ну и надеюсь автор вопроса не регистрировался на тостере по своей настоящей почте и использовал цепочку из 10 впн чтобы не спалить свой настоящий ip?
    Ответ написан
    Комментировать
  • Как подгружать списки регионов и стран на сайт?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Каждый раз вытягивать из базы
    1. По умолчанию выгружаем все страны
    2. Далее когда выбрали страну запрашиваем регионы в стране и показываем их

    Не стоит базу жалеть, она и нужна для того чтобы работать. Если выборки очень интенсивные и частые, тогда прикручиваем кэширование, которым как-раз и может являться экспорт данных в json файлы
    Ответ написан
    1 комментарий
  • Как зашифровать видео на сайте и разбить его через формат ts?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    https://nginx.org/ru/docs/http/ngx_http_hls_module.html
    но ts это не про шифрование, а про кодирование и оптимизацию передачи и видео m3u8 + ts скачиваются не сложнее чем простые .mp4

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

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    https://developer.mozilla.org/ru/docs/Web/API/Hist...

    <script>
        window.history.replaceState({}, null, '/');
    </script>
    Ответ написан
    Комментировать
  • Как понять, почему не проходит запрос в БД(mysql) из PHP(Apache)?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Используйте mysqli_error(); чтобы получить текст ошибки
    Точка с запятой в конце запроса роли не играет.
    В вопросе в первом примере нету "SET", а там где print() уже запрос с SET

    mysqli_query($link,"INSERT INTO users SET name='".$login."', password='".$password."';");
    var_dump(mysqli_error($link)); //<---


    5e8ad21f748a9497179543.png
    Ответ написан
    1 комментарий
  • Какой сейчас актуальный способ переноса сайта на https?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    От яндекса есть официальные рекомендации
    https://yandex.ru/support/webmaster/yandex-indexin...
    https://yandex.ru/support/webmaster/yandex-indexin...

    Проверенный способ без вылета страниц
    1. 301 редирект всех страниц http -> https
    2. в вебмастере ставим галочку переезд на https
    Именно переезд http -> https по момему опыту в яндексе происходит гладко и без особых просадок. Главное не накосячить с редиректом и ssl-сертификатом чтобы небыло роста отказов.

    Технически такой переезд это смена главного зеркала через редирект, но именно в случае http -> https в рамках одного домена, всё проходит с минимумом просадок, и как-правило после перехода на https всегда наблюдали по итогу рост трафика из ПС.
    Ответ написан
    Комментировать
  • Почему направляет не на файл, а на каталог?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Перенаправление из вашего .htaccess работает только если запрашиваемый путь (файл или папки) не существует
    То есть решение или удалить (переименовать) каталог /article/ или использовать другое имя скрипта (php)
    Ответ написан
  • Как сделать, чтобы у пользователей сразу прогружались новые файлы сайта (Без очищения кэша)?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Можно использовать авто-версионирование файлов по содержимому.
    Тогда при изменении содержимого css/js будет меняться url
    Пример реализации на PHP - https://overcoder.net/q/2604/как-заставить-браузер...
    Ответ написан
    Комментировать
  • Как ускорить отдачу динамически генерируемых thumbnail'ов на PHP + GD?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Генерация изображений по сути долгая так как упирается в ресурсы сервера (CPU) и ускорить тут (на лету) вряд ли особо получится.
    Самый правильный вариант - кешировать сгенерированные превью на диск.
    Можно оставить thumb.php как промежуточное звено, при первой генерации сохраняем резалт на диск, и при повторных запросах проверять что если файл thumbnail'а есть на диске - считывать и отдавать его.
    Но самый быстрый и оптимальный вариант это всё-же кешировать и отдавать превью напрямую веб сервером, (без РНР), например при аплоаде сразу делать нужные размеры.

    Можно обойтись вообще без РНР и использовать Модуль ngx_http_image_filter_module
    https://habr.com/en/post/94435/
    https://nginx.org/en/docs/http/ngx_http_image_filt...
    Ответ написан
    Комментировать
  • Как правильно хранить мультиязычный контент?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Если предполагается что для каждого языка одинаковый список категорий и статей, то лучше второй вариант.
    Причём содержимое статьи для любого языка лучше отделить от самой обёртки статьи.
    То есть 2 таблицы
    1. article - только общая информация, которая повторяется для каждой статьи, и никакой "общей версии" не содержит.
    2. article_data - содержимое статьи на определённом языке.

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