• Изменение прав доступа у определенной группы в Linux?

    magrega
    @magrega
    Хочу уметь в LAMP
    Подскажите, а как прописать права так, чтобы они сохранялись для новых файлов в папке? У меня есть папка с почтой /var/mail/Maildir c подпапками new, cur, tmp. У всех этих папок даны права 775, но когда новые файлы туда попадают, они все только с правами чтения\записи пользователя-владельца и приходится вручную писать chmod 775, чтобы группа тоже получила доступ.
    Ответ написан
    1 комментарий
  • На чем лучше писать современный интернет магазин?

    Как выше уже высказались другие, без ТЗ, очевидно, сложно советовать что-то релевантное. Тем не менее, попробую, опираясь на упомянутый вами Laravel и высказанное пожелание:

    Поскольку нет легаси кода, можно сразу сделать модно и современно.


    Есть такая CMS, как October. Это очень аскетичная CMS, построенная поверх Laravel Framework. У неё свое хорошо задокументированное API, при этом, т.к. под капотом полноценный Laravel, вы можете использовать его гигантскую экосистему для своих нужд, если вдруг не хватит API самой CMS.

    Аскетичность заключается в том, что эта CMS полная противоположность всему, что вы знаете. В основном CMS это комбайны, на которые сверху ещё "докручиваются" фичи. В October из коробки даже нет системы пользователей, управления навигацией и т.п. Все это вы ставите при необходимости отдельными плагинами. Потому у вас не будет перегруженной админки, как минимум. Философия платформы хорошо ложится на философию Unix, которая в упрощенном виде звучит, как "Делайте что-то одно, но делайте это хорошо".

    В силу своей относительной молодости (чуть больше 6 лет) вы не найдете легаси под капотом. Есть важный нюанс, October не прыгает по каждой минорной версии Laravel, а базируется на LTS-релизах. Прямо сейчас идет активная работа над переездом на "шестёрку". С т.з. бизнеса это правильное решений, т.к. Laravel не придерживается SemVer.

    Немного о достижениях за 6 лет существования:

    • как лучшая Flat-file CMS 2018 по версии CMS Critic;
    • второй по популярности PHP CMS на GitHub;
    • самая популярная CMS на базе Laravel с 9700+ звёзд на Github по состоянию на апрель 2020.


    А теперь про e-commerce. На базе данной CMS построена экосистема Shopaholic, которая полностью следует философии October. Базовый одноименный плагин Shopaholic это только мощный каталог. Если нужна корзина, ставится плагин Orders, нужна онлайн-оплата, ставится плагин OmniPay, нужна сложная фильтрация — плагин Filter, ну и т.д. Это OpenCore-платформа, т.е. есть бесплатное базовое ядро, которое расширяется, как бесплатными, так и платными дополнениями. На Smashing Magazine можно найти "свежую" статью о том, как разработать магазин на Shopaholic, используя только бесплатные плагины.

    Плагины не содержат в себе "вьюхи", т.к. философия платформы заключается в том, что каждый магазин уникален. Потому дизайн и верстка будут кастомными. Если же нужно типовое решение, можно использовать одну из готовых тем. Если нужен SPA/PWA, можно расширить October одним из соответствующих плагинов для построения API.

    Экосистема Shopaholic пока не такая большая, проекту всего два года. Но он уже стал самым популярным e-commerce для October c 9000+ установок на апрель 2020. Но этот временный недостаток компенсируется потрясающим DX самой October CMS, которому полностью соответствует Shopaholic. Например, любую бизнес-логику можно заэкстендить с помощью стандартных методов. Т.о. образом то, чего не хватает реализуется прямыми руками без необходимости "костыляния" в ядре CMS или плагинов и без вынужденной необходимости заморозки их обновлений.

    Я не стану расписывать преимущества October CMS + Shopaholic перед другими платформами. Предлагаю посмотреть на код открытых плагинов и сделать выводы о качестве архитектуры самостоятельно. Главным недостатком Shopaholic, как e-commerce-платформы на данный момент является её молодость и, как следствие размер экосистемы и сообщества. Потому не на каждый случай есть готовый плагин или подходящая тема оформления. Предлагаю зайти в чат сообщества и поспрашивать участников, чем их зацепил Shopaholic. Многие там переехали с самых разных решений, от OpenCart до Bitrix.
    Ответ написан
    Комментировать
  • Yii2 и bootstrap 4, как обновить компоненты yiisoft/yii2-bootstrap до bootstrap4?

    @grozzzny
    Люблю кодить
    Подключите расширение через композер:
    composer require grozzzny/depends "dev-master"

    Затем в assets добавьте

    class AppAsset extends AssetBundle
    {
        public $depends = [
            'yii\web\YiiAsset',
            'grozzzny\depends\bootstrap4\Bootstrap4Asset',
            'grozzzny\depends\bootstrap4\Bootstrap4PluginAsset',
        ];
    }


    Класс Bootstrap4Asset при инициализации подписывается на события View и при возможности удаляет bootsrap 3
    class Bootstrap4Asset extends AssetBundle
    {
        public $sourcePath = '@vendor/twbs/bootstrap/dist';
        public $css = [
            'css/bootstrap.css',
        ];
    
        public function init()
        {
            parent::init(); // TODO: Change the autogenerated stub
            Yii::$app->view->on(View::EVENT_AFTER_RENDER, function (){
                unset(Yii::$app->view->assetBundles['yii\bootstrap\BootstrapAsset']);
            });
            Yii::$app->view->on(View::EVENT_BEGIN_BODY, function (){
                unset(Yii::$app->view->assetBundles['yii\bootstrap\BootstrapAsset']);
            });
        }
    }


    Таким образом можно играться с layouts.. Например админка может спокойно работать на bootstrap 3, а фронтенд на bootstrap 4.

    Но это еще не все.. Есть нюансы..
    С модальным окном пришлось унаследоваться от модального класса bootstrap 3
    С валидацией инпутов, перенаследовал миксины bootstrapa 4 и дописал в миксин реализацию от bootsrapa 3. (SCSS)
    Виджет меню стал примерно таким:
    <?= Nav::widget([
        'options' => ['class' => 'navbar-nav d-flex justify-content-between w-100'],
        'items' => [
            [
                'label' => ''Услуги,
                'options' => ['class' => 'nav-item'],
                'linkOptions' => ['class' => 'nav-link'],
                'url' => ['services'],
                'active' => Yii::$app->controller->id == 'services'
            ],
     ....
            [
                'label' => 'Контакты',
                'options' => ['class' => 'nav-item'],
                'linkOptions' => ['class' => 'nav-link'],
                'active' => Yii::$app->controller->id == 'contacts',
                'url' => ['/contacts']
            ]
        ]
    ]);?>

    Хлебные крошки:
    <nav aria-label="breadcrumb" class="mb-3">
        <?= Breadcrumbs::widget([
            'links' => $this->params['breadcrumbs'],
            'options' => ['class' => 'breadcrumb'],
            'tag' => 'ol',
            'itemTemplate' => "<li class='breadcrumb-item'>{link}</li>\n",
            'activeItemTemplate' => "<li class=\"breadcrumb-item active\" aria-current=\"page\">{link}</li>\n",
        ])?>
    </nav>

    Пагинация:
    <nav aria-label="Page navigation">
                <?= LinkPager::widget([
                    'pagination' => $provider->pagination,
                    'linkContainerOptions' => ['class' => 'page-item'],
                    'linkOptions' => ['class' => 'page-link'],
                    'disabledListItemSubTagOptions' => ['tag' => 'a', 'class' => 'page-link']
                ]) ?>
            </nav>


    Alerts:
    <?= Alert::widget([
                'options' => ['class' => 'alert alert-danger show', 'role' => 'alert'],
                'body' => $message,
            ]) ?>


    В общем в этой сборке cms от easyiicms, с которой можно спокойно работать с bootstrap 4. Там смеси от less и scss. CMS чисто шаблонная и измененная.. для себя писал, но решать вам
    composer create-project --prefer-dist --stability=dev grozzzny/yiicms www dev-master


    Вот еще надстройка Material Design for Bootstrap 4 с модулями от https://mdbootstrap.com:

    class AppAsset extends AssetBundle
    {
        public $depends = [
            ..
            //Material Design for Bootstrap 4
            'grozzzny\depends\mdbootstrap\MDBootstrapAsset',
            'grozzzny\depends\mdbootstrap\MDBootstrapPluginAsset',
            ..
       ];
    }


    В assetManager в главной конфигурации можно указать надстройки:
    'assetManager' => [
                'bundles' => [
                    // Если решили переопределить scss:
                    'grozzzny\depends\mdbootstrap\MDBootstrapAsset' => [
                        'basePath' => '@webroot',
                        'baseUrl' => '@web',
                        'css' => ['css/mdbootstrap/mdb.css'], 
                    ],
                    // Если решили подключить доступные модули в коллекции MDB:
                    'grozzzny\depends\mdbootstrap\MDBootstrapPluginAsset' => [
                        'chart' => true,
                        'enhancedModals' => true,
                        'formsFree' => true,
                        'jqueryEasing' => true,
                        'scrollingNavbar' => true,
                        'velocity' => true,
                        'waves' => true,
                        'wow' => true,
                    ],
                ],
            ],


    Создам нормальный лаяулт под Bootstrap 4 со всеми примерами и объяснениями, если данный ответ наберет лайки
    Ответ написан
    Комментировать
  • Не запускается mysql-сервер на MAMP - как решить проблемес?

    @falmer
    Переустановка - слишком глобально. Мне помогли следующие шаги:
    1. Убить все процессы MySQL. Например через терминал: sudo killall -9 mysqld
    2. Почистить логи. Удалить физически последний файл лога, который находится тут: Applications/MAMP/db/mysql/ и называется как-то так: ib_logfileN
    Ответ написан
    3 комментария
  • Где найти бесплатные медиа?

    wendalin
    @wendalin
    Internet Reaseacher in Tinkoff, Фрилансер, CW
    morguefile.com/archiveБесплатный фотобанк
    imageafter.com/index.phpБесплатный фотобанк
    freerangestock.com/index.phpФотобанк (нужна регистрация)
    www.freeimages.comФотобанк (нужна регистрация)
    www.everystockphoto.comБесплатный фотобанк
    www.firestock.ruБесплатный фотобанк
    ru.depositphotos.comПлатный фотосток
    www.pressfoto.ruПлатный фотосток
    www.photl.comБесплатный фотобанк (нужна регистрация)
    finda.photoБесплатный фотобанк
    magdeleine.co/browseБесплатный фотобанк
    https://unsplash.com/Бесплатный фотобанк
    ru.photl.comБесплатный фотобанк
    https://stocksnap.io/Бесплатный фотобанк
    https://freerangestock.com/Бесплатный фотобанк
    www.firestock.ruБесплатный фотобанк
    https://www.pexels.com/Бесплатный фотосток
    www.freepik.comБесплатный фотосток
    https://stocksnap.io/Бесплатный фотосток
    www.stockvault.netБесплатный фотосток
    https://pixabay.com/Бесплатный фотосток, вектор
    ru.freeimages.comБесплатный фотосток
    www.imcreator.com/freeБесплатный фотосток HD
    freerangestock.com/index.php
    www.morguefile.com
    www.photostockeditor.comФото в высоком разрешении
    Ответ написан
    1 комментарий
  • Где найти бесплатные медиа?

    Sanan07
    @Sanan07
    Писатель-прозаик
    Комментировать
  • Альтернатива checkbox или как его заставить возвращать false если он не активен?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Был старый-старый хак, думаю, что он работает и сейчас
    <input type = hidden name = cbx value = 0>
    <input type = checkbox name = cbx value = 1>


    Работает, как я понимаю, за счет того, что последующее значение затирает предыдущее.
    То есть, запрос выглядит как
    ..&cbx=0&cbx=1&...
    в итоге в скрипте получается что-то вроде идущих подряд
    $_GET['cbx'] = 0;
    $_GET['cbx'] = 1;

    И в итоге остается только один.

    Отсюда становится понятно, что важно соблюдать порядок - хидден должен идти всегда первым.
    Ответ написан
    1 комментарий