• Laravel 7.1 и Mongodb 4.2 как использовать?

    neuotq
    @neuotq
    Прокрастинация
    Всё хотят и работа активно ведётся, делают новую версию(без обратной совместимости).
    Поэтому ждать релиза и пока продакшн проекты не обновлять.
    А так, есть dev ветка, можно поучаствовать в тестах и экспериментах. Laravel 7 уже поддерживается.
    Вот можно и следить за реализацией фич.
    Ответ написан
    3 комментария
  • Стоит ли переходить на Percona server с MariaDB/MySQL?

    neuotq
    @neuotq
    Прокрастинация
    Вопрос не тривиальный и переход должен делать специалист.
    Выбор всего движа должен происходить в том числе из реалий вашего бизнеса/проекта, команды специалистов и прочего.
    Таким образом, если сейчас всё работает и устраивает и вы сами лично не видите плюсов/минусов, и даже не сильно разбираетесь в настройках, то я бы рекомендовал сосредоточится на улучшении, развитии других частей проекта, в которых вы в теме.
    А для переезда, масштабирования БД выделить бюджет на специалиста, когда бюджет появится. А так, работает не трогай, тк переезд это всегда подводные камни, время, нервы и возможные простои. Оно вам надо? Я думаю нет.
    Поэтому не спешите.
    И в первую очередь составьте список, лёгкое ТЗ, проблем и задач администрирования БД в вашем случае. Затем его можно наложить на ваш текущий движ, и может быть всё не так уж и плохо. И скорее всего, есть много инструментов облегчающих, автоматизирующих работу и в MariaDB.
    А может вам вообще в самом sql функций не хватает, может вам нужен PostgreSQL?
    Нет, так дела не делаются, вопрос побольшому счёт вообще бессмысленный, разве что в комменты вы ждете любителей холиваров ради холиваров.
    Ответ написан
    1 комментарий
  • Как получить значения внутри sizes?

    neuotq
    @neuotq
    Прокрастинация
    У вас json поломанный, там лишнее кавычки вокруг квадратных скобок, в результате внутри photo не набор данных, а строка.
    $json = '{"photo": [ {"markers_restarted":true,"photo":"89f6559651:x","sizes":[["s",858136244,"195d27","LUU541je04g",75,28],["m",858136244,"195d28","5X0nTDYfROQ",130,48],["x",858136244,"195d29","8d1U8WuXDBo",604,225],["o",858136244,"195d2a","Yq9fT1Ueo3A",130,87],["p",858136244,"195d2b","3AiiPHulyak",200,133],["q",858136244,"195d2c","x-B5oe9Myhc",320,213],["r",858136244,"195d2d","RwVnagzyMgo",510,225]],"latitude":0,"longitude":0,"kid":"442decc8b415ad1496eee074ff555262","urls":["v858136244/195d27/LUU541je04g.jpg","v858136244/195d28/5X0nTDYfROQ.jpg","v858136244/195d29/8d1U8WuXDBo.jpg","v858136244/195d2a/Yq9fT1Ueo3A.jpg","v858136244/195d2b/3AiiPHulyak.jpg","v858136244/195d2c/x-B5oe9Myhc.jpg","v858136244/195d2d/RwVnagzyMgo.jpg"]}]}';
    
    $json_decoded = json_decode($json, TRUE);
    
    print_r($json_decoded['photo'][0]['sizes']);
    Ответ написан
    Комментировать
  • Как вывести "новую" переменную?

    neuotq
    @neuotq
    Прокрастинация
    Есть простой вариант, легче вам будет сделать так:
    в моделе User
    /**
     *  Получаем читаемую дату.
     *
     * @return string
     */
    public function getHumanDateAttribute()
    {
      //Таймзону лучше брать из настроек приложение, а не хардкод
      $timezone = config('app.timezone');
       return  Carbon::parse($this->created_at, $timezone)->isoFormat('Do MMMM YYYY');
    }


    Ну и потом в коде или в шаблонах вызываешь
    $user->human_date;
    Если делаешь сериализацию в json и нужно чтобы этот атрибут был и там, то в моделе добавляешь:
    /**
         * The accessors to append to the model's array form.
         *
         * @var array
         */
        protected $appends = ['human_date'];
    Ответ написан
  • Редизайн/концепция и авторское право?

    neuotq
    @neuotq
    Прокрастинация
    Всё норм. Незаконно: если ты сделал сайт копию зары, и продаешь с него одежду притворясь брендом Зары, а на самом деле делая подделку.
    Незаконно если ты сделал копию Нью-Йорк Тайм, и делаешь сайт, притворяясь ими.
    А так, это лишь фантазия, опыты, практика. Если нет прямого оскорбления, клеветы и тп, можно экспериментировать и выставлять что угодно. Иначе бы даже любое обсуждение брендов, и упоминание вслух было бы незаконно.
    Короче говоря не путайте.
    Максимум к чему могут напрямую придраться, это например к использованию фото/видео материалов. Но снова таки, здесь они тоже как поддержка оригинального бренда, нет особых проблем, тк бренду, обычно, это не выгодно.
    Хотя, есть случаи с Нинтендо, которая в свое время(и вроде и сейчас?) неадекватно относилась к стримерам игр на ютубе. В результате обзоров и летсплеев было ничтожно мало, везде приходила Нинтендо со своим копирайтом.
    В общем резюме:
    Делать свои версии: абсолютно обычная практика, все это делают, почти всегда бренд на это никак не реагирует (кроме случаев отрицательного пиара). Могут попросить удалить/заменить копирайченное фото/видео. Но обычно, на подобных площадках, это не делается.
    Конечно, если это коммерческий сайт и тп. И хочется пофантазировать на счёт своего виденье бренда(в корп блоге дизайн студии например), то асеты использовать свои, либо брать по лицензии.
    Ответ написан
    3 комментария
  • Какие актуальные книги есть по веб-разработке(или старые но информативные).И что читать(по вебу) в 2020?

    neuotq
    @neuotq
    Прокрастинация
    Начните с
    Идеальный программист. Как стать профессионалом разработки ПО, Роберт Мартин
    Не заставляйте меня думать. Веб-юзабилити и здравый смысл, Стив Круг .
    Это вне контекста веб, не веб. Но сильно поможет выстроить мозги и понять цели задачи. Не становясь обычным отрешенном условным скрипт-кидди
    Ответ написан
    Комментировать
  • Почему не работает array_uintersect?

    neuotq
    @neuotq
    Прокрастинация
    А зачем в вашем колбеке обращаетесь по ключам? нужо тогда так:
    function keyCompareFunc($key1, $key2) {       
            return strcasecmp($key1,$key2);
    }
    Ответ написан
  • Стоит ли использовать Laravel Airlock или можно не парится и использовать Passport?

    neuotq
    @neuotq
    Прокрастинация
    Если для вашхи задач Passport подходит, всё хорошо, оставайтесь на нём. Это правило касается любых решений и технологий. Более того, сам Passport не устарел, это официальный OAuth2 пакет от команды.
    Airlock же проще, использует другой подход для аутентификации, более легковесный, но закрывающй большинство задач стоящих перед "как нам проверить что за зверь стучится в API/от SPA".
    Вообще это тема отдельной статьи и они даже есть в инете, но грубо говоря Passport > Airlock , потому как из Airlock убрали все сложности Oauth
    Ответ написан
    Комментировать
  • Как убрать накопление данных во втором select`e при выборе значения из первого?

    neuotq
    @neuotq
    Прокрастинация
    Добавьте строчку

    $(document).on('change','#direct',function(){
      let id = document.getElementById("direct").value;
    
        $.getJSON("ajax", {id}, function (data) {
        	$("#modules").html('');
            $.each(data, function (index, item) {
          		$("#modules").append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
        	});
        });
    });

    Ну и чтобы уменьшить обращения к DOM дереву, элемент #modules можно тоже скешировать.

    $(document).on('change','#direct',function(){
      let id = document.getElementById("direct").value; // Возможно тут вам тоже не нужен let? мб const
     const modulesEl = $("#modules");
    
        $.getJSON("ajax", {id}, function (data) {
        	modulesEl.html('');
            $.each(data, function (index, item) {
          		modulesEl.append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
        	});
        });
    });
    Ответ написан
  • Как сделать, чтобы открывался сайт, а не ссылка?

    neuotq
    @neuotq
    Прокрастинация
    Тут не в ларавел дело, а в принципе работы тега a И его параметра href.
    Если вы не указывайте протокол, полный и понятный/известный пусть для бразуера, он будет считать что вы указали относительный путь.
    Поэтому добавляйте http:// или https:// и всё будет работать.
    Ответ написан
  • Почему длительность сеанса меньше чем длительность просмотра страницы?

    neuotq
    @neuotq
    Прокрастинация
    Ну так, сеансы касаются всего сайта. А страница - конкретной страницы.
    Может есть страница с контентом которую смотрять долго и нудно.
    Но на сайте есть куча промежуточный, второстепенных страниц, на которых пользователь провдит совсем мало времени, быстро переходя куда нужно.
    Ответ написан
    Комментировать
  • Как сделать смену позиции категории в общем списке?

    neuotq
    @neuotq
    Прокрастинация
    Нет, автоинкремент точно нет. Но если бизнес логика требует, можно сделать +1 к максимальному значению при создании нового, как пример.
    А так, для сортировки по умолчанию у тебя уже есть id, так что по нему и будет сортировка идти, при прочих равных (ну если у всех 0).
    Кстати, совутю поставить пакет spatie/eloquent-sortable, они сделали реализацию большей части нужной логики для сортировок, поэтому тебе только в нужных местах прописать вызов методов, поведение по умолчанию(можно использовать query scope), ну и запрос с фронта. И всё волшебно будет работать. Тебе схему и БД менять не нужно, только установить пакет и сделать соответвующие правки в код.
    Ответ написан
    2 комментария
  • Как подгрузить разные формы в Blade Laravel?

    neuotq
    @neuotq
    Прокрастинация
    Blade в любом случае это рендринг на стороне сервера.
    Любые динамические действия это JavaScript(за редким исключением).
    Значит далее вы уже решаете каким путём идёте.
    Можно идти популярным ныне путём создания компонентов и постройки интерфейса на реактивных фронтэнед фреймворках. При это не значит что нужно переписывать весь код, весь сайт делать SPA и тд. И react и vue, да и angular (и тд) вполне можно использовать и в более меньших масштабах, для небольших интерактивных компонентов. Laravel умеет со многими дружить практически из коробоки, в сети полно инструкций на этот счёт. И этот путь я вам советую.
    Второй вариант, более классический. Это решение на jquery (хотя можно и чистым js). Здесь вы можете делать например Ajax запросы к серверу, и там генерировать, в том же blade, часть select, а потом динамически подгружать.
    Кстати в Blade сейчас тоже появились компоненты (Laravel 7) советую почитать, возможно будет полезно.
    PS кстати на счёт первого подхода, вместе с Laravel 7, недавно вышел Livewire , специально разработанный под Laravel фулстек фреймворк для создание динамических сайтов, советую глянуть. Позволит быстро строить разные штуки, и порог входа ниже и проще React и Vue. В нём больше ориентация на AlpineJS. И в любом случае, после изучения, будет легче потом и Vue и React и изучать если что.
    Ответ написан
    Комментировать
  • Какой есть биллинг, который не требует базы данных?

    neuotq
    @neuotq
    Прокрастинация
    Ну так воспринмайте Mysql и тп как файлы. Они и есть файлы между прочим.
    А все пляски с хранением инфы в обычных текстовых файлах (что всё равно можно назвать базой данных) со времем сведётся к тому, что вам нужно будет реализовывать множество функций (блокировка, транзакции и тп, для билинга всё же повышенные требования к надежности, защищенности от дубляжей и тп) уже существующих баз данных. спрашивается, зачем это нужно?
    Не нравятся вам работать с mysql, так не работайте, в самом php уже давно есть pdo, более того есть различные еще более высокго уровня абстракции типа Doctrine 2 или Active Record (например Eloquent)
    Где вам практически не нужно думать о конкретике.
    Ответ написан
    Комментировать
  • Каким образом загружать несколько файлов из формы, при этом, обрабатывая их через Intervention Image?

    neuotq
    @neuotq
    Прокрастинация
    Ну первое у вас есть наверное опечатка, здесь нужно images, тк в форме images
    $files = $request->file('images');
    Далее, как я понимаю здесь
    Image::make($file)->insert($watermark, 'bottom-right', 100, 100)

    Вы хотите вызвать экземпляр класса Intervention\Image, но одновременно видимо у вас и модель называется Image, и подключается позже, а значит php воспринимает это как App\Image.
    Значит вам нужно Intervention\Image добавлять другим алиасом, (меняйте в config/app.php , раздел aliases).
    Ну и не забывайте, что после этих исправлений, у вас будет просто загрузка фото, без сохранения в БД, поэтому если нужно еще сохранить что-то в БД, например в вашу модель Image, то нужно дополнительно писать код.
    Ответ написан
    1 комментарий
  • Есть ли смысл учить wordpress в 2020?

    neuotq
    @neuotq
    Прокрастинация
    Да.
    Вообще глупый вопрос, вы уж извините.
    Есть смысл учить любой инструмент который вам нужен в работе. Нужен wordress, ок. Учите.
    А насчет того, что там что-то умирает и тп, ну до этого нужно ещё дожить, возможно вы уже даже не будете разработчиком, а руководителем например?
    Короче говоря, делайте и учите то что получается и имеет спрос.
    Wordpress еще долго будет иметь крайне высокий спрос, а php вовсе не умирает, свою долю в своей нише он имеет достаточно серьёзную и активно развивается. Как и вордпрес
    Ответ написан
    Комментировать
  • Безкінечно загружається прототип у Figma?

    neuotq
    @neuotq
    Прокрастинация
    Скорее всего что-то с сетью/DNS. Возможно у вас он блокируется брандмауэром.
    Декстопная версия на самом деле написана на electronjs, а значит там node.js и chromuim внутри. Те по сути альтернативная версия браузера заточенная под запуск приложения Figma.
    И если у вас в браузере всё ок, а десктопной нет, значит скорее всего смотрите нет ли запрета по сети в брандмауэре.
    Ответ написан
    Комментировать
  • Граница между front-end и back-end?

    neuotq
    @neuotq
    Прокрастинация
    Чтобы там не говорили, бэкэнд может оставаться полностью черным ящиком только для верстальщика, ито с оговорками.
    Фроентэнд разработчик, даже с джун уровня, уже активно работает с получением отправкой данных, интерактивными интерфейсами и тп. Понимать как и почему некоторые штуки там работают нужно. Хорошо даже уметь быстро что-то простое сделать. Я не говорю становится фулстеком в полном смысле этого слова, НО. По хорошему: фронтендер мидл и выше уровня можно с натяжкой назвать фулстеком, просто с большим перекосом на фронт часть.
    Просто даже серверлесс направление, заставляет в той или иной степени понимать процессы происходящие на той стороне.
    Ну и в любом случае, в случае активной практики и развития, вы сами столкнётесь с тем, что иногда нужно даже лезть и писать какие-либо свои простые скрипты.
    Отмечу отдельно, это не значит что нужно с головой падать, пытаться стать фулстеком. знать всё и тп. Нет, я имею ввиду что понимание работы бекенда, а значит и умение делать некоторые вещи, должны будут и прийдут при активной работе и роста вас как специалиста.
    Это же касается тех же софт скилз и менеджерских умений.
    Ответ написан
    1 комментарий
  • Почему возраст не выводится?

    neuotq
    @neuotq
    Прокрастинация
    $first_age = array_column($records, 'last_age');
    $first_age - массив.
    Далее
    $birthday_timestamp = strtotime($birthday);
    strtotime()- принимает только строки.
    А значит вызывать вашу функцию нужно
    echo calculate_age($first_age[0]);
    Или в цикле по каждому элементу
    Ответ написан
  • Нормально ли будет взять October CMS за основу сайта?

    neuotq
    @neuotq
    Прокрастинация
    Ну, откровенно говоря он избыточен. October CMS можно сказать wordpress в мире Laravel.
    Те просто ради админки его брать нет смысла. А вот если вы хотите использовать их обширную библиотеку готовых плагинов то да.
    А так лучше подобрать из готовых кирпичиков круд админки, ларавел пакеты для управления ролями(например spatie/laravel-permission удобен достаточно, у spatie вообще много неплохих пакетов) и тп.
    Ответ написан
    Комментировать