Ответы пользователя по тегу MySQL
  • Логика обновления в поле возраст для пользователей по мере их дня рождения в MySQL?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    SELECT
           birthday,
           (
               (YEAR(CURRENT_DATE) - YEAR(birthday)) -
               (DATE_FORMAT(CURRENT_DATE, '%m%d') < DATE_FORMAT(birthday, '%m%d'))
               ) AS age
    FROM User;

    Хранить не обязательно, вычислить можно запросом выше прям силами MySql
    Ответ написан
    1 комментарий
  • Как лучше спроектировать бд?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Важно.
    Еще важно понимать, что если появились колонки с индексом _1, _2 и тд - то что-то в проектировании пошло не так

    Таблица event

    - id
    - name
    - start_date
    - status
    - comment

    Таблица team

    - id
    - name

    Таблица stream

    - id
    - event_id
    - link
    - title

    Таблица event_team

    - event_id
    - team_id

    Связь событий с командами через таблицу event_team многие-ко-многим
    Связь событий и ивентов много-к-одной через stream.event_id
    Ответ написан
    Комментировать
  • Как правильно работать с двумя источниками данных почти одного типа сущности?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Ну зачем же дублировать поля
    Оставить одну таблицу products с n полей (общих)
    Добавить отдельную таблицу-маппер products <=> language (сначала предложил вариант с доп полем в самом products, но может быть ситуация когда один продукт есть на двух рынках)
    например со структурой product_id language
    Добавить таблицу extra_fields с полями product_id field_name value - получаем бесконечную масштабируемость разных полей для любого продукта
    favourite_products и users оставляем в прежней схеме
    Ответ написан
    1 комментарий
  • Какую программу веб-сервер для локальной разработки вы используете на MacOS High Sierra?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Раньше использовал Vagrant + PuPHPet для генерации конфигов, пока не особо понимал, как оно работает.

    Следующим шагом был отказ от PuPHPet в сторону собственноручно написанных Vagrantfile для проектов. (что логично - хоть сколько-нибудь сложный проект как ни крути потребует какой-то доработки напильником)

    Сейчас окончательно ушел от Vagrant в сторону Docker,

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

    Всякие MAMP/Open Server/ Denwer желательно насильно себе отключать и разбираться, как работает наш стек на самом деле, без сокрытия реализации. Это сложнее, но если есть желание расти - даст куда больше пользы, чем проблем.
    Ответ написан
    Комментировать
  • Чего не хватает моим функциям?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Если вы пишете такие продукты, что уперлись в производительности в PHP - мое почтение. (хотя что-то мне не верится). Особенно с такими примерами кода.

    Как правило логичным шагом при получении таких ограничений - переписывание узких мест на более производительных языках, как например поступают в Badoo. на C/go. А основная кодовая база ТАК выглядеть не должна ни при каких условиях.
    Используется функциональный подход - так где функции высшего порядка? где отсутствие глобальных состояний? Ваш начальник не умеет ни функциональный подход готовить, ни объектно-ориентированный.
    По факту - вашего начальника я бы не взял даже на должность джуниора - 15 лет писать вот такое, принципиально считать что твои велосипеды лучше всех сложившихся практик, и быть намертво уверенным в собственной правоте - это смерть для разработчика и для коллектива, в котором он работает, а если уж он еще и начальник в нем... Из-за таких как он и ходит в сообществе мнение о PHP как о плохом языке для обезьян.

    Пока молодой и не научился такому же подходу - меняй работу, иначе потеряешь кучу времени и на этой работе, и на переучивание в дальнейшем.

    Ну это как и у других - оффтоп с критикой твоего начальства.

    Что касается именно кода - обрати внимание на PSR соглашения - по форматированию кода, именованию переменных, сделаешь код более читаемым (www.php-fig.org/psr/) , это стандарт в индустрии и на скорость никак не повлияет, можешь даже начальнику показать.
    Дальше познакомься с PDO и понятиям SQL инъекций. Код приведенный в вопросе абсолютно небезопасен, и то, что параметр $settings задается разработчиком - не аргумент. Новый джун может запросто туда отправить просто $_POST при сабмите формы - и вы никак от этого не защититесь. Код должен быть защищенным изначально, а не дырявым и "но вы эти дыры не используйте".
    Листинги кода такой длины - нечитаемые, бейте на логические куски, книга Мартина Фаулера "Рефакторинг" в помощь, чтобы понять, как оптимально и правильно это сделать.
    Ответ написан
    5 комментариев
  • Единый API для cms как организовтаь?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Думаю, если
    (без namespace'ов и прочего) для своей cms.

    - то вам рано делать свою CMS. Лучше изучите качественные готовые решения.
    Ответ написан
    3 комментария
  • Как реализoвать всплытие кaртoчки клиентa при звoнке?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Между фронтендом и бэкендом устанавливаем WebSocket соединение
    По Webhook передаем в сокет событие
    C сервера оповещаем фронт, и инициируем событие показа карточки
    Ответ написан
    Комментировать
  • Как правильно расставить кавычки?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    Такой способ запроса - прямой путь к sql injection
    Правильнее использовать prepared statements ( php.net/manual/ru/pdo.prepared-statements.php )

    $sql= $db->prepare("UPDATE vt SET rc = :value");
    $sql->bindParam(':value',  $js['rc']);
    $sql->execute();
    Ответ написан
    2 комментария