• Как реализовать динамические атрибуты товара Laravel?

    @tukreb
    Создание EAV - проблемы в будущем.
    Используйте JSON
    https://coussej.github.io/2016/01/14/Replacing-EAV...
    Ответ написан
    Комментировать
  • Как работает подход Unit of Work?

    @Flying
    Unit of Work - это паттерн определяющий логическую транзакцию т.е. атомарную синхронизацию изменений в объектах, помещённых в объект UoW с хранилищем (базой данных).

    Если обратиться к исходному описанию этого паттерна у Мартина Фаулера - то видно что объект, реализующий этот паттерн отвечает за накопление информации о том какие объекты входят в транзакцию и каковы их изменния относительно исходных значений в хранилище. Основная работа производится в методе commit() который отвечает за вычисление изменений в сохранённых в UoW объектах и синхронизацию этих изменений с хранилищем (базой данных).

    Паттерн Unit of Work как правило не является полностью самостоятельным, он обычно тесно связан с паттерном Identity Map, задача которого - сохранение карты созданных объектов, взятых из хранилища с тем чтобы гарантировать что одна единица информации из хранилища представлена ровно одним экземпляром объекта данных в приложении. Это позволяет избежать конфликтов изменений т.к. не допускает ситуации когда два объекта, представляющих один и тот же элемент данных в хранилище, изменены по-разному. Информация из Identity Map используется в методе commit() паттерна Unit of Work для вычисления разницы между исходными данными и накопленными изменениями.

    Поскольку для вычисления разницы (и, соответственно, определения того что и каким образом должно быть изменено в хранилище) необходимо знать какие данные и как именно хранятся в объектах - как правило необходима также реализация паттерна Metadata Mapping, описывающего связь между содержимым хранилища (к примеру таблицами и столбцами базы данных) и классами / свойствами объектов.

    Также, если данные в хранилище не являются независимыми (к примеру связи между таблицами в базе данных) - может потребоваться реализации ряда паттернов, отвечающих за сохранение информации о связях между данными (это паттерны раздела Object-Relational Structural Patterns в каталоге паттернов).

    Подводя итог: сам по себе Unit of Work довольно прост в своём внешнем интерфейсе, но реализация его корректной работы требует предоставления множества дополнительных данных, поэтому миниатюрных примеров привести не могу.

    Если говорить о PHP - то лучшей реализацией этих паттернов на PHP безусловно является Doctrine ORM. В частности в разделе Working with Objects документации Doctrine можно найти хорошее описание и множество примеров использования паттернов, описанных выше.
    Ответ написан
    6 комментариев
  • Что такое slug в разработке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Чаще всего, как уже написали, встречается в URL, но все же его значение чуть более шире - slug это уникальная строка идентификатор, понятная человеку (в отличие от ID) и содержащая только "безопасные" символы:
    - 0-9
    - a-z (общепринято - в нижнем регистре)
    - символ -
    - иногда еще символ _
    Могут использоваться не только в URL для понятности, но и, например, в запросах к БД (в первую очередь - на уровне АПИ) - ведь
    SELECT * FROM pages WHERE category="some-slug"
    более понятно, чем
    SELECT * FROM pages WHERE category=126.
    На уровне API это выглядит как
    get_pages_in_category( 'some-slug' )
    или
    $object->get_pages_in_category( 'some-slug' ).
    В общем, это человеко-понятный уникальный идентификатор.
    Ответ написан
    1 комментарий
  • Есть ли программы для написания кода голосом?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если научить алгоритм распознавания голоса следить за контекстом (имена переменных, структура кода, секция и возможные значения внутри неё) - это возможно будет реализовать.
    Также, сделать понимание системой распознавания вставки целых шаблонных блоков кода обработки данных с адаптацией к контексту.
    Примеры: "проверить переменную email на e-mail", "найти в массиве data наименьший элемент по значению", "получить общее количество пользователей из базы" и т.д.
    Т.е. всё то, что мы обычно произносим junior-ам (когда учим или просим их что-то конкретное сделать по более верхнему алгоритму), научить понимать систему распознавания и верно исполнять.
    Сложно ли - ДА.
    Перспективно ли - даже не обсуждается!
    Ответ написан
    Комментировать
  • Docker и базовые образы с разными дистрибутивами Linux?

    Tyranron
    @Tyranron
    Я понимаю что ядро одно, но окружение слишком разнообразное, мне нужна одна система.

    Зачем?

    Как использование кучи дистрибутивов скажется на производительности, если она очень важна вопреки удобству?

    Вообще никак.

    У Вас в контейнерах запускаются не дистрибутивы, и не "линуксы".
    В контейнерах запускаются процессы. И если это не кастомный образ, куда понапихано куча процессов с супервизором всего этого дела, то процесс запускается один. Вопрос производительности - это вопрос производительности Вашего процесса, и того как он работает. Если Вы запускаете, к примеру, mysqld, то какие там файлы остальные в контейнере лежат - по-барабану, потому что производительность mysqld зависит от него самого, его конфигурации, и ресурсов машины, а не от того, по чьему фэн-шую разложены файлы, CentOS'овскому, или Debian'овскому.
    Ответ написан
    Комментировать