Задать вопрос
  • Как лучше хранить данные при пошаговой регистрации?

    @aleksejjjjj
    Поддержу Ипатьев. Вы хотите избавиться от 3-х запросов, чтобы что? У вас реально база рухнет от 3 запроса × на 10 регистраций в день?

    Можно конечно и на клиенте хранить, но смысл? Как минимум нужно валидировать каждый шаг. Вот прошёл юзер 10 шагов, отправил данные, а у вас fatal error на беке, такой email уже есть в базе. Усложняем логику в 10 раз, отправляем клиента на шаг #22, где он мыло вводил?

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    при сохранении в БД главная проблема не "бессмысленные запросы" (это какая-о дурацкая фобия, взять самый редко используемый функционал, и трястись над каждым запросом) а что потом делать с незавершенными регистрациями.
    Хранить на клиенте - это гонять уже введенные данные туда-сюда.
    Сессия для этого и придумана, чтобы хранить данные сеанса.
    Но в целом способ зависит от конкретных обстоятельств, например банки всегда сохраняют только в базу, чтобы потом дожать клиента, который оставил контакт на первом шаге.
    Ответ написан
    Комментировать
  • Как реализовываются микросервисные проекты?

    vabka
    @vabka Куратор тега Веб-разработка
    Под микросервисами обычно понимают N раздельных процессов, которые могут запускаться на разных компьютерах. Далее они уже коммуницируют через какой-то транспорт, если это вообще нужно.

    Это, например, два абсолютно разных проекта которые соединяются связью ? или это один проект, условный контейнер, и в нем создаются множество модулей ? что из этого реально является микросервисом и используется в реальности ?

    Как конкретно ведётся разработка - это уже на откуп команде. Подход легко может различаться исходя из языка/платформы.
    Ответ написан
    Комментировать
  • Как внедрять vue в проект на Yii2?

    copist
    @copist
    Empower people to give
    Ты сборку на базе webpack используешь?

    В Yii2 надо будет сделать два layout: один для обычных страниц (view/layouts/main.php), второй для страниц с Vue (view/layouts/vue.php)

    Для режима dev в файле view/layouts/vue.php нужно подключать JS скрипты, которые генерит npm start. Для этого открой исходный код страницы, которую раздаёт webpack и скопируй оттуда все подключенные <script>. Либо вручную, либо парсер напиши. Вроде бы у этих скриптов статичные имена, поэтому тут проще. Можно один раз скопировать и забыть.

    Для режима prod нужно в лэйауте view/layouts/vue.php подключать финальные сжатые JS скрипты, которые генерит npm run build - тут сложность в том, что эти скрипты с уникальными именами всегда.

    Попробую сделать пример на github
    Ответ написан
    5 комментариев
  • Yii2 Queue как остановить выполнение текущей задачи?

    REZ1DENT3
    @REZ1DENT3
    web-developer
    Если задача уже в работе, то её не остановить стандартными средствами Yii.

    Вы удалили задачу из очереди, но она уже в работе. Пока задача не выполнится, консьюмер будет работать.
    В случае с while (true) echo $i++; задача никогда не выполнится.
    Ответ написан
    2 комментария
  • Как правильно сравнить даты?

    @AnneSmith
    самая ленивая
    всегда все даты сравнивайте в timestamp и будет вам счастье
    Ответ написан
    Комментировать
  • Как создать очередь и запустить воркер динамически в yii2-queue?

    @sehav
    Мое решение:
    Отнаследовался от redisCommand
    use yii\queue\redis\Command;
    
    class RedisCommand extends Command
    {
        public function actionRun($channel = null)
        {
            if ($channel !== null) {
                $this->queue->channel = $channel;
            }
    
            return $this->queue->run(false);
        }
    }

    Подключил его в консольном конфиге
    'queue' => [
                'class' => \yii\queue\redis\Queue::class,
                'commandClass' => \app\commands\RedisCommand::class,
                'redis' => 'redis',
                'channel' => 'default', // Queue channel key
                'as log' => \yii\queue\LogBehavior::class,
            ]

    В консоли одноразово
    yii queue/run channel_group_1

    Для listen аналогично переопределите метод actionListen, только канал вторым параметром
    Команда будет выглядеть
    yii queue/run 3 channel_group_1
    Ответ написан
    Комментировать
  • Как правильно хранить контент поста?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Хранить html код в столбце поста кажется нецелесообразным по ряду причин:
    Угу, ага...

    Лишняя трата памяти на хранение html тегов
    Ого, а лишние это сколько? Экономия на байтах чаще всего приводит к тратам на вычислительные мощности. Некоторые расчеты чуть ниже.
    Уменьшение производительности (?)
    Производительности чего?

    Стили/компоненты могут изменяться, а код останется прежним
    Стили как раз и нужны для того, чтобы легко конфигурировать визуал, не привязываясь к коду. Код может быть каким угодно, но стилизация через теги пока что лучший вариант, который придумали разработчики.

    Использовать собственные минифицированные теги, благодаря которым определенный парсер будет воссоздавать нужные блоки с помощью компонентов (возможно динамичесих)
    Ага, переизобретаем BBCode, найс... Для понимания проблемы - такие коды придуманы для форумов, с целью ограничить использование хтмл в пользовательском вводе. При этом подходе он худо-бедно оправдан, хотя и требует постобработки при каждом выводе, а это использование регулярок, что как бы совсем не бесплатно. В вашем же случае, источник текста более-менее доверенный, и ограничение в тегах больше мешает чем помогает.
    Что касается экономии на "минифицированных" тегах, ну допустим сэкономите вы 100 байт на тегах, то есть на 1000 постов экономия будет.... ТА-ДАААМ! 0,1 мегабайта! А если экономия 1000 байт на пост, то целый МЕГАБАЙТ можно сэкономить! Похвальная рачительность.

    Хранить каждый элемент поста отдельно в бд со следующим содержанием (element_name, position, content, post_id), используя отношения к родительскому посту, соответственно сохранится структура и рендериться пост будет через соответствующие компоненты в нужном порядке (однако как будет именно рендериться в шаблоне поста пока неизвестно)
    Базовые элементы и так должны храниться отдельно, другой вопрос почему они у вас рендерятся в одном порядке, а в другом месте в другом порядке? Заголовок, короткое описание, текст, главное изображение - отдельные поля, оглавление по сути часть текста, зачем его выносить отдельно - загадка, это же такой же текст, котрый автор волен располагать . Вариант с внешней таблицей по сути приводит нас к выносу части данных в EAV(отличный пример универсализации в ущерб производительности), что как раз будет серьезно напрягать выборки бд, если понадобится делать какие-либо поисково-выборочные манипуляции по этим данным.
    Ответ написан
    6 комментариев
  • Как правильно хранить контент поста?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Использовать собственные минифицированные теги, благодаря которым определенный парсер будет воссоздавать нужные блоки с помощью компонентов (возможно динамичесих)

    20 лет назад этот вопрос был полнонстью решен с помощью технологий XML/XSLT/XPath.
    Языки C#/dotNet, Java поддерживают этот стек. И много других языков и библиотек.

    Потом еще создавали более простые вещи. Шаблонизаторы. Velocity, FreeMarker. Они немножко
    переворачивают постановку. Но их тоже можно рассмотреть.

    Хранить html код в столбце поста кажется нецелесообразным.

    С точки зрения суммарной стоимости владения (TCO) база данных всегда будет дороже
    чем файловая система. А самым дешевым будут хранилища типа Amazon S3, MS Blob, G-Drive.
    Ну если пересчитать удельно сколько стоит гигабайт.

    Хранить каждый элемент поста отдельно в бд со следующим содержанием (element_name, position, content, post_id),
    Тут - непонятно. Но есть такое эвристическое правило дизайна
    хороших NoSQL систем. Все данные для запроса должны лежать физически рядышком
    и не требовать дополнительных действий
    . В идеале - для отдачи поста вы должны сделать
    один единсвтвенный SELECT без joins и без подзапросов и агрегаций и без CONNECT-BY.
    Ответ написан
    2 комментария
  • Как вместо числа "5620", показывать "5,6K"?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вы какой-то не тот интернет "облазили". Задача давно решена, ответ ищется за три секунды: https://www.google.com/search?q=thousands+to+k+php
    Но даже если предположить, что никто до вас такого не делал, то ведь это алгоритм на десять строчек...
    Ответ написан
    Комментировать
  • Yii как работать с датами?

    1. yiiframework.ru/forum/viewtopic.php?t=18206
    Там же и на 2 вопрос ответ, если я правильно понял.
    Ответ написан
    3 комментария
  • Yii2: как принимать только post запросы на action?

    @karminski
    Senior React.JS Developer
    Вообще то в Yii2 есть замечательная вещь как фильтры. Вам нужен VerbFilter. Курить мануалы тут: www.yiiframework.com/doc-2.0/yii-filters-verbfilte...
    Ответ написан
    Комментировать
  • Почему не срабатывает событие .click после pjax загрузки?

    bubandos
    @bubandos
    bash'у, javascript'ую, php'лю, css'аю, html'каю
    Вы перезагружаете содержимое контейнера, соответственно, у вас уже другой экземпляр кнопки создается.
    Поэтому и обработчика события на нем нет.
    Выхода два:
    1) после обновления контента вешать обработчик события заново.
    2) повесить обработчик на один из родителей и анализировать event.target, а заодно почитать про паттерн behavior и всплытие событий... например, тут )
    Ответ написан
    2 комментария
  • YII2 как получить старые значения модели?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    Это не подойдёт?
    public function afterSave($insert, $changedAttributes)
    {
            var_dump($changedAttributes['desabilitado']);
            var_dump($this['desabilitado']);
            die;
            [...]
    }

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

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    у array_reverse есть второй параметр отвечающий за сохранение порядка ключей
    <?php
    $go = ['test1','test2','test3'];
    print_r(array_reverse($go, true));

    выведет
    Array ( [2] => test3 [1] => test2 [0] => test1 )

    более правильное решение если массив именно такой как ты указал, т.е. не ассоциативный
    <?php
    $go = ['test1','test2','test3'];
    
    for ($i=count($go)-1; $i>=0; $i--) {
         echo $i.' => '.$go[$i].'<br>';
    }

    выведет
    2 => test3
    1 => test2
    0 => test1
    Ответ написан
    Комментировать
  • Как перемещать страницу на нужную строчку таблицы?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Лучше всего делать это на jQuery, примерно так:

    var $rows = $("#main").find("tr");
    
    function goToRow (num) {
         var $target = $rows.eq(num);
         var y = $target.offset().top;
    
         $(window).scrollTop(y);
    }
    Ответ написан
    1 комментарий
  • Какое техническое решение выбрать под проект?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Но не знаю, какое техническое решение взять? Писать на нативном РНР? Взять готовый фрэймворк?

    Что знаете, на том и пишите.

    Если Вы задаёте вопрос про "фреймворки или нет", значит Вам темболее необходимо использовать фреймворк. Свой велосипед Вы в любом случае напишите хуже.

    Если Вы не разработчик, то наймите ПМ или разраба, он Вам и сообщит, на чем именно он будет писать.
    Ответ написан
    1 комментарий
  • Есть ли волшебный метод, чтобы запретить var_export вытащить приватные поля класса?

    @rPman
    Не хранить переменные в виде мембера класса, а хранить как static внутри метода
    Ответ написан
    2 комментария
  • Для чего нужны буквы с двоеточием?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Ответ написан
    Комментировать
  • Для чего нужны буквы с двоеточием?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Поняли, в целом, правильно. Это сериализованные данные.
    https://www.php.net/manual/ru/function.serialize.php
    https://www.php.net/manual/ru/function.unserialize.php
    Ответ написан
    Комментировать