• Как лучше организовать архитектуру проекта?

    @midia21
    Олег уже по сути изложил эту мысль, но я ее перефразирую. Суть DRY, как мне кажется, не в том чтобы бороться с дублирующимся кодом, а в том, чтобы бороться с дублирующимися концепциями. Объясню: какой-то кусок кода в двух местах проекта может быть схожим - появляется искушение вынести его в одну функцию или класс, однако концепции (дальнейшие планы) на эти куски кода могут быть совершенно разными, и в будущем, по мере детализации первоначальной бизнес идеи, эти два куска кода станут совершенно не похожими друг на друга.

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

    Если подытожить: не стоит бояться дублирующегося кода - стоит бояться дублирующихся концепций. В конечном счете не очень существенно сделать код короче убирая дублирующиеся куски - с эти справятся компиляторы или минимизаторы, которые кажется иногда обобщают дублирующийся код для оптимизации и в дальнейшем сводят весь огромный проект к одной длинной строке или бинарнику. С точки зрения архитектора по настоящему важно сделать код понятным и удобным для доработок. Это одна из основных целей программиста, имхо.
    Ответ написан
    Комментировать
  • Почему PHP кэширует содержимое скрипта при запуске из sudo?

    @midia21 Автор вопроса
    Разобрался :) Вобщем opcache всему виновник.
    Конфигурация:

    ; configuration for php opcache module
    ; priority=10
    zend_extension=opcache.so
    opcache.enable=1
    opcache.memory_consumption=8
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=65407
    opcache.validate_timestamps=0
    opcache.save_comments=1
    opcache.enable_cli=1
    opcache.file_cache_only=1
    opcache.file_cache_consistency_checks=1
    opcache.file_cache=/home/vagrant/.project/runtime/tmp/php_file_cache
    Ответ написан
  • Как реализовать проигрывание звука на сайте при получении пуш уведомления, на неактивной вкладке?

    @midia21 Автор вопроса
    Нашел проблему. Оказывается onMessage вызывается, только когда вкладка активна. Для фоновых вкладок нужно использовать setBackgroundMessageHandler. Но у этого метода не связи с DOM и поэтому не получится напрямую запустить аудио. Чтобы решить проблему можно на клиент из севис-воркера послать событие через postMessage, и принять его через

    navigator.serviceWorker.addEventListener("message", function (event) {
            notificationSound.play();
    });


    запустив "динь"
    Ответ написан
    Комментировать
  • Как сделать динамической секцию отзывов?

    @midia21 Автор вопроса
    Если кому-то интересно - остановился на плагине OptionTree
    Ответ написан
    Комментировать