• Возможно ли дополнить видео до требуемого разрешения?

    @pumpkinm
    Однако при встраивании видео на сайт (с помощью тега video) происходит проблема - если развернуть видео на весь экран, то надписи становятся нечёткими, т.е. возникает размытие.

    <style>
    video { 
      object-fit: none;
    }
    </style>


    или лучше
    <style>
    video { 
      object-fit: scale-down;
    }
    </style>
    Ответ написан
    1 комментарий
  • Как вывести всех родителей у подкатегории до главной категории?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH RECURSIVE
    cte AS ( SELECT *, 1 level
             FROM category 
             WHERE id = $category_id
             UNION ALL
             SELECT cat.*, cte.level + 1
             FROM category cat
             JOIN cte ON cat.id = cte.parent_id )
    SELECT *
    FROM cte
    ORDER BY level;

    Для древних версий:
    SELECT CONCAT_WS('=>', c1.id, c2.id, c3.id, c4.id, c5.id) path
    FROM category c1
    LEFT JOIN category c2 ON c1.parent_id = c2.id
    LEFT JOIN category c3 ON c2.parent_id = c3.id
    LEFT JOIN category c4 ON c3.parent_id = c4.id
    LEFT JOIN category c5 ON c4.parent_id = c5.id
    WHERE c1.id = $category_id

    Ну соответственно подрихтовать до нужного вида выходного набора.
    Ответ написан
    4 комментария
  • Как правильно организовать систему контроллеров в mvc паттерне?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    К сожалению, плохих статей в интернете куда больше чем хороших.
    Вот эта, например, вводит совершенно ненужную конструкцию, завязывая зачем-то внутреннюю структуру приложения на структуру НТТР запроса. Хотя разумеется они вообще никак не связаны.
    Вам надо просто уйти от этой дурацкой схемы имя/действие/операнд. В реальности так никто не делает.
    Если бы адресация любого приложения могла вписываться в эту схему, то отдельный роутинг был бы просто не нужен. Да, для некоторых контроллеров это годится. Для других - нет. И при этом внутренняя структура приложения может вообще ничего общего не иметь с порядком ключевых слов в НТТР запросе.

    В данном случае notebooks_and_computers/notebooks - это просто SEO мусор, который вообще не нужен для отображения товара. Для которого нужен только айди товара. Ну вот и запускается контроллер витрины с экшеном отображения карточки товара.
    Ответ написан
    2 комментария
  • Какую структуру таблиц выбрать для описания некоторой сущности, у представителей которой часть атрибутов совпадает, а часть - различна?

    hint000
    @hint000
    у админа три руки
    Как быть в этом случае? Создавать единую таблицу с кучей null или же несколько раздельных таблиц? Или делать таблицу для общих свойств и вспомогательные таблицы для дополнительных свойств? Может, есть некая общепринятая практика в этом случае?
    Нет чёткой общепринятой практики, потому что в разных случаях оптимальное решение может быть разное, в зависимости от постановки задачи.
    Иногда "единую таблицу с кучей null", иногда json, иногда EAV (не рекомендуется, но всё же лучше иметь возможность (знать о возможности), чем не иметь возможность): https://qna.habr.com/q/1224626
    У каждого варианта свои минусы и плюсы.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Путей много. Можно завести 2 таблички. Одна для новых машин. Другая - для подержанных. Со
    своими наборами пропертей. Тогда и индексы строить удобно.
    И с точки зрения типизации этот подход верный. Если язык разработки (Python/PHP) различает
    типы машин - то для каждого типа нужна отдельная табличка. Это в духе ORM.
    Недостаток - надо делать union all двух таблиц если мы хотим делать поиск по общим пропертям.

    Можно завести 1 табличку с полем типа JSON и свалить туда все проперти которые могут быть
    опциональны для новых машин и для Б/У. Это делает схему более компактной. И поиск по основным
    полям работает универсально. Для кастомных полей надо искать описание в MySQL языков работающих
    с JSON (JSonPath) для того чтоб выбирать и фильтровать и индексировать их.

    Можно поступить как в BigData. Свалить все проперти что есть в одну большую таблицу. Будет в ней
    допустим 500 колонок. И большая часть из них - пустая. Заполняется null. Такая модель тоже работоспособна.
    Но для человека наблюдающего глазами таблицу будет неудобно с ней работать. Особенно когда нужное
    тебе поле находится где-то на 400х колонках и надо скроллить грид мышкой вправо чтоб хотя-бы прочитать
    глазами значения. И эволюция такой схемы проходит тяжелее. Т.к. alter table обычно блокирует таблицу
    от транзакций DML и нужен регламент что добавлять новую колонку.
    Ответ написан
    Комментировать