• Как научиться быстро считать логические выражения?

    @D3lphi
    Собственно, практика, практика и еще раз практика. Открываем ЕГЭ по информатике: логические уравнения или, еще лучше, системы логических уравнений. Учимся их решать. После этого, пример, который вы привели, состоящий только из логического сложения и умножения, покажется вам детским лепетом.
    Ответ написан
    Комментировать
  • Не могу определиться. В какую область податься?

    @D3lphi
    Что-то вы все думаете да думаете, а принять решения не можете! Вам нравится back-end? Так идите в back-end! Если вы сверстали, как говорите, "с десяток простеньких сайтов", то все хорошо. Разработчику, пишущему серверную логику совершенно необязательно и даже не нужно "хорошо разбираться и во фронте". Не распыляйтесь. Определитесь, что вам больше по душе: веб или мобильная разработка, а, может быть, гейм-дев? Поставьте себе цель и двигайтесь к ней.

    Удачи!
    Ответ написан
    Комментировать
  • Как добавить свои библиотеки в Composer для использования в разных проектах?

    @D3lphi
    Выполняем команду:
    composer init

    Следуем инструкциям. В результате, получим частично сконфигурированный файл composer.json. Прописываем в этот файл неймспейсы для автозагрузки классов:
    {
    // Другие опции...
        "autoload": {
            "psr-4": {
                "MySuperApp\\": "src/"
            }
        }
    // Другие опции...
    }


    Это означает, что классы, имеющие неймспейс MySuperApp\ будут находится в папке src. То есть, класс MySuperApp\First должен лежать прямо в папке src, а класс MySuperApp\Test\Second в папке src/Test. Надеюсь, понятно.

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

    Далее, переходим на сайт packagist.com, регистрируемся там. В настройках профиля следуем инструкциям и привязываем аккаунт к github'у. Переходим во вкладку submit, вставляем в инпут ссылку на наш github репозиторий, жмем check (В этот момент packagist проверит, что данный репозиторий принадлежит именно нам), затем, снова check, чтобы подтвердить наш выбор. Вот, собственно, и все! Осталось прикрутить автообновление пакета. Информация об этом тоже есть на сайте.
    Ответ написан
    Комментировать
  • Как располагаются все файлы относительно индекс-файла?

    @D3lphi
    В каталоге, на уровень ниже:
    - <папка>
      - index.html
    - b
      - assets
        - popups
          - pop1
            - gallery
              - 01.jpg
    Ответ написан
    Комментировать
  • Как сделать такой запрос в mysql?

    @D3lphi
    SELECT `id` FROM `table` WHERE `role_id` IN (5, 6, 1, 3, 8)
    Ответ написан
    Комментировать
  • Нужно ли заниматься глубоким изучением JS?

    @D3lphi
    Вы уже определитесь, кем хотите быть... Или вы используете только готовые решения: шаг влево, шаг вправо - расстрел, у вас недостаточно знаний и вы не можете видоизменить код под свои нужды. Или же вы умеете писать собственные решения. По-моему, ответ очевиден. Собирайте портфолио и параллельно изучайте js, поднимайте навык. В чем проблема-то?
    Ответ написан
    1 комментарий
  • Ищется (фреймворк|библиотека) под критерии?

    @D3lphi
    Посмотрите в сторону Vue.js. Современный и очень легковесный фреймворк.
    Ответ написан
    1 комментарий
  • Что можно реализовать в качестве практики диплома в области безопасности web-приложений?

    @D3lphi
    Гуглите статьи на следующие темы (Благо, в интернете их навалом):
    • SQL - инъекции и защита приложения от них.
    • Хеширование паролей. Что, как и зачем.
    • CSRF атаки и защита от них.
    • XSS атаки и защита от них.
    • Защита сессии пользователей, аутентифицированных в приложении.
    • Предотвращение краж cookie.
    • HTTPS, SSL, TLS.
    Ответ написан
    Комментировать
  • Как правильно передавать и сохранять данные между классами?

    @D3lphi
    Передавать объект в конструктор, как вариант, через сеттеры. Если эти данные нужны только в этом методе - передавать, непосредственно, в виде аргумента, очевидно. Прочитайте про паттерн Внедрение зависимостей (Это для хранения объектов). Его сейчас используют чуть ли не на каждом шагу.

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


    ООП - это всегда медленнее, чем НЕ ООП. Большое количество объектов тормозят систему. Объектно ориентированный подход используют не ради увеличения производительности, а ради улучшения рсширяемости и поддерживаемости кода.
    Ответ написан
    2 комментария
  • Тяжела ли жизнь программиста без HTML и CSS?

    @D3lphi
    Если вы пойдете работать в более - менее серьезную контору именно на позицию back-end developer'а, то да, возможно. Ответственность на вас будет лежать только за серверную часть. Опять же, очень часто и на бэк энд разработчика в требованиях есть, как минимум, базовые знания html, css, js. Так что в идеале, конечно, знать их нужно. Если же вы пойдете работать в фирму, которая пилит "говносайтики" на вордпрессе для дяди Васи из второго подъезда, то тут для вас плохие новости. Там, как правило, нет четкого разделения на back и front end developer'ов. Всю работу там делают "веб-мастеры", которых назвать full stack девелопероми язык не поворачивается (В силу их, как показывает практика, низкой квалификации).
    Ответ написан
    Комментировать
  • Что значит "!" в php?

    @D3lphi
    Логическое отрицание. Меняет значение булевого выражение на противоположное.
    var_dump(!true); // false
    var_dump(!false); // true
    Ответ написан
    Комментировать
  • В каком виде лучше отдавать данные клиенту?

    @D3lphi
    1) Отдавать нужно json строку с кодом ответа/статусом и тд, чтобы можно было на клиентской стороне обработать ответ и произвести необходимые действия.
    2) В контроллере никакую логику не пишем. Она выносится в сервисный слой. (Это я про эту фразу "есть контроллер, в котором есть метод добавления товара в корзину").
    3)
    Также непонятно, что должен делать такой метод при обычном запросе не через ajax.. Делать редирект на предыдущий урл или корзину например?

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

    @D3lphi
    На том же на чем и все остальные: html, css, js (фронт энд). Вы рассчитывали услышать что-то иное?
    Ответ написан
    Комментировать
  • Как отделить важные данные от конфигов?

    @D3lphi
    Для этого есть замечательная библиотека - dotenv. Суть в том, что вы храните данные в отдельном файле .env, который добавляете в .gitignore. А в vcs коммитете файл .env.example, в котором присутствует только "скелет" параметров без значений. Тому, кто будет устанавливать ваше приложение будет необходимо переименовать файл .env.example в .env и заполнить необходимые опции. Значения из этого файла можно получить по средствам функции env(). Эту библиотеку, кстати, использует популярный php - фреймворк Laravel.
    Ответ написан
    5 комментариев
  • Как это реализовано в Laravel?

    @D3lphi
    Это называется рефлексия. Пример:
    $class = new \ReflectionClass('Название класса');  // Создаем объект для рефлексии класса
    $method = $class->getMethod('Имя метода');   // Получаем метод по имени
    $params = $method->getParameters();   // Получаем массив с параметрами
    $paramName = $params[0]->getName();   // Берем первый элемент массива, он имеет тип ReflectionParameter, и получаем его имя.

    Можно сразу создать объект для рефлексии метода "напрямую":
    $method = new \ReflectionMethod('Класс', 'Имя метода');
    // Далее, аналогично

    С помощью рефлексии можно не только получать имена параметров, но и их типы, значения по умолчанию. Можно получать даже док-блоки для методов/свойств и тд. С помощью рефлексии, например, работает doctrine orm. Он использует аннотации (как один из вариантов конфигурации) для описания сущностей.
    Ответ написан
    Комментировать
  • Как правильно получить значение по ключу?

    @D3lphi
    Вторым аргументом в функцию route() передается массив с параметрами запроса:
    {{ route('blog.show', ['id' => $blog->slug]) }}
    Ответ написан
    5 комментариев
  • Можно создать форму из отдельных input без тега?

    @D3lphi
    Ну так и сделайте:
    <form>
        <div>
             <input type="text" name="login">
        </div>
       <!-- -->
        <div>
            <input type="text" name="password">
        </div>
        <div>
            <div>
                <input type="submit" name="go">
            </div>
        </div>
    </form>
    Ответ написан
    2 комментария
  • Пагинация laravel?

    @D3lphi
    Post::select()->join('subscribers', 'posts.author_id', 'subscribers.author_id')->where('subscribers.user_id', 1)->paginate(15);

    Вместо 15 - число элементов на странице. Вместо 1 - id текущего пользователя. Ну и в select хорошо бы было перечислить нужные вам столбцы.
    Ответ написан
    2 комментария
  • Как понять принцип работы return в примере кода?

    @D3lphi
    Отформатируем код, чтобы лучше читалось:
    // ...
    {
        filter: function(format) {
             return format.container === 'mp4';
        }
    }
    // ...

    Здесь в свойство filter будет из функции возвращено булевое значение true/false в зависимости от того, равен ли format.container строке 'mp4'.
    Принцип работы format.container === 'mp4' такой: это оператор сравнения, следовательно это выражение возвращает true - если равенство истинно, и false - если равенство ложно.
    'str' === 'string' // false
    'str' === 'str' // true
    Ответ написан
  • Существует ли удобный способ добавления записи (insert) в php mysqli?

    @D3lphi
    Если я правильно вас понял, это относится не к php, а к sql:
    INSERT INTO `table` (`column1`, `column3`) VALUES ('test', 'value')

    При таком запросе столбец column1 получит значение 'test', а столбец column3 - значение 'value'. Конечно же, вместо прямого подставления значений нужно использовать плейсхолдеры:
    INSERT INTO `table` (`column1`, `column3`) VALUES (?, ?)


    А можно и так:
    INSERT INTO `table` set `column1` = 'test', `column3` = 'value'
    Ответ написан
    1 комментарий