Задать вопрос
  • Как лучше реализовать корзину для магазина?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    На все эти вопросы легко ответить самостоятельно, если просто немного подумать.
    Никакое знание РНР тут не требуется - только здравый смысл и минимальное понимание принципа работы веб-сайта.

    Обычно для анрегов корзина делается в сессии, а для регов - в базе.
    При логине и наличии корзины в сессии, содержимое мержится с корзиной в базе. То есть такого вопроса "как сделать идентификацию" в принципе не возникает - все делается само собой. Когда юзер авторизовался, у нас есть и его ид, и сессиия. Что тут может быть не ясно?
    Ответ написан
    Комментировать
  • Создания уникального чата: sql, node, socket.io?

    @alexalexes
    Есть роль А И B. Только роль A может начать чат с ролью B

    Роли у пользователей заданы на уровне учетной записи и не меняются от чата к чату или определяются в момент создания чата?
    То есть при создании чата будут определена роль администратора (создателя) которая будет более привилегирована, чем тот, кому он пишет?
    Чат может содержать только 2х лиц

    Вы очень оптимистичны, выставляя такое ограничение. В следующей итерации разработки вам захочется сделать функционал группового чата. Тогда наличие колонок user_id, second_user_id вам встанет боком.
    В таблицу chat лучше добавить такие колонки:
    id - идент. чата
    date_create - дата создания
    id_user_creator - кто создал чат
    title - название чата (в этой итерации разработки можно не вставлять)
    Для участников чата лучше предусмотреть таблицу chat_participant:
    id - идент. участника
    id_chat - идент. чата из таблицы chat
    id_role - роль в чате (если она определяется в момент создания, для группового чата)
    id_user - пользователь чата
    id_last_read_message - идент. последнего прочитанного сообщения (самый простой вариант, как отмечать что прочитано, и потом определять, есть ли новые сообщения)
    date_include - дата вступления в чат (для группового чата)
    date_exclude - дата исключения из чата (для группового чата)
    Для сообщений чата - таблица chat_message:
    id - id сообщения
    id_partic/id_user - автор сообщения (можно реализовать как по ключу от таблицы участника, так и по таблице пользователей)
    date_create - дата создания сообщения
    date_update - дата обновления сообщения (для продвинутого функционала редактирования сообщений)
    date_delete - дата удаления сообщения (для продвинутого функционала редактирования сообщений)
    text_message - текст сообщения
    Если совсем хотите быть продвинуты в функционале редактирования сообщений, то вы захотите хранить историю изменения сообщений в таблице chat_message_history:
    id - идент. истории
    id_next - указатель на следующую запись истории
    id_message - идент. сообщения
    date_change - дата изменения сообщения
    id_user/id_partic - кто изменил
    text_message - состояние текста сообщения
    Ответ написан
    Комментировать
  • Как сделать так, чтобы два объекта хаотично двигались по экрану?

    Griboks
    @Griboks Куратор тега Unity
    Если хаотично, то каждый фрейм устанавливаете случайные координаты.
    Если плавно, то каждый фрейм прибавляете или отнимаете случайное число от вектора рывка (это r'''), а затем интегрируете 3 раза. Чем большего порядка производную вы меняете, тем плавнее траектория.
    Также может двигать объекты через случайно параметризированные кривые Безье.
    И еще много много способов.
    Ответ написан
    1 комментарий
  • Почему PATH_SEPARATOR выдает ':' вместо '/'?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    PATH_SEPARATOR - это разделитель путей в переменной окружения PATH
    Вам нужен DIRECTORY_SEPARATOR

    https://www.php.net/manual/ru/dir.constants.php
    https://stackoverflow.com/questions/9769052/why-is...
    Ответ написан
    Комментировать
  • Почему PATH_SEPARATOR выдает ':' вместо '/'?

    BoShurik
    @BoShurik
    Symfony developer
    https://www.php.net/manual/ru/dir.constants.php

    Путаете PATH_SEPARATOR (тот который в переменной окружения PATH) и DIRECTORY_SEPARATOR
    Ответ написан
    Комментировать
  • Почему не работает sticky?

    victory_vas
    @victory_vas
    sticky может не работать, если у любого из родителей стоит overflow: hidden
    Ответ написан
    Комментировать
  • Стоит ли учить php в 2021 году для разработки web приложений и сайтов?

    @thisuserhatephp
    Офлайн - losers Онлайн - lusers
    Никогда не понимал причем тут год и яп. Прыщавые иксперты с дырявыми мозгами и мне в свое время давали такие советы и наставления, мол не учи то, не учи се, сейчас такой-то год....
    Когда же вы поймете, что стек нужно выбирать не смотря на календарь, а исходя из тз которое решает данный стек. Если твою задачу лучше всего решает паскаль, то плевать какой сейчас год, хоть 5021-ый, нужно выбирать паскаль, а не что-то другое, потому что васян в коммах на форуме написал "паскаль в 2021 ? пхпхпха"

    Актуально ли php в 2021 году и стоит ли учить его?

    Если тебе позволяет время, то учить нужно все, что связанно с твоим стеком, а так кончено же актуально
    Ответ написан
  • Почему верстальщики хотят верстать из .psd и не хотят Фигму? Что можно им предложить?

    verkhoturov
    @verkhoturov
    Frontend Developer
    Верстальщик на связи. От коллег в недоумении, фигма отличный инструмент.

    Во-первых, есть веб-версия, не нужно ничего устанавливать \ обновлять.
    Во-вторых, командная работа.
    Можно оставлять комментарии прямо в макете, видно курсоры юзеров, которые тоже смотрят проект (намного проще обсуждать макет на созвоне, когда видно куда смотрит человек). Чтобы кому-то из коллег показать макет, достаточно кинуть ссылку.
    В-третьих, так как проект в сети, нет путаницы с файлами, которые тебе досылает дизайнер, если в макете были какие-то правки.

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

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1)let arr = str.split(' ');
    Возьмет строку, в данном случае 'aa bb cc aa bb aa', разобьет на части используя пробел как разделитель. В результате получим:
    let arr = ['aa', 'bb', 'cc', ' aa', 'bb', 'aa']
    2) Следующий кусок кода просто произведет подсчет одинаковых частей.
    return arr.reduce((acc, rec, index) => {
        return (typeof acc[rec] !== 'undefined')
          ? { ...acc, [rec]: acc[rec] + 1 }
          : { ...acc, [rec]: 1 }
      }, {});
    Рассмотрим его подробнее. Начнем с аргументов:
    acc – последний результат вызова функции, он же «промежуточный результат».
    rec – текущий элемент массива, элементы перебираются по очереди слева-направо.
    index – номер текущего элемента.

    Что собственно происходит:
    -typeof acc[rec] !== 'undefined' проверит есть ли в объекте 'acc' ключ 'rec'.
    - и если мы уже встречали такой( например когда "aa", но уже во второй раз ), тогда изменить значение этого ключа прибавив 1.{ ...acc, [rec]: acc[rec] + 1 }
    - если же такого ключа еще не было, то создадим его со значением 1, ибо он в первый раз попался{ ...acc, [rec]: 1 }
    Ответ написан
    6 комментариев
  • Смогу ли начать делать сайты?

    SoulSol
    @SoulSol
    BAN
    Сам был в такой ситуации. Советую начать с PSD шаблонов, короче повторять сайты с картинки. Вот парочка сайтов PSD шаблонами. Мне помогло. Надеюсь вам тоже поможет ;)

    psd-html-css.ru/shablony/psd-shablony-saytov
    psd-html-css.ru
    https://all-psd.ru/site-templates/
    https://camouf.ru/designes/ready-psd-layouts-for-saito/
    Ответ написан
    1 комментарий
  • Как правильно делать маршруты в Laravel 8 конкретных страниц из Базы данных?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Ну, в целом всё выглядит верным, если хочется именно так сделать.

    По мелочи:
    • Вы в роуте указываете байндинг модели, но не используете его в контроллере.
    • Оба метода можно объединить в один, сделав 'home-page' дефолтным значением. Редиректить можно тогда, когда запрос пришёл явно на /home-page, а кода будет меньше.
    • В запросе with() имеет смысл указывать когда речь про коллекцию, для одного элемента разницы не будет. Собственно, у вас из-за задвоения кода в одном методе жадная загрузка указана, а в другом нет и всё работает тем не менее.
    • $data->increment('views'), если хотите, чтобы у вас правильно статистика считалась.
    • Почему у вас объект модели Page сохраняется в переменную с неинформативным названием $data?
    Ответ написан
    1 комментарий
  • Почему принято писать пробелы вместо табов?

    bingo347
    @bingo347
    Crazy on performance...
    Заходишь ты такой на удаленный сервак, по быстрому код или конфиг поправить, открываешь vim, который никто конечно там не настраивал, и радуешься чуду сохранившему файл с табами вместо пробелов...
    qsb96gmeipstteh5wmjk7u_nxl8.png
    Думаешь, ну может хоть nano настроили... но и он с настройками по умолчанию...
    fkqekzsjqotfscd_auronmlwu-0.png

    А на счет eslint, так в нормальных командах конфиг под себя пишут, а не берут разное готовую х.. (от гугла, air bnb и тд), явно не для читабельности сделанную, особенно с отступами в 2 пробела, которые вообще не различимы с 13" ноута с QHD... зато при callback-hell позволяют позже горизонтальным скроллом воспользоваться... И ведь callback-hell у них явно присутствует, так как eslint имеет встроенные правила для его контроля, но в готовых конфигах они поголовно отключены...
    Ответ написан
    5 комментариев
  • PHP стоит ли изучать язык по материалам 2015 года?

    Sanes
    @Sanes
    Изучай, если ты эти материалы понимаешь лучше других.
    Ответ написан
    7 комментариев
  • Как сделать функцию которая будет запускать скрипт через крон?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    нельзя запускать функцией скрипт "через крон"
    считайте что крон это запускальщик сам по себе
    то есть всё что нужно это добавить задачу В КРОН на запуск скрипта каждые 5 минут
    команда для запуска примерно такая
    php /путь/до/скрипта/файл.php
    Ответ написан
    Комментировать
  • Низкая производительность нового ноутбука. Что делать?

    Jump
    @Jump
    Системный администратор со стажем.
    Вроде должен летать
    Почему это? Потому что новый?

    а на деле задумывается при работе с браузером
    Вполне ожидаемая ситуация.

    Есть минимум необходимый для комфортной работы в офисном режиме-
    • Оперативная память не менее 8Гб.
    • SSD диск под систему
    • Процессор с тактовой частотой не менее 2Ггц.

    От такой конфигурации можно ожидать комфортной работы при офисных задачах. Для тяжелых задач этого будет уже маловато.

    У вас - явная нехватка оперативной памяти, медленный HDD, и процессор с тактовой частотой 1,6Ггц.
    Да он просто обязан тормозить!
    Ответ написан
    28 комментариев
  • Сервис по запоминанию паролей к сайтам?

    coderisimo
    @coderisimo
    Решение от флагмана https://www.lastpass.com/ru/enterprise/user-management

    Кажется 4$ с человека.

    Насчет "смотреть" это вы конечно хватили... Но администрирование возможно.
    Ответ написан
    Комментировать
  • Лучший редактор html/css/js/php кода для встраивания на сайт?

    mtix
    @mtix
    Front-end developer
    Могу посоветовать хорошее решение на основе VS Code.

    https://microsoft.github.io/monaco-editor/ , есть в npm, а так же обёрки под различные фреймворки.

    Пример под React https://github.com/react-monaco-editor/react-monac...
    Ответ написан
    Комментировать
  • Почему ajax выводит весь исходный код?

    arutyunov
    @arutyunov
    Mooza.ru — Делаем сайты
    Добавьте в $.ajax параметр dataType: 'json'. Он result сейчас читает как текст, а не как json.
    Ответ написан
    Комментировать