Ответы пользователя по тегу Веб-разработка
  • Как реализовать корзину на LARAVEL?

    @MadridianFox
    Web-программист, многостаночник
    Корзину надо хранить в БД, привязывать к пользователю или к идетификатор сессии пользователя, если он не авторизован.
    В момент авторизации прописываем id пользователя в корзину текущей сессии.

    Обязательно предусмотреть крон-команду, котрая будет удалять слишком старые корзины не привязанные к пользователям.

    Часто корзина это не только набор товаров, но и какие-то более общие параметры, например промокод, поэтому лучше корзину делать из нескольких таблиц, например baskets и basket_items
    Ответ написан
    2 комментария
  • Где брать картинки по типу 1000x1000 для верстки?

    @MadridianFox
    Web-программист, многостаночник
    Ответ написан
    Комментировать
  • Почему GET запрос быстрее POST?

    @MadridianFox
    Web-программист, многостаночник
    А как вы измеряли скорость ответа?
    Если вы не написали бенчмарк, который на сотне тысяч итераций доказывает что один метод быстрее другого, то разница во времени ответа может быть случайностью.
    Важен ещё способ получения времени ответа, ведь можно измерять как время обработки запроса сервером, так и полное время отправки и получения ответа.

    Вообще чисто теоретически разница в скорости может происходить из того факта, что методом POST данные отправляются в другом виде, соответственно может быть затрачено разное время на формирование запроса, на отправку большего объёма данных и на чтение данных на сервере.
    Ну например, данные закодированные в multipart/form-data однозначно по размеру больше чем в query string.

    Но даже если допустить, что POST реально медленнее, то это не повод отказываться от него в пользу GET.
    Это какая-то преждевременная оптимизация получается. Какая там разница? 10 миллисекунд какие-нибудь? Для вас это настолько критично? Никто и не заметит. Вот когда упрётесь в скорость ответа, и когда эта небольшая разница будет решающей, тогда можно будет задуматься.

    Про важные данные - опасность есть ровно одна - те данные, которые указаны в query string вашего запроса, они попадут в историю браузера, в логи разных серверов, которые передают данные.
    Например вы отправляете форму входа методом GET.
    Ну и что что у пользователя в адресной строке мелькнёт его пароль - он же сам его и ввёл. А вот на сервере в логах apache или nginx появится строчка типа /login?user=vasya&pass=12345
    Само по себе это не очень страшно - ну логи, чё мне с них, у меня вся БД с пользователями под рукой.
    Но если кто-то найдёт уязвимость на вашем сайте и как-то прочитает логи, то будет плохо.
    Ответ написан
    1 комментарий
  • Проблема с контроллером и видом?

    @MadridianFox
    Web-программист, многостаночник
    Ваша "кнопка", которая ссылка, на самом деле указывает на страницу about/view, а не на blog/view, но в контроллере AboutController нет такого экшена.

    Вообще не помешало бы показать код ссылки и код контроллера. А ещё надо указать какой фреймворк вы используете.
    Ответ написан
  • Что сегодня подразумевается под веб-компонентами?

    @MadridianFox
    Web-программист, многостаночник
    Веб-компоненты - обобщающее название нескольких технологий, позволяющих создавать собственные элементы с инкапсулированными структурой, стилями и поведением.
    Т.е. вы создаёте один-два файла в какой-нибудь папочке, описываете в них разметку, стили и js-код и вызовом некоторых api-функций говорите браузеру - "вот мой собственный элемент с именем my-element, если встретишь тэг , то наполни его вот этим, стилизуй вот так и по событиям выполняй этот код".
    Технологии, которые это позволяют постепенно появляются в браузерах, но как обычно не полностью и не везде. Нужны полифилы.

    И да, веб-компонент мужского рода)
    Ответ написан
    1 комментарий
  • Какой веб-сервер использовать на Маке?

    @MadridianFox
    Web-программист, многостаночник
    Mamp, xampp и прочие это не веб-серверы, а наборы программ с панелью управления. Все они содержат в себе веб-сервер Apache, СУБД MySQL и интерпретатор PHP.
    Поэтому вообще не важно какую именно сборку вы выберете. На начальном этапе между ними нет никакой разницы - включил и работает. Дальше либо придётся копать глубже и вы полюбому будете пробовать разное и даже научитесь работать напрямую с программами. Либо глубже копать не придётся и тогда тем более не важно что вы поставите.
    Ответ написан
    Комментировать
  • Как сделать условие на класс body через php?

    @MadridianFox
    Web-программист, многостаночник
    1) технически на php именно то что вы хотите сделать невозможно, но можно на js, на стороне клиента такое провернуть
    2) если надо всё-таки на php, то привязываться надо не к разметке, а к какой-нибудь пременной
    3) если уж очень очень хочется сделать костыль, то можно проверить строку регулярным выражением. Именно строку, а не как вы написали - тэг в условии.
    Ответ написан
    Комментировать
  • Как в insert картинку добавить?

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

    @MadridianFox
    Web-программист, многостаночник
    Чем вас не устраивает первый вариант и в чём плюсы второго?
    Логика подсказывает, что дублировать пост для каждого юзера, который на него подписан это абсурд.
    Хотите сказать, что если я делаю пост в группу в которой 100к подписчиков, то я сразу создаю 100к записей в базе?
    Количество постов в таблице постов будет больше чем в первом варианте на несколько порядков и это только замедлит выборку.

    Однако, и первый способ гиганты вряд-ли используют прямо так. Постов в соцсетях и так миллиарды. Не могут они храниться в одной таблице так чтобы простой
    select * from posts join subscribe sub on(...) where sub.user_id=123
    выдавал результат за адекватное время.
    Скорее всего там какие-то архисложные индексы строятся, какие-то умные кэши используются, база распределена так, чтобы сотня машин одновременно искала, но каждая машина в своём куске таблицы...

    Не парьтесь. Делайте так как считаете нужным, но знайте, что при росте количества пользователей вам придётся ещё разок всё переписать, а при выходе на мировой уровень, скорее всего у вас уже будет команда спецов, и вы ещё пару раз всё перепишете с нуля на других технологиях.
    Ответ написан
  • Namespace в php - как использовать?

    @MadridianFox
    Web-программист, многостаночник
    Сами по себе неймспейсы для подключения файлов не предназначены. Это только способ называть классы короткими именами и разрешать конфликты, если два разных класса имеют одинаковое название.
    Но очень распространён (на уровне стандарта языка) подход, когда функция автозагрузки использует неймспейс как путь до файла с классом.
    Так что смотрите в сторону PSR-4 и функции spl_autoload_register.
    Ответ написан
    Комментировать
  • Как "активировать" часть php кода, если пользователь видит блок, в котором находится содержимое этого кода?

    @MadridianFox
    Web-программист, многостаночник
    Важно понимать, что сначала отрабатывает PHP, который формирует и отдаёт html, а уже потом. Браузер, приняв этот html, рендерит его, ну и если у чего-то там display:none, то не показывает этого.
    Вам надо сразу не генерировать этот div. Как это сделать зависит от того кода который у вас уже есть.
    Ответ написан
  • Golang подходит ли для создания сайтов?

    @MadridianFox
    Web-программист, многостаночник
    1) Go компилируемый, само собой скорость выше, но если вы на маленьком сайте упираетесь в скорость исполнения кода, то проблема скорее в коде, и выбор более быстрого языка избавит вас только от симптома, но не от болезни
    2) на seo влияет только то ЧТО вы отдаёте пауку. Не важно на каком языке пишется программа, которая отдаёт html
    3) Программа написанная на go сама работает как сервер. Более того, это не какой-то сервер приложений, как например tomcat, нет, вы сами будете писать цикл обработки входящих соединений - т.е. вам необходимо этот самый серер реализовать. В отличие от php+apache, где в качестве сервера выступает apache, который при необходимости вызывает php. Ставить ли apache или nginx перед go сервером вы решаете сами.
    4) Поддерживает. На скорость работы СУБД не влияет то, на каком языке написана программа, которая к ней обращается.
    5) Фреймворков уровня Yii2 или Symfony не наблюдается. Ситуация такая же как и с NodeJS - что-то есть, но комбайнов нет.
    6) Если что-то может слушать соккет - на этом можно написать сайт. Любой. Другое дело, что сайты визитки на Go не пишут (только ради забавы), а крупные сайты вообще имеют сложную архитектуру, такую что язык уже не имеет значения.
    7) Для php разработчика - да. Как минимум вы меняете скриптовый язык на компилируемый. Это значит что любое изменение кода требует компиляции, остановки работающего сервера, загрузки бинарника на его место и запуск. Кроме того вы меняете Stateless модель работы кода на полноценно работающую программу. Если на php у вас скрипт запускался заново при каждом http запросе, то программа на go запускается один раз и после этого принимает множество запросов.
    Ответ написан
    10 комментариев
  • Что почитать о динамическом выводе данных с сервера, без перезагрузки страницы?

    @MadridianFox
    Web-программист, многостаночник
    Если хотите много динамики на странице, то смотрите в сторону SPA (Single Page Application), т.к. jQuery лапша с ростом количества динамических частей на старнице начнёт запутываться.
    Но это отнюдь не "не очень сложное", т.к. мир SPA фреймворков это наверное одна из самых быстро развивающихся областей программирования.
    Ответ написан
    Комментировать
  • Как использовать функции другого файла в PHP?

    @MadridianFox
    Web-программист, многостаночник
    Если у вас нет классов, то без include никак.
    Но даже когда у вас функции являются методами классов, и настроена автозагрузка, то include тоже делается, только неявно.
    Поэтому совсем без include никак не получается.
    Ответ написан
    Комментировать
  • Что не так с запросом?

    @MadridianFox
    Web-программист, многостаночник
    Если вы создаёте кучу одинаковых таблиц с разными названиями - то у вас проблемы не с запросом как таковым, а с подходом к работе с БД.
    Что мешает создать одну таблицу, в которой дополнительно будет поле user?
    Ну и подобным образом вставлять данные в запрос тоже нехорошо. Любой пользователь может послать в POST вместо названия таблицы кусок sql кода, который либо удалит всю базу, либо позволит увидеть конфиденциальные данные.
    Ответ написан
    Комментировать
  • Как через xpath добраться до середины текста на php?

    @MadridianFox
    Web-программист, многостаночник
    XPath - способ добраться до элемента, но не редактирования DOM.
    Ответ написан
    Комментировать
  • Хватает ли использование одной датабазы Redis для проекта средней сложности?

    @MadridianFox
    Web-программист, многостаночник
    "Проект средней сложности" - это когда разработчику не так уж и сложно его реализовать. Кому-то не сложно в разумные сроки написать систему вроде этого же тостера, а кому-то сложно простой бложик на WP поднять.

    Если говорить о степени нагрузки (в виде количества одновременных пользователей) на систему, то понятие "средняя нагрузка", тоже довольно обширно.

    С другой стороны, даже если принять за среднюю нагрузку некоторое более-менее определённое число пользователей, то встаёт вопрос о конфигурации сервера, на котором располагается redis.
    Ответ написан
    Комментировать