• Как выполнить миграцию базы данных в Laravel?

    @EvgeniiR
    https://github.com/EvgeniiR
    Access denied for user 'root'@'localhost' (using password: YES)
    Ответ написан
    Комментировать
  • Как стащить книгу в оффлайн с Google books?

    I_CaR
    @I_CaR
    программист в прошлом.
    Мне лично понравилась "Google Books Downloader"
    Поле для ссылки + Одна кнопка и путь куда сохранить и всё!
    Ещё есть выбор формата.
    Просто, удобно, быстро!
    Ответ написан
    4 комментария
  • В чем суть роутера на php?

    onqu
    @onqu
    weasy
    1. Здесь пугают всякими контроллерами, ларавелями. Давайте жить проще. Для начала дадим определение модному слову роутер. Это маршрутизатор. Что делает маршрутизатор? Правильно. Обрабатывает маршруты, являясь связующим звеном. Маршрутом для web сайта принято считать метод запроса [GET, POST, PUT и другие] и компоненты URI.

    например: https://ru.wikipedia.org/wiki/URI?foo=bar#title
    [схема: https] :// [источник: ru.wikipedia.org] [путь: /wiki/URI] [запрос: ?foo=bar] [фрагмент: #title]


    Но для определения маршрута может браться любая другая информация передаваемая серверу, определение выше это лишь наиболее употребляемые параметры.

    Сама работа, как правило проста: от клиента приходит запрос, маршрутизатор перебирает все заданные ему пути до первого совпадения. При совпадении вызывается определенная вами функция, которая возвращает ответ клиенту.

    2. Он необходим, если в приложении одна точка входа, когда любой запрос приходит на один файл.

    3. Простой пример
    // файл index.php
    
    // Маршруты
    // [маршрут => функция которая будет вызвана]
    $routes = [
        // срабатывает при вызове корня или /index.php
        '/' => 'hello',
        // срабатывает при вызове /about или /index.php/about
        '/about' => 'about',
        // динамические страницы
        '/page' => 'page'
    ];
    
    // возвращает путь запроса
    // вырезает index.php из пути
    function getRequestPath() {
        $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    
        return '/' . ltrim(str_replace('index.php', '', $path), '/');
    }
    
    // наш роутер, в который передаются маршруты и запрашиваемый путь
    // возвращает функцию если маршшрут совпал с путем
    // иначе возвращает функцию notFound
    function getMethod(array $routes, $path) {
        // перебор всех маршрутов
        foreach ($routes as $route => $method) {
            // если маршрут сопадает с путем, возвращаем функцию
            if ($path === $route) {
                return $method;
            }
        }
    
        return 'notFound';
    }
    
    // функция для корня
    function hello() {
        return 'Hello, world!';
    }
    
    // функция для страницы "/about"
    function about() {
        return 'About us.';
    }
    
    // чуть более сложный пример
    // функция отобразит страницу только если
    // в запросе приходит id и этот id равен
    // 33 или 54
    // [/page?id=33]
    function page() {
    
        $pages = [
            33 => 'Сага о хомячках',
            54 => 'Мыши в тумане'
        ];
    
        if (isset($_GET['id']) && isset($pages[$_GET['id']])) {
            return $pages[$_GET['id']];
        }
    
        return notFound();
    }
    
    // метод, который отдает заголовок и содержание для маршрутов,
    // которые не существуют
    function notFound() {
        header("HTTP/1.0 404 Not Found");
    
        return 'Нет такой страницы';
    }
    
    
    // Роутер
    // получаем путь запроса
    $path = getRequestPath();
    // получаем функцию обработчик
    $method = getMethod($routes, $path);
    // отдаем данные клиенту
    echo $method();


    На практике используют более сложные маршрутизаторы, у которых гораздо большие возможности.

    4. Обойтись без него можно. Если каждая страница в вашем приложении будет являться отдельным файлом, который отвечает за отдачу информации.
    index.php
    about.php
    contact.php
    ...


    Это олдскульная структура, в новых проектах почти не применяется.
    Ответ написан
    13 комментариев
  • Как диагностировать ошибку установки Laravel?

    Austin_Powers
    @Austin_Powers
    Web developer (Symfony, Go, Vue.js)
    Судя по тому, что написано в доках по ссылке:
    CURLE_COULDNT_CONNECT (7)
    
    Failed to connect() to host or proxy.

    и тому, что через прокси сайт cabinet.laravel.com возвращает ответ, это все еще проделки РКН
    Ответ написан
    6 комментариев
  • Как создать правильный SQL-запрос с группировкой и условием?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Начиная с MySQL 5.7 используется строгий подход к GROUP BY. Все поля в запросе должны либо входить в список полей, по которым идёт группировка, либо быть в агрегатной функции.
    Варианты решения:
    - переписать запрос с учётом стандарта;
    - использовать агрегатную функцию ANY_VALUE(), явно указав, что вам всё равно, какое из значений в объединяемых строках использовать;
    - вернуть старый режим работы MySQL через системную переменную sql_mode.
    Ответ написан
    Комментировать
  • Как создать правильный SQL-запрос с группировкой и условием?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. SELECT ... COUNT(b.lot_id) ... group by b.lot_id - всегда будет 1.
    Вряд ли вам нужна группировка по lot_id.

    2.
    WHERE NOW() BETWEEN l.created_date AND end_lot_date
    - не будет использовать индекс, лучше явно писать
    WHERE l.created_date <= NOW()  AND end_lot_date >= NOW()


    3. Когда вы пишите запрос с group by - любые выбираемые данные должны быть или явно указаны в group by, или обернуты какими-то аггрегирующими фунциями (count, avg, max, group_concat итд). Иначе SQL тупо не понимает что ему делать с этим.

    Приведу пример для наглядности:
    name  | age
    Петя  | 10
    Вася  | 10

    select age, name from ... group by age.
    В postgress/mssql/oracle это будет ошибка.
    MySQLс дефолтными настройками проглатывает такой запрос, отдавая кортеж в котором age = 10, а name = случайное значение из подходящих name.
    К счастью в MySQL есть замечательный параметр sql_mode который можно установить в only_full_group_by и все начнет работать как у взрослых. (что и произошло в вашем случае, судя по логу)
    Ответ написан
    2 комментария
  • Зачем использовать Vue вместе с Laravel?

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

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

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

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    переходите с посощью cd в папку domains/ваш сайт и запускаете
    composer self-update
    Ответ написан
    4 комментария
  • Какое расширение для файлов CSS установить в Visual Code?

    SKolt
    @SKolt
    https://www.instagram.com/seregamih/
    Тоже искал когда то подобное решение. Но всё что нашёл - Class Extractor

    Но он работает по другому принципу. Выделяешь нужный код HTML, вводишь команду Class Extractor, и в буфер копируются все имина выделенных классов сразу с точками и фигурными скобками.
    Ответ написан
    1 комментарий
  • Как уменьшить тормоза при использование Ubuntu на usb-флешке?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Если вопрос именно о браузере и у вас есть достаточно широкий канал подключения к Интернет - я бы посоветовал полностью отключить дисковый кэш в настройках браузера. Это существенно снизит нагрузку на накопитель во время работы.
    Ответ написан
    Комментировать
  • Как верстают такой фон?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    И вообще может уже что-то появилось, чтобы не ставить жирные картинки в качестве бекграунда?

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

    Как верстают такой фон?

    Можно по-разному подходить к вопросу. Как вариант три слоя:
    1. Левый контент, у него фон в виде левого круга (чтобы не париться с его размером на разных размерах экрана - ведь там по идее контент должен помещаться в круг). Тут главное все аккуратно расположить и не забывать про critical css.
    2. Коптер (поскольку он жирный, его можно подгружать асинхронно и выдвигать с помощью CSS-анимации из-за правого края экрана - будет и красиво и производительно; я бы еще какой-нибудь эффект к тексту добавил, но это уже другая история). Его размер видимо должен зависеть от ширины экрана и размера контента слева. Надо заранее сообразить, как это все должно адаптивиться.
    3. Меню, которое справа вверху, оно должно быть поверх коптера (опять вопрос про адаптивность).
    4*. Фон, который самый-самый большой фон можно просто поставить на background у хидера. Поскольку он в векторе, его можно сделать гораздо выше, чем на картинке, чтобы опять же не париться, что он вылезет из скругления внизу секции на телефоне. Само это скругление можно сделать тысячей способов, на тостере уже не раз спрашивали.

    Такой подход требует больше времени, чем просто поставить все на фон у одного элемента, но и результат будет немного другого уровня.
    Ответ написан
    1 комментарий
  • На чем писать back-end в связки с Vue + mongodb?

    @eliastro
    Если предполагается, что бэк будет сложным, в котором будет много всего, или ожидается, что в будущем бэк будет активно дописываться, изменяться, то рекомендую писать на Ruby. В этом случае можно писать код быстро, используя уже готовые проверенные временем библиотеки(гемы), при этом код будет лаконичным, ясным и легко поддерживаемым в будущем. Если rest api, то можно выбрать фреймворк Ruby on rails 5 api mode. Связка с RoR+vue+mongodb отлично стекуется.
    Если бэк будет не сложным, то можно все что угодно.
    Если реалтайм, то nodejs или go.
    Ответ написан
    Комментировать
  • Как уменьшить тормоза при использование Ubuntu на usb-флешке?

    Sly_tom_cat
    @Sly_tom_cat
    .
    1. будьте готовы что флешка при длительном использовании на ней ОС достаточно быстро умрет. Мой опыт говорит о нескольких месяцах.
    2. help.ubuntu.ru/wiki/ubuntu_%D0%BD%D0%B0_usb - там перечислены способы оптимизации.

    PS совет про hdd/ssd - очень даже разумный.....
    Ответ написан
    Комментировать
  • Как уменьшить тормоза при использование Ubuntu на usb-флешке?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Во первых usb 2.0 это тормоза. Желательно 3.0 . и флешка быстрая на запись/чтение.
    Во вторых желательно на компьютере много оперативной памяти, тогда помимо того, что не будет свопиться,
    еще часть озу можно отвести для монтирования временной файловой системы.
    Ответ написан
    3 комментария
  • Ошибка при установке selenium-webdriver "VCBuild.exe"?

    @SouLFiX
    Просто установите production windows-build-tools

    # as admin
    npm install --global --production windows-build-tools
    Ответ написан
    Комментировать
  • Как восстановить загрузку Ubuntu после сбоя?

    /dev/sdb6: ОБНАРУЖЕНА НЕКОНСИСТЕНТНОСТЬ; ЗАПУСТИТЕ fsck ВРУЧНУЮ.

    Корневая файловая система на /dev/sdb6 требует ручного запуска fsck.

    Вы же проваливаетесь в оболочку. запустите в ней fsck -fy /dev/sdb6
    Ответ написан
    1 комментарий
  • Почему может не работать функция PHP?

    AloneCoder
    @AloneCoder
    [object Object]
    Видимо должно быть так
    public static function matchRoute($url) {
          foreach(self::$routes as $pattern => $route) {
            if (preg_match($pattern, $url, $matches)) {
              self::$route = $route;
              return true;
            }
          }
          return false;
    }
    Ответ написан
    1 комментарий
  • Почему может не работать функция PHP?

    @Firik67
    Middle PHP Developer
    1. Потому что может быть передан некорректный $url
    2. Потому что self::$routes может содержать некорректные данные
    3. Потому что
    Что в вашем понимании "не работает"?
    Ответ написан
    3 комментария
  • Почему может не работать функция PHP?

    OKyJIucT
    @OKyJIucT
    Sunshine reggae
    В передаваемом $url содержится url, которого нет в массива self::$routes. Как вы ее вызываете, что передаете, какое содержимое self::$routes?
    Ответ написан
    2 комментария
  • Как правильно вывести значения многомерного массива?

    Kaspol
    @Kaspol
    echo $m, "<br>";
    замените на
    echo $m, "\t";

    echo $v, "<br>";
    замените на
    echo "<br>";

    $v возвращает тип в вашем коде. Внутренний цикл проходит по вложенному массиву и выводит значения, расположенные во вложенном массиве. Внешний цикл делает переход на следующий вложенный массив, если там делать вывод, то интерпретатор видит массив, и возвращает тип
    Ответ написан
    Комментировать