• Почему то strpos работает не правильно?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Коротко - не передавайте в strpos число (int), a передавайте строку (sting) и проблем не будет

    Разврёнуто
    Читаем документацию https://www.php.net/strpos

    needle
    Если параметр needle не является строкой, он преобразуется в целое число и трактуется как код символа. Это поведение устарело с PHP 7.3.0, и полагаться на него крайне не рекомендуется. В зависимости от предполагаемого поведения, параметр needle должен быть либо явно приведен к строке, либо должен быть выполнен явный вызов chr().


    Если прогнать ваш код то видим ошибку
    Deprecated: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior in /in/2JE4h on line 4


    Чтобы код отрабатывал как ожидается, $user_ip должен иметь тип string

    так
    $user_ip = (string)94301750;
    или так
    $user_ip = '94301750';

    В противном же случае вместо "94301750" в strpos уходит результат chr(94301750) что есть строка "6"
    и получается в итоге strpos('1334268210|3322954437', '6') отсюда и результат Yes
    Ответ написан
    4 комментария
  • Как документировать javascript?

    miraage
    @miraage
    Старый прогер
    Ответ написан
    Комментировать
  • Как защитить исходный код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Господи, опять очередной защитник.

    Главное плагина ещё нет, покупателей ни одного, языка толком не знает - но уже страдания об упущенной прибыли.

    Варианты есть такие:
    1. Быть чуточку поскромнее. И осознать, что никому твой г-код не нужен, ни за деньги, ни бесплатно.
    2. Быть чуточку адекватнее. И сначала написать код, потом найти покупателей и толкьо потом уже думать о защите.
    3. Расти надо собой и првратиться через несколько лет в человека, который действительно может написать что-то ценное.
    4. после этого уже иметь представление о сервисах работающих через API и не иметь проблема реализовать такой самостоятельно не задавая глупых вопросов на тостере
    Ответ написан
    5 комментариев
  • Для чего нужны Генераторы (yield) в php?

    @Nc_Soft
    парсим большие csv
    <?php
    function getRows($file) {
        $handle = fopen($file, 'rb');
        if ($handle === false) {
            throw new Exception();
        }
        while (feof($handle) === false) {
            yield fgetcsv($handle);
        }
        fclose($handle);
    }
    
    foreach (getRows('data.csv') as $row) {
         print_r($row);
    }
    Ответ написан
    5 комментариев
  • Как правильно добавить запрос в базу?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это надо спрашивать у автора того дырявого велосипеда, которым ты пользуешься.
    Предположу что надо добавлять в $sql
    Ответ написан
    3 комментария
  • Как исправить запрос MySql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    и дубликатов по идее быть не может
    Почему не может? Вы раз в сутки копируете сообщения за двое суток. Дубли просто обязаны появиться.
    Ответ написан
  • Laravel vs Yii vs Symfony для проект требовательного к скорости?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Laravel vs Yii vs Symfony для проект требовательного к скорости?

    Вообще говоря для скорости - не php.

    Для небольших проектов - yii. Для средних и больших - Symfony. Laravel - люто не рекомендую (увы этот фреймворк - солянка из антипрактик).

    Но все зависит от конкретной задачи. Дело в том, что фреймворк должен помогать вам в написании приложения. Тот же Lumen - по сути роутер с хэлперами, Silex - грубо говоря да, только эти хэлперы - компоненты Symfony. Если вам этого достаточно - смело трогайте Silex.
    Ответ написан
    Комментировать
  • Что выбрать, Yii2 или Laravel?

    SamDark
    @SamDark
    Yii2 core team
    Как новичку вам будет очень полезно понять, что у фреймворка внутри и как он работает. Если залезть во внутренности Yii, вы увидите, что там документирован каждый метод, каждый класс, абстракции минимум, всё делается настолько просто, насколько это вообще возможно. Изучить именно как что работает просто.

    Если залезть в Laravel, там всё очень слоёно. Комментариев нет. Чтобы понять, как работает метод нужно частенько пролезть через 3—5 слоёв абстракции в нескольких классах.

    В документации по Laravel, кстати, использован крутой трюк. Описана лишь часть того, что вообще даёт фреймворк. Это делает доку очень компактной, лёгкой и приятной, но за остальным — либо код без комментариев читать, либо Laracasts смотреть.
    Ответ написан
    13 комментариев
  • Какой путь изучения программирования выбрать?

    sM0kfyz
    @sM0kfyz
    Frontend dev.
    Б1: РЫНОК ТРУДА И ПЕРСПЕКТИВЫ.

    Б1.1. Веб

    Б1.2. Веб

    Б1.3. Пока не пройдете интервью. Что нужно учить там же и узнаете.

    Б1.4. Шансы есть. Язык старый - специалистов много. Хотя язык сложный, но зарплаты почему-то меньше, чем в вебе или мобильной разработке.

    Б2: ОСНОВЫ ПРОГРАММИРОВАНИЯ\БАЗА.

    Для большинства задач в вебе это не надо. Если хотите большего, то изучайте другие ресурсы. Но это риск забросить все.

    Б3: ЯЗЫКИ ПРОГРАММИРОВАНИЯ

    Б3.1. Один язык.

    Б3.2. В зависимости от выбранной области, информацию ищите в интернете. Второй язык можете вообще не учить до конца жизни, если не понадобится.

    Б3.3. Самое лучшее - документация к выбранной технологии.

    Б3.4. Изучение 1-2 недели. Понимание - несколько лет.

    Б3.5. Для веба freecodecamp.com Можете стартовать прямо сейчас, а то искать лучший язык можно бесконечно.

    Б3.6 Нет.
    Ответ написан
    Комментировать
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    @Nkly777
    git chery-pick - ты забираешь комиты из одной ветки в другую, это бывает полезно когда изменения сделаные другим разработчиком в его ветке, прямо сейчас нужны тебе в твоей ветке, и что бы не писать этот код заново, ты забираешь его комит себе в ветку

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

    git merge - обычно используется когда у вас 2 и более master ветки (к примеру master и prototype) в этих ветках очень много комитов (и rebase здесь не подходит) и обчно через пару недель, maintainer репозитория наработки из prototype ветки "сливает" в master ветку по средствам этого самого git merge

    P.S. Что бы легче предствить разницу между git merge и git rebase. Представь что merge как собачка на молнии у одежды - "сшивает" комиты по дате их создания.
    В то время как git rebase как пожарная лестница - при применении твои коммиты крепится на конец родительской ветки

    git merge используйте для мержа фич и фиксов в master ветку (как и делает это Github)
    а git rebase используется для своей ветку в которой вы работаете над фичей что бы забрать последние изменения с master ветку (для этого есть очень удобная команда `git pull --rebase origin master`, аналог 3х команд (`git checkout master; git pull origin master; git checkout mybrach; git rebase master`)
    Ответ написан
    2 комментария
  • Git: объясните «на пальцах» разницу между rebase и cherry-pick?

    Все красиво объяснил Nkly777, только в блоке PS merge с rebase перепутаны.
    Добавлю картинок.

    git rebase devel - собачка на молнии - "сшивает" коммиты по дате их создания
    (ветка devel "растворяется" в основной ветке)
    518b8dbce1cd4f96b30de9782ae38fcd.png
    git merge devel - пожарная лестница, все коммиты ветки devel крепятся в конец, образуется пересечение
    (devel остается отдельной веткой, к которой можно вернуться)
    1ba8186d879d46ff85ea7c1e192328e2.png
    git chery-pick idea - забрать коммиты из ветки idea
    2717e3091f644ef2954aa2de4514f446.png
    Ответ написан
    2 комментария
  • Как реализовать вычитание времени?

    $date = new DateTime('27.11.2018 21:20');
    echo $date->format('Y-m-d H:i:s') . "\n";//27.11.2018 21:20
    $date->sub(new DateInterval('PT35M'));
    echo $date->format('Y-m-d H:i:s') . "\n"; //27.11.2018 20:45


    если просто активировать ссылку в 20:45 то

    if(date('H') >= 20 && date(i) >=45 )
    {
        //ссылка активна
    }
    Ответ написан
    Комментировать
  • Как очистить кеш url редиректов?

    Afres
    @Afres
    Product Owner
    Чтобы очистить кэш редиректа в Google Chrome:
    1. Откройте новую вкладку
    2. Откройте консоль разработчика (нажать F12 или Ctrl+Shift+i)
    3. Зайти в настройки консоли и поставить там галочку "Disable cache" в секции "Network".
    4. На открытой вкладке с открытой консолью открыть сайт, редирект которого закэшировался.
    5. Profit!
    Ответ написан
    2 комментария
  • Как на Yii2 в addError вставить гиперссылку?

    slo_nik
    @slo_nik Куратор тега Yii
    Вообще-то можно.
    Сразу не сообразил.
    Вот как-то так надо сделать.
    // В ActiveForm
    $form->field($model, 'password',[
        'errorOptions' => [
            'encode' => false,
        ]
    ])->passwordInput() 
    
    // В модели
    $this->addError('password', UsersModule::t('module', 'ERROR_WRONG_USERNAME_OR_PASSWORD', ['link' => Html::tag('a','test')]));
    Ответ написан
    Комментировать
  • Является ли Docker/Vagrant сейчас стандартом для dev-окружения веб-разработчика?

    DevMan
    @DevMan
    вагрант:
    образ не нужно качать постоянно, он скачивается один раз и лежит себе на диске. периодически его только обновлять.
    весь нужный стэк можно поднимать автоматом при билде вмки. если комп не слоупок и нормальный инет, это занимает 5-10 минут.
    при желании собираешь свой образ с уже установленным стеком и подсовываешь его при билде вмки.

    докер:
    проще вагранта по ресурсам. но гораздо менингитнее в плане изучения/поддержки.

    в целом все зависит от задач. на многих задачах, особенно уровня "одностраничный лендос" или "бложик на вп" можно вполне спокойно и успешно обходиться без них.
    Ответ написан
    3 комментария
  • Как получить дату и время из строки?

    @bkosun
    $date = DateTime::createFromFormat('d.m.Y \| H:i', '07.09.2018 | 00:55');
    
    echo $date->format('d.m.Y'); // 07.09.2018
    echo $date->format('H:i'); // 00:55


    php.net/manual/ru/function.date-create-from-format.php
    php.net/manual/ru/datetime.createfromformat.php
    Ответ написан
    2 комментария
  • Что не так с php?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    В первом случае не сравнение, а присваивание. В итоге в условии используется значение переменной a, которое равно 1, которое приводится к true.

    Во втором случае в первой строке вы производите сравнение, а не присваивание значения. Поэтому во второй строке у переменной $a нет значения, то есть она точно не равна 1.

    С php всё ок, проблема с вашим кодом.
    Ответ написан
    1 комментарий
  • Как оптимизировать работу PHP скриптов?

    DevMan
    @DevMan
    очевидно же: не обрабатывать данные сразу.
    получили данные -> сохранили их в файл или базу -> написали юзеру "спасибо" -> начали обрабатывать данные.
    Ответ написан
    4 комментария