• Как скачать и установить Apache?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    гоподи, не надо никаких апачей, и уж тем более всяких опенсерверов, вампы, мампы и прочей мумбы-юмбы

    скачать пхп, распаковать, перейти в папку с пхп файлами, запустить команду
    c:\путь куда распакован РНР\php -S localhost:80
    Ответ написан
  • Какой есть софт для последовательного выполнения команд на удалённом и своём компе?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Любой скриптовый язык.
    Ответ написан
    2 комментария
  • Правильное использование связки Symfony+Git+Composer+Docker?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Докер выполняет ту роль, которую до этого у тебя играли всякие денверы, опенсерверы, и прочая вампа-юмба. Вместе с панельками на хостинге.
    Кроме симфони есть еще много других программ. Которые устанавливаются через композер. Надо уметь добавлять пакеты в проект, как самому, так и добавленные другими. Надо уметь разворачивать локально проект, который использует композер. Надо уметь читать composer.json. А по-хорошему ещё и писать. Но вообще по сути главное понимать разницу между install и update
    До того как "отправлять сделанные задачи" (только в git, а не github), сначала надо эту самую тестовую ветку завести локально. И уметь разруливать возникающие конфликты.
    Кроме того, контроль версий помогает в первую очередь тебе. Это не для дяди-тимлида, а для себя делается. Чтобы можно было посмотреть историю изменений, откатить, посмотреть какой код ты менял, когда он перестал работать.

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

    Так что надо рассматривать все эти красивые слова не вместе, а по отдельности.
    И не в контексте "написать в резюме", а разобраться с каждым, чем оно помогает лично тебе. Вот когда поймешь, и начнешь применять осознанно - вот тогда и можно будет писать в резюме.
    Ответ написан
    1 комментарий
  • Стоит ли учить php в 2021 году для разработки web приложений и сайтов?

    @thisuserhatephp
    Офлайн - losers Онлайн - lusers
    Никогда не понимал причем тут год и яп. Прыщавые иксперты с дырявыми мозгами и мне в свое время давали такие советы и наставления, мол не учи то, не учи се, сейчас такой-то год....
    Когда же вы поймете, что стек нужно выбирать не смотря на календарь, а исходя из тз которое решает данный стек. Если твою задачу лучше всего решает паскаль, то плевать какой сейчас год, хоть 5021-ый, нужно выбирать паскаль, а не что-то другое, потому что васян в коммах на форуме написал "паскаль в 2021 ? пхпхпха"

    Актуально ли php в 2021 году и стоит ли учить его?

    Если тебе позволяет время, то учить нужно все, что связанно с твоим стеком, а так кончено же актуально
    Ответ написан
  • Идентификаторы сессии в PHP последовательные или нет?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    По умолчанию случайные, но можно переопределить.
    Ответ написан
    Комментировать
  • Почему базовый класс ловит исключение?

    @galaxy
    А почему catch (Exception $e) ловит все остальные исключения, вы не задумывались? Ведь он не знает все особенности всех своих производных классов.

    Блок catch обрабатывает исключение подходящего типа в порядке объявления этих блоков. Объект класса FileNotFoundException является также и объектом класса FilesystemException (как и объектом класса Exception).

    Хотите обрабатывать отдельно FileNotFoundException, вставьте соответствующий catch-блок до catch (FilesystemException $e).
    Ответ написан
    Комментировать
  • Мультидоменность с SSL на laravel как реализовать?

    @Kostik_1993
    Web Developer
    Коллеги верно говорят, тег Laravel тут не причем, так как здесь замешаны отдельные решения, а не магия фреймворка. Для работы с Lets Encrypt вам нужно смотреть в сторону реализации на Acme PHP
    Есть даже обертка для Laravel
    Но к Laravel все это не имеет никакого отношения. Пока вы это не поймете, ваш уровень не выше уровня того кто начал читать книжку Web разработка для чайников
    Ответ написан
    1 комментарий
  • Стоит ли устраиваться в веб-студию где в основном доработка сайтов на cms?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Однако возникают некоторые сомнения, многому ли я научусь на этом месте и стоит ли вообще туда устраиваться или стоит искать дальше?

    Конечно нет, сразу в Гугл надо устраиваться, не меньше.

    Релевантен ли опыт работы с cms для будущей карьеры в вебе?

    Именно для этого имеет смысл пойти поработать, и уже самому понимать что и как.
    Брюс Виллис вот барменом работал. Релевантен был его опыт?

    Такие детские вопросы именно из-за полного отсутствия опыта. Тебя на работе что в кабальный контракт закинут?
    На работу идут чтобы заработать денег и получить опыт, а не чтобы учиться. Если на работе еще и учишься, то это совсем круто. А то путают многие школу и работу.
    Если предложили нормальные условия - пойди, поработай хотя бы год. Потом будешь решать что делать дальше. Карьера не делается за 21 день.
    Ответ написан
    Комментировать
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @galliard
    Потому что типизированное свойство не инициализировано. Оно int и не может принять значение null, как не типизированные. Добавь ему дефолтное значение и все сработает))
    Ответ написан
  • Почему bool лучше не юзать с switch?

    Но почему так?

    Читать легче, тк не скрывает истинных намерений разработчика.
    В случае bool - разработчик почти всегда хочет "Если - то - иначе"
    switch - это сравнение с образцом (образцов много)

    Switch быстрее же

    Бред полнейший, который я предлагаю тебе доказать)
    (вообще любое утверждение в программировании стоит как-то подтверждать, особенно в плане производительности - бенчмарками или листингами)

    Например если просто написать код, который делает if и switch - можно увидеть, что разницы нет, и компилятор генерирует идентичный код, в случае использования bool, по крайней мере на актуальной версии, в профиле Release.
    Ответ написан
    Комментировать
  • Как ускорить выполнение определенных функций?

    @dmtrrr
    Backend developer
    Нужно измерить на что именно уходит время, понять это CPU bound задачи или IO bound. В зависимости от этого оптимизировать.
    Ответ написан
    Комментировать
  • Как заставить работать Guzzle асинхронно?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Во время работы с Async Guzzle вам нужен вызов $curl->tick(), чтобы он мог продолжить работу. wait() под капотом делает именно это

    Вот даже есть пример, как интегрировать курл с реакт-пхп и там есть этот тик, который делает движение
    https://gist.github.com/psampaz/7f2aad5d1d54eeeec8...

    use GuzzleHttp\Client;
    use GuzzleHttp\Handler\CurlMultiHandler;
    use GuzzleHttp\HandlerStack;
    use Psr\Http\Message\ResponseInterface;
    
    $curl = new CurlMultiHandler;
    $handler = HandlerStack::create($curl);
    $client = new Client(['handler' => $handler]);
    
    $p = $client
        ->getAsync('http://google.com')
        ->then(
            function (ResponseInterface $res) {
                echo 'response: ' . $res->getStatusCode() . PHP_EOL;
            },
            function (\Exception $e) {
                echo $e->getMessage() . PHP_EOL;
            }
        );
    
    while ($p->getState() === 'pending') {
        $curl->tick();
        // sleep(1);
    }
    echo 'bottom' . PHP_EOL;


    Если у вас синхронный фреймворк, то вам не пройти мимо синхронизации ожидания запроса. Профит в синхронном исполнении от асинхронных запросов есть только тогда, когда есть больше 1 запроса одновременно, тогда время выполнения станет равным самому длинному из запросов и это время придется ждать. Если запрос один — надо все равно прокрутить и дождаться...

    Опишите изначальную задачу, которую преследуете

    UPD после выяснения задачи:

    Задача: рассылать почту, не задерживая клиента
    Типовое решение: Выполнить fastcgi_finish_request и сделать после него отправку почты. То есть после выполнения данной функции идет разрыв с сервером, то есть браузер прогрузится до конца! Но сам скрипт еще поработает до того, как все сделает (и браузер об этом не узнает).

    Можете сообщение записать в БД, а после fastcgi_finish_request всю очередь вычесать и отправить
    Ответ написан
    3 комментария
  • Software architecture или Network application architecture?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    Вопрос звучит как "учить гласные или согласные, что более востребовано".
    Если планируешь вообще в ИТ, то все что ты выучишь в институте, это только первый шаг до стажера. И даже не путь.
    Неважно что выберешь, учить придется и то и другое и еще много чего
    Ответ написан
    Комментировать
  • Как задать приложение по умолчанию для определенных типов файлов в macOS?

    nazares
    @nazares
    Software Engineer
    ПКМ по файлу -> get info
    далее в пункте открыть с помощью выбираешь нужную программу и нажимаеш на кнопку change all
    60970a651c887223775722.png
    Ответ написан
    Комментировать
  • Как запретить вывод ошибок SQL запроса в PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Во-первых, error_reporting(0); нельзя писать вообще НИКОГДА. Эта строчка всегда должна быть только в виде error_reporting(E_ALL);
    Во-вторых, ini_set('display_errors', 0); - это единственное, что нужно, чтобы запретить вывод ошибок, которые генерирует РНР.
    В-третьих, чтобы твой код не выводил ошибки, не надо писать код, который сам же выводит ошибки на экран. Логично, правда?
    В частности, никогда не использовать обезьяний код, который очень любят рекомендовать местные "специалисты", echo $mysqli->error или or die. То есть тупо выкинуть все такие места из кода

    Вместо этого надо просто сказать РНР чтобы ошибки при работе с БД генерировались сами. И тогда их вывод будет подчиняться директиве display_errors

    В частности, для mysqli это
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    Ответ написан
    7 комментариев
  • Каким образом отслеживают IP адрес, если вы используете VPN?

    А если этим VPN сервисом (сервером) пользовались сотни, а может тысячи человек, как тогда искать?

    Запрашивают логи у ВПН-провайдера.

    Но вообще VPN-сервисов огромное количество и очень много людей пользуется ими в том числе и для работы (чтобы подключаться к внутренней сети компании)

    По тому "Человек использует VPN" не является признаком нарушений. Тем более использовать VPN и посещать заблокированные ресурсы ещё не запрещено.
    Ответ написан
    2 комментария
  • Проблемы с созданием cookie?

    dyuriev
    @dyuriev
    A posteriori
    Каждый день одно и тоже
    1. Открываем официальную документацию: header();
    2. Офигиваем, что она доступна на русском
    3. Читаем:
      Помните, что функцию header() можно вызывать только если клиенту ещё не передавались данные. То есть она должна идти первой в выводе, перед её вызовом не должно быть никаких HTML-тегов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании PHP/HTML в одном файле.
    4. Ищем, какой вывод попал перед отправкой заголовков


    А так же, в конце то концов, внимательно читаем ошибку:
    Cannot modify header information - headers already sent by
    Вольный перевод:
    Невозможно изменить заголовки, так как они уже отправлены


    - Но у меня же нет header()! - скажете вы
    - А хрен там, есть!

    Открываем еще одну интересную страницу: setcookie();

    И читаем там:
    setcookie() задаёт cookie, которое будет передано клиенту вместе с другими HTTP-заголовками. Как и любой другой заголовок, cookie должны передаваться до того как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться до остального вывода, включая вывод тегов <html> и <head>, а также пустые строки и пробельные символы.
    Ответ написан
    2 комментария