• Определение Класса $server->setClass("ClassName") Laravel?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Стоит изучить документацию по основам PHP. Подскажу даже ссылку: php.net/manual/ru/language.namespaces.php

    После этого вопроса "не находит класс" возникать больше не должно.
    Ответ написан
    Комментировать
  • Как добавить зависимости между Job-ами в Laravel?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    А очереди очередей (как бы это не звучало) не подходят разве? https://laravel.com/docs/5.6/queues#job-chaining
    Ответ написан
  • Как сделать обновление информации на сайте в режиме реального времени?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    совершенно не имею понятия как его установить на виртуальный хостин


    Никак. На то он и хостинг, а не VDS/VPS

    Еще часто вижу записи, что сокету нужно устанавливать прослушиваемый порт, но как узнать какой именно порт надо прослушивать?


    Команда "netstat -a" возвращает список портов, которые слушаются. Осталось выбрать любой свободный, например 3000, 8000, 81 и 8080 - это самые популярные для своих приблуд.
    Ответ написан
    Комментировать
  • Можно ли считать DI контейнер подобием фабрики или что я делаю не так?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Метод bind как раз и регистрирует "фабрику". Т.е. при каждом резолве (получения) сервиса из контейнера - он будет создаваться по определяемой схеме.

    $container->call(function(CampaignService $c): void {
        echo \spl_object_id($c); // 1
    });
    
    $container->call(function(CampaignService $c): void {
        echo \spl_object_id($c); // 2
    });


    Если сервис должен быть константным, то имеет смысл bind заменить на singleton

    $container->call(function(CampaignService $c): void {
        echo \spl_object_id($c); // 1
    });
    
    $container->call(function(CampaignService $c): void {
        echo \spl_object_id($c); // 1
    });
    Ответ написан
  • Почему после axios запроса, php post возвращает пустоту?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    А как связан заголовок "application/x-www-form-urlencoded" с json?
    Ответ написан
  • Как грамотно перейтй на php7 с php5.6?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    А что мешает заменить простенькой регуляркой?

    С
    (?<=\b)mysql([\w\h_]+)\(

    НА
    mysqli$1

    А потом просто прогнать тесты?
    Ответ написан
  • Насколько быстры cms на файлах при большом количестве файлов?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    1) Не забудьте, что все эти 10к файлов НЕ должны лежать в одной и той же директории, т.к. это сказывается на производительности а при превышении N лимита (влом гуглить циферку) всё наеб... поломается, короче. Я бы брал crc32 (самый быстрый алгоритм хеширования) от идентификатора, например "h87dg283" и складывал соответственно в "~/articles/h8/7d/g283.json".
    2) При подобном хранилище поиск может быть осуществлён лишь по идентификатору записи. Т.е. что-то вроде "select * from articles where id = ?". Любые дальнейшие улучшения требуют больших накладных ресурсов. А реализация чего-то вроде поиска по записям будет физически невозможна (возможно, кончено, но писать такую шнягу придётся очень долго, а что-то вроде Sphinx к такому не прикрутить).

    В остальном не вижу никаких особых проблем.
    Ответ написан
    Комментировать
  • Что написано в коде на JS?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Я просто дополню уже существующие ответы, заметив, что данный код полностью эквивалентен вот этому варианту:
    function sumTo(n) {
        return (n * (n + 1)) / 2;
    }
    Ответ написан
    Комментировать
  • Parse error: syntax error, unexpected end of file in?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Ну раз вы разобрались, то скажите пожалуйста где у вас закрывающая ";" после вызова функции?
    Ответ написан
    Комментировать
  • Разработчик, не пишущий в опенсорс - плохой разработчик?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Идеальный разработчик - это фанат своего дела, как и в любой другой профессии, не важно, учитель ли это, бизнесмен или учёный.

    Отсутствие опенсорса - это нормально, т.к. не делает кого-то плохим и не ворует опыт, но это одно из следствий, которое говорит, что вы не стремитесь стать лучшим в своей области. И это тоже не хорошо и не плохо с точки зрения простого обывателя. Просто один из фактов, что вам это не интересно, у вас есть другие занятия, а значит вы обычная "рабочая лошадка", простите за прямоту, которая скорее всего не придумает и не сделает ничего нового.

    P.S. Так как в комментариях развелось бурное обсуждение и люди, которые не смогли прочитать и понять мой комментарий - выделил жирным те слова, которые не замечают. А раз между строк мало кто умеет читать, дополню: "Одно из" - это значит не единственный вариант самовыражения. Наличие пет-проектов, подкастов, выступлений, бложика и прочего - являются такими же вариантами, их огромное количество. А просиживание мягкого места "от звонка до звонка" является показателем того, что человек выше головы не прыгнет, если его никто не заставит. Возможность самостоятельно дать себе пинка и желание заниматься любимым делом - это основной движущий фактор развития.
    Ответ написан
  • Почему на хостинге yii2 не видит классы?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    1) Опкеш почищен?
    2) Авторитативные карты композера были пересобраны?
    Ответ написан
    Комментировать
  • Можно ли изменить версию ioncube loader в php -v?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Консольный PHP и веб-морда (серверный) PHP - это два разных бинарника PHP и как следствие - два разных набора конфигов.

    Учитывая это примечание - не думаю что стоит отвечать на поставленный вопрос, т.к. проблематика и так понятна =)
    Ответ написан
    2 комментария
  • Как правильно организовать разработку с пакетами?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Композер умеет подключать зависимости из локальной директории:

    composer.json
    {
        "repositories": [
            {
                "type": "path",
                "url": "./путь_к_папке_с_зависимостью"
            }
        ],
        "require": {
            "yourpackage/name": "*"
        }
    }


    Так что приведённый в пример плагин от D3lphi , кажется, уже года два как не нужен.
    Ответ написан
  • Почему file_put_contents не работает после вызова классов?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    И тот и другой не будет работать. Вам даже подсветка на тостере об этом говорит ;)
    Ответ написан
    2 комментария
  • Виртуальная машина - для чего нужна при разработке?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Давайте для начала определимся с определением "виртуалка". В Вашем контексте вопроса: Про разработку, насколько я понял, с использованием виртуалок, верно? Это определение можно применить не только к виртуализации как таковой, но и к контейнеризации в целом, хотя технические различия у них есть и довольно много. Так что продолжим с этого, имея в голове инфу о том, что под виртуалкой мы подразумеваем какую-то абстрактную коробку (это только что придуманный термин) внутри которой это всё крутится, не важно что это, виртуалка или контейнер.

    Этой "коробкой" можно назвать вашу ОС. Туда вы ставите всякие apache, mysql, python (давайте называть это AMP), как говорите. Всё ок.

    А теперь чуть изменим правила:
    1) Берём коробку на Ubuntu и запихиваем туда этот "AMP". Теперь у вас внутри вашей ОС есть коробка со всем необходимым.
    2) Берём коробку на Windows и запихиваем туда этот "AMP". Теперь у вас на компьютере две коробки, которые работать могут совершенно одновременно.

    Ну т.е. понимаете, да? У вас внутри, ну, допустим, MacOS висит и Windows и Ubuntu, внутри которых установлен стек "AMP" и один и тот же код, разрабатывая локально вы можете одним кликом мыши/клавиатуры прогонять и там, и там.

    Host OS (MacOS) -> Windows -> "AMP"
                    -> Ubuntu  -> "AMP"


    В случае "контейнеров", например Docker, обычно делают чуть иначе:
    Host OS -> Linux -> Apache
            -> Linux -> MySQL
            -> Linux -> Python


    Т.е. под каждую программу отдельный контейнер. Теперь нам не надо мучаться со сборкой. Если что-то поломается мы можем просто взять, поправить конфиги и просто переустановить с нуля отдельную программку. А можем вообще организовать как-то так:

    Host OS -> Linux -> Apache (который смотрит на Python 2 и отдаёт результат по 127.0.0.1:80)
            -> Linux -> Apache (который смотрит на Python 3 и отдаёт результат по 127.0.0.1:81)
            -> Linux -> MySQL
            -> Linux -> Python 2
            -> Linux -> Python 3


    Можем открыть две вкладки браузера и смотреть как код работает на совершенно разных версиях питона! И при этом локально у Вас вообще ничего не будет установлено, никаких конфигов, никакого мусора. Что-то не понравится или поломается берёте и сносите кусок, заменяя его на другой. Тут уже воображение.
    Ответ написан
    Комментировать
  • Как получить на выходе отформатированный JSON документ?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    А теперь, после того как ответ получен (выше куча вариантов), предлагаю сделать чуть более адекватный вариант:

    1) В контроллере оставить чистый вывод
    public function action(): array
    {
        return ['test' => ['one' => 1], ['two' => ['test'] => 1]];
    }


    2) Создать миддлварю:
    public function handle(Request $request, \Closuse $next)
    {
        $response = $next($request);
    
        if (\config('app.debug') && $response instanceof JsonResponse) {
            $response->setEncodingOptions($response->getEncodingOptions() | \JSON_PRETTY_PRINT);
        }
    
        return $response;
    }
    Ответ написан
    Комментировать
  • Почему не работает file_exists() в Laravel при загрузке на сервер?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Относительные пути, Карл! Никогда не используй относительные пути.
    Ответ написан
    3 комментария
  • Можно задать пару вопросов по включению функций чтения свойств файлов?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    No provider of 'fileinfo' found. (ПОЧЕМУ?! Fileinfo это плохо? Это устарело? Это не нужно?)

    Если этот zypper такой же, как и apt, aptitude или yum, то подозреваю потому что не fileinfo, а php-fileinfo или php7.2-fileinfo. Зависит от поставщика.

    и еще сто ошибок, как и всегда в линуксах, кроме пожалуй убунту.

    Это будет на любой версии. Можно было обратить внимание, что 1.0.4 https://pecl.php.net/package/Fileinfo - это версия 2006го года, тогда 7ки не то что бы в планах не было, но и 5ка была раритетом. После этого кажется довольно очевидным, что апи сильно поменялось и расширение, разработанное для древней версии просто не собирается для новой.

    Само расширение нынче является частью стандартной поставки и вхреначено внутрь ядра. Если же нет, то ставится оно либо через менеджер зависимостей, либо можно попробовать руками его включить, прописав "extension=fileinfo", хотя я не уверен что это вообще сработает (такой трюк только на винде работает, ибо там все расширения сразу прилетают и надо их только включить).
    Ответ написан
  • Почему у меня не срабаотывает код?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    У вас ошибка в последнем статическом методе при присвоении данных. Подробнее об ошибке ответит вам сам интерпретатор PHP, т.к. она довольно очевидна. Это просто невнимательность.

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

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Ну или вот "[^"\\]+(?:\\.[^"\\]*)*" вариант, если требуется поддержка экранирования через бекслеш.

    https://regex101.com/r/d19vTs/1
    Ответ написан
    Комментировать