• Как извлечь цифры и точку из строки, между определенными символами?

    lidacriss
    @lidacriss
    wtf
    preg_match('#width:\s*(\d+(?:\.\d+)?)px.*?height:\s*(\d+(?:\.\d+)?)px#is', $str, $match)

    получим массив $match с содержимым типа:
    $match = [
      '0' => 'width: 287.942px; height: 162px;',
      '1' => '287.942',
      '2' => '162',
    ];


    по отдельности:
    width
    preg_match('#width:\s*(\d+(?:\.\d+)?)px#is', $str, $match)

    height
    preg_match('#height:\s*(\d+(?:\.\d+)?)px#is', $str, $match)
    Ответ написан
    4 комментария
  • Как усовершенствовать функцию?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    return \collect((array)$requestTags)->map(function($tag): int {
        return \is_numeric($tag) ? (int)$tag : Tag::upsert(['name' => $tag])->id;
    });
    Ответ написан
    1 комментарий
  • Как усовершенствовать функцию?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А что Вы в ней хотите усовершенствовать?
    Ну например можно добавить typehint array у $requestTags и избавиться от проверки:

    public static function getTags(array $requestTags): array
    {
        $tags = [];
    
        foreach ($requestTags as $tag) {
            if (is_numeric($tag)) {
                $tags[] = $tag;
            } else {
                $newTag = Tag::upsert(['name' => $tag]);
                $tags[] = $newTag->id;
            }
        }
    
        return $tags;
    }


    Либо можно вынести в отдельную функицю сохранение тегов, например:

    function mapTags( array &$value )
    {
        if ( is_numeric($value) )
        {
            return $value;
        }
    
        $newTag = Tag::upsert(['name' => $tag]);
        return $newTag->id;
    }


    И тогда весь код метода свернется в:

    public static function getTags( array $requestTags ): array
    {
        return array_map('mapTags', $requestTags);
    }


    Можно просто уменьшить вложенность оставив скрипт (меньше уровней будет):

    public static function getTags($requestTags): array
    {
        $tags = [];
    
        if ( !$requestTags )
        {
            return $tags;
        }
    
        foreach ($requestTags as $tag) {
            if (is_numeric($tag)) {
                $tags[] = $tag;
            } else {
                $newTag = Tag::upsert(['name' => $tag]);
                $tags[] = $newTag->id;
            }
        }
    
        return $tags;
    }


    Если это очень частовыполняемая операция, то можно сэкономить на запросах:

    public static function getTags(array $requestTags): array
    {
        if ( empty($requestTags) )
        {
            return $requestTags;
        }
    
        $existedTags = array_filter($requestTags, 'is_numeric');
        $newTags = array_diff($requestTags, $existedTags);
    
        /**
         * Тут единый batch-метод который отправляет 
         * 1 запрос на все теги сразу.
         * В results - массив Tag, обработанных batch-методом
         */
        foreach ($results as $tag)
        {
            $existedTags[] = $tag->id;
        }
    
        return array_unique($existedTags);
    }
    Ответ написан
    1 комментарий
  • Как парсить данные используя Symphony DomCrawler?

    Akuma
    @Akuma
    Веб-программист
    Зачем вам вообще знать, что находится в свойствах этого объекта $parser?
    Просто пишите свои селекторы и все. Самые обычные CSS селекторы (ну еще :contains поддерживается).

    Вы вырвали метод из документации, а про контекст забыли. Это лишь пример. Перепишите на свой лад и проблема исчезнет сама-собой.
    Ответ написан
    Комментировать
  • Как въехать в программирование (ООП, паттерны)?

    @Vahmur
    Network Administrator, Web Developer
    О, я помню, как я пытался в ооп по книжкам въезжать.
    ...создаем класс типа машина.(с)
    А толку ноль.
    Может это я кинестетик. Но у меня все только руками по чуть-чуть на реальных задачах.
    Ответ написан
    Комментировать
  • Как удалить коммит с сервера?

    Если это последний коммит в ветке, то:

    Удалить его локально
    git reset HEAD~1 --hard

    Сделать force push на сервер
    git push -f
    Ответ написан
    1 комментарий
  • Как в laravel 5.4 правильно подключать js и css?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Ответ написан
    Комментировать
  • Организовать phpDoc для __get property где property это экземпляр класса, как?

    nazarpc
    @nazarpc
    Open Source enthusiast
    /**
     * Class Base
     * @property Config $config
     * @property Request $request
     * @property Database $db
     */

    Либо я совершенно не понял, что вы спрашиваете.
    Ответ написан
    2 комментария
  • Программу для напоминания?

    Iehbr
    @Iehbr
    1. Hot Alarm Clock
    2. Free Alarm Clock
    3. Free Countdown Timer
    4. Free Stopwatch
    5. Free Timer
    6. Tiny Clock 1.1
    P.S.: Сам пользуюсь первой.
    Ответ написан
    Комментировать
  • Что закинуть в портфолио PHP-разработчику?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Создать гитхаб-профиль со своими модулями/компонентами/библиотеками/composer-пакетами

    • Проекты желательно не полными сайтами, а именно модулями, чтобы легче и понятнее было понять суть, а не пролистывать туеву хучу стандартного для фреймов кода
    • Код комментируйте, делайте максимально подробные описания и инструкции установки (какие миграции, какая версия пакета актуальная, как его подключить и как конфигурировать), кое-где и видео можно присобачить
    • Как вариант — сделать свой сайт, который бы более наглядно рассказал о ваших навыках, и более удобоваримо рассказал бы о ваших преоктах

    Неправильно: https://github.com/Maksclub/trendtech
    Правильно: https://github.com/Maksclub/parser
    Ответ написан
    3 комментария
  • Как взять первый заказ на фрилансе без отзывов?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Так как же всё таки взять заказ новичку?

    • На заказ отвечаешь подробным сообщением. Отвечаешь на все вопросы в задании, особено такие, которые помогают клиенту понять, что ты понимаешь нюансы и хочешь разобраться, чтобы сделать хорошо
    • В сообщении сделай описание о своих навыках, не должно быть эпитетов (совсем!), пиши по делу и ТОЛЬКО в контексте задачи, можешь привести примеры (только если есть схожие, иначе мимо!)
    • Предлагай варианты -- круто если даже набросаешь или скидываешь примеры из портфолио
    • На первое время бери самые сложные и интересные заказы и несмотря на ответ -- делай их до конца
    Ответ написан
    Комментировать
  • Почему в проигрывателе VLC при просмотре видео сыпется изображение?

    @moozooh
    Chief Technical Grammar Nazi
    Могут быть разные причины. Например, декодер вынужден пропускать кадры, которые были необходимы для чтения следующих. Почему это произошло — зависит от вашего железа, от проигрываемого файла, от версии VLC и ещё потенциально много чего.

    Для подстраховки можно сделать следующее. (Дисклеймер: у меня VLC с английским интерфейсом, поэтому перевод настроек и путей к ним взят из головы.)
    • Поставить приоритет выше среднего (Все настройки → Расширенные → Быстродействие).
    • Настроить диапазон кеширования (Все настройки → Ввод/кодеки → Дополнительно → Кеш файлов и кеш диска). По умолчанию в обеих настройках стоит 500 мс, можно попробовать поднять до 2000–2500 мс и посмотреть, есть ли существенная разница. Если нет, можно дальше не поднимать — проблема явно не в этом.
    • Выключить фильтры, если они включены (Все настройки → Видео → Фильтры).
    • Включить аппаратное ускорение (Все настройки → Видео → Модули вывода). Нужно выбрать DirectX или Direct3D и поставить галочки на всех настройках этих модулей. Если они включены, попробуйте отключить.

    Если ничего из этого не помогло, то либо файл битый, либо там настройки сжатия какие-то дурацкие, либо железо не тянет, либо, ну, хрен его разберёт.
    Ответ написан
    2 комментария
  • Что такое полиморфные связи?

    greabock
    @greabock
    Могу
    Предположим, что у Вас есть комментарий, который может относится к посту(пользователя), а может относится к статье блога.
    тогда у Вас таблица может выглядеть примерно так:
    comment_id | parent_id | morph| comment_content | author

    где:
    comment_id - идентификатор самого коммента
    parent_id - идентификатор сущности к которой он относится
    morph - тип сущности, к которой относится этот комментарий.
    comment_content, author - тут я думаю понятно
    тогда записи могут выглядеть так:
    comment_id | parent_id | morph   | comment_content | author
    ---------------------------------------------------------------
      1        |   1       | post    | бла бла бла     | vasya
    ---------------------------------------------------------------
      2        |   1       | article | бла бла бла     | vasya
    ---------------------------------------------------------------

    при чем, несмтря на то, что parent_id у них одинаковый, в первом случае он относится к id в таблице post, а во втором к article
    Это и называется полиморфической связью.

    пример приведу на фреймворке laravel для php (но ORM там очень схож с Rails, так-что проблем возникнуть не должно)
    Модель комментария будет выглядеть приблизительно так:

    class Comment extends Eloquent {
    
     public function morph()
      {
         return $this->morphTo();
      }
    
    }

    а модели поста и статьи:

    class Post extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('post', 'morph');
      }
    
    }

    class Article extends Eloquent {
    
      public function photos()
      {
        return $this->morphMany('article', 'morph');
      }
    
    }

    вроде бы ничего не напутал...
    Ответ написан
    1 комментарий
  • Зачем использовать Vue вместе с Laravel?

    Добавили, чтобы вы jquery спагетти не использовали. Vue (как и другие js фреймворки) сокращает количество кода на клиенте и уменьшает его запутанность.

    Для примера вы создаете админку для магазина. У вас есть следующие варианты:
    1. Делать статическую страницу. На клиенте никакой логики, все вычисляет сервер. При новой покупке администратор должен будет обновить страницу.
    2. Писать динамический фронтэнд с использованием vue, angular и чего угодно остального. Бэкэнд шлет вам уведомления через вэбсокеты о новых заказах без перезагрузки страницы.
    2.1 Вы берете jquery и сначала все идет хорошо. Первые полчаса. Затем ваш код обрастает огромным количеством обработчиков событий. Если товар заканчивается на складе, его надо убрать из таблицы, затем если заказ отменяется, его надо вернуть в таблицу. Вы его вернули, но почему-то кнопка в строке с ним, вызывающая модальное окно перестала реагировать на события, потом еще что-то случилось и еще. Проблемы с jquery растут как снежный ком и вы проклинаете свое решение создать динамическую админку.
    2.2 Вы используете современный js фреймворк. Vue в этом плане хорош низким порогом изучения. Вы загружаете определенные обхекты и в зависимости от их свойств vue сам строит таблицы (с проданными и непроданными товарами), скрывает лишние элементы (не показывать такую-то кнопку, если товар всего 1), отправляет плагинам команды на обновление при изменении объектов и следит за тем, чтобы события, которые отваливались при jquery подходе работали.

    Я не сказать что спец в javascript, но (именно поэтому) меня vuejs на текущем проекте очень выручает.
    Ответ написан
    Комментировать
  • Зачем использовать Vue вместе с Laravel?

    @ollisso
    Для чего лично вам использовать его - сложно сказать :)

    Как его мы его используем:
    1. динамика на странице, т.е. даже простое "если изменилось поле А то изменить поле Б" делается намного проще и быстрее чем на jquery/javascript
    2. темлейтинг. Нужно вам например сделать удобный темплейт на JS - вы можете или сам движок придумывать. или использовать готовый. Vue - один из них.
    3. Отображение данных с сервера. Опять же, можно генерировать весь хтмл на сервере, можно на клиенте. На сервере свои плюсы и минусы, на клиенте - свои.

    Удобство VUE - что можно использовать на отдельных элементах отдельных страниц. Нет нужды полностью переходить на него для всех страниц.

    Вот посмотрите примеры тут:
    https://vuejs.org/v2/examples/hackernews.html
    Ответ написан
    4 комментария
  • Как вызвать метод класса из view blade шаблона?

    alexey_bille
    @alexey_bille
    Web developer
    Сделать метод статическим

    Но это очень плохая практика
    Ответ написан
    3 комментария
  • Как вызвать метод класса из view blade шаблона?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    5 комментариев
  • Как использовать собственные константы?

    neuotq
    @neuotq
    Прокрастинация
    Где конкретно вы делаете? Версия Laravel? В каком месте вызываете?
    Вы написали путь /Config/constants.php, если это не опечатка, то он не верен, должен быть
    /config/constants.php, те с маленькой буквы, папка уже есть и там куча файлов настройки.
    Ответ написан
    3 комментария
  • Как использовать собственные константы?

    @Kostik_1993
    Web Developer
    php artisan config:cache создать кеш конфигов
    php artisan config:clear очистить кеш конфигов
    Ответ написан
    3 комментария