• Как оплатить домен у NameCheap?

    @RoundRobin
    Попросите знакомых из EU/US оплатить. Или сами зарубежной картой (есть люди, которые сами конечно не выпускают, но уже продают готовые такие). Делать это лучше с IP соответствующей страны (важно! не VPN, они за подмену IP были случаи блокировали аккаунты).

    Другое дело, ради чего все это? Домены там давно не дешевые, русскоязычных клиентов 22-го грозятся выгнать...

    Можно же продлить трансфером к другому регистратору, из нейтральной страны (например regway), и принимает российские карты или yoomoney, или крипту. Оно и дешевле выйдет.
    Ответ написан
    Комментировать
  • Как правильно строить крупный проект?

    @vism
    Называется, услышал звон, да не знаю где он.

    1. Сервисный слой ты превратил в контроллер.
    Т.е. у тебя есть контроллер, а ты создал ещё один, т.к. где-то слышал, что нужны сервисы.
    Но, сервисы не шлют ответы, это внутренний слой для отделения логики.
    Ты можешь те методы вызвать через консоль, другие сервисы и т.п.
    Там должен просто генерироваться return, а сам response уже в контроллере (чтоб контроллер своб функцию выполнял). Валидацию реквеста кстати тоже надо делать не в сервесе.

    2. CategoryQuery - это вобще дичь дикая.
    Ты опять создаёшь дубликат, потому что услышал о репозиториях, и даже интерфейс. Вот я угараю с людей, кто везде пихает интерфейсы. Интерфейсы нужны там, где они нужны. Где будет 2+ наследователей интерфейса.
    Откуда у тебя тут наследники, если ты завязан на элокуент?
    А ноги от индусов репозитаристов. Не нужен репозитарий, Query и интерфейсы при работе в элокуент. Он сам в себе это всё уже содержит и все повторяющиеся вещи обёрнуты уже. find, first, firstOrNew и т.д.
    Так что используй элокуент и не переусложняй проект напрасно. Не надо делать сложно, делай просто.

    3. CategoryAction.
    Опять интерфейс...
    Вот это Экшн по сути у тебя сервис. Тут ты имеено перенёс бизнес логику создания и редактирования и возвращаешь ответ данного метода. Вот удали свой CategoryAction и перенеси методы в сервис.
    Ответ написан
    30 комментариев
  • Как оптимизировать эти запросы на Laravel?

    AmdY
    @AmdY
    PHP и прочие вебштучки
    Насколько я помню, ->get() делает запрос к базе и возвращает коллекцию. А это куча данных и ваш проект будет умирать, пользуйтесь groupBy как часть запроса и расчитывайте на стороне БД до вызова get(), а не после, когда вы уже работаете не с квери билдером, а с огромной коллекцией.
    Ответ написан
    3 комментария
  • Почему многие стартапы используют зону .io?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    зоны com, gov, edu, ru, su уже забиты полностью, а тут можно купить красивое имя
    Ответ написан
    Комментировать
  • Как прокинуть событие через много компонетов?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Если нам нужно прокинуть данные от родителя к ребенку на сколь угодно глубокий уровень, мы можем воспользоваться provide/inject, а если нам надо в обратную сторону?

    Точно так же. "Прокидывайте" с помощью provide метод компонента - "в обратную сторону" сведётся к его вызову.
    Ответ написан
    Комментировать
  • Какие практики используются для локализации писем в Laravel?

    @kandrash
    Кратко о себе
    Или вы что-то переусложнили или я не понял чего вы хотите добиться.

    Вот тут описано как при отправке задать язык - https://laravel.com/docs/8.x/mail#localizing-mailables.

    А сам перевод можно хранить как обычно.
    views/emails/welcome.blade.php
    
    lang/
      ru/
        mails.php
      ar/
        mails.php

    Не вижу смысла в дублировании вьюшек.
    Ответ написан
  • Зачем нужно тестирование?

    @azShoo
    Проблема в том, что разработчики не могут писать код без ошибок.
    Более того, в сколько-нибудь сложных программных системах при внесении каких-либо изменений слишком сложно понять, как это отразится на других частях.
    Для того, что бы минимизировать поиски этих багов и ускорить их обнаружение пишутся юнит тесты.

    ТДД про то, что бы писать тесты до кода.
    Зачем это надо? Потому что такой подход помогает лучше структурировать в голове необходимую функциональность перед написанием непосредственно кода.
    Такой подход позволяет избегать избыточного усложнения кода, потому что подход "tests first" не позволяет написать полотнище сложного кода, не проверив правильность его работы.
    Плюсов достаточно.

    Теперь по поводу того, нужно ли ТДД всегда.
    ТДД нужно не всегда, как и красивый, производительный и правильно работающий код.
    Иногда, нужно закостылить MVP, проверить бизнес-идею и продолжить жить. В таком подходе 20% времени, потраченные на юниты - непозволительная роскошь.
    Иногда, вы пишете систему, сложность которой такова, что держать в голове матрицу состояний даже одного модуля не представляется возможным. И тут уже без юнит-тестов никак. Тут ТДД будет полезно.

    Резюмируя. ТДД - отличный инструмент. Он позволяет не откладывать на потом написание юнит тестов, добиваться хорошего покрытия и, что важнее всего, контролировать изменения, вносимые в систему. Любая неожиданная ветка поведения приведет к падению тестов.
    Как и любой инструмент - ТДД хорошо тогда, когда ты применяешь его своевременно, правильно и по назначению.
    Писать тесты когда продакшен в огне, а компания терпит крах - плохая идея. Везде нужен здравый смысл.
    Ответ написан
    Комментировать
  • Как передать данные в модель?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Передать-то можно:
    $data = $api->getJson();
    $model = new YourModel($data);


    Но только проще создать свои модели, не связанные с Eloquent (можно в них добавить трейт HasAttributes, если нравится его поведение), а не пытаться натянуть ужа на ежа. В "стандартной" модели очень много всего завязанного на Eloquent и подменить его будет сложно, лучше потихоньку добавлять нужную функциональность руками.

    Ну а контроллерам вообще всё равно с какими объектами работать.
    Ответ написан
    3 комментария
  • Как разделить фон на 2 картинки css?

    Самое простое: две картинки сшиты в одну, которая отцентрована на фоне ))
    Можно извратиться с двумя блоками :before + :after %)
    Ответ написан
    5 комментариев
  • Guards vs Roles в laravel?

    Fragster
    @Fragster
    помогло? отметь решением!
    А как одно другому мешает? В общем случае guards и policies позволяют использовать кучу хелперов (в шаблонах, в контроллерах, в т.ч. ресурсных, в middleware) а откуда они там будут брать для этого данные (поле в модели пользователя, поле в отдельной таблице ролей, поле в таблице модели прикладного объекта, некая комбинация этого (например автор + модератор)) - это все описывается уже кодом.
    Ответ написан
    Комментировать
  • Где в Laravel лучше делать валидацию входящих данных - в контроллере или сделать кастомный Request для контроллера, или Middleware?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вообще-то в Ларе УЖЕ есть этот самый отдельный сервис - Illuminate\Http\Request, который и предназначен для валидации входящих данных.
    Ответ написан
    2 комментария
  • Фиктивная сущность phpunit?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Зачем вам фиктивная, если в тесте вам нужна обычная сущность ? :)
    НЕ совсем понятен вопрос, нужна User — берите User
    Ответ написан
    3 комментария
  • Как в Laravel вывести если пользователь онлайн?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    никак естественно не получится, у вас же будет стопицот запросов на каждого пользователя и доставать надо каждый раз всю базу чтобы проверить онлайн ли юзер.

    Надо просто добавить какой-нибудь last_activity_at и при каждом запросе юзера ставить туда текущую дату.

    При выборе уже выбираете тех у кого last_activity_at > now()->subMinutes(5) например.

    Это и будут онлайн пользователи.
    Ответ написан
    2 комментария
  • Как деплоить fullstack проект?

    У Laravel есть Laravel Mix в комплекте, который спокойно позволяет оптимизировать все ваши махинации.
    Запускаете команду npm run watch и спокойно пишете код, если нужно обновление страницы при изменениях - подключаете browserify.

    Смотрите в сторону Laravel Envoy, настраиваете все данные для деплоя на сервер. Все это деплоится с git-репозитория вашего проекта.

    В итоге весь маршрут от выполнения правок до деплоя проекта состоит по сути из следующих этапов:
    1. Выполняете правки, просматриваете через npm run watch
    2. Комитите все в свой репозиторий.
    3. Выполняете команду envoy run deploy и все изменения с репозитория подтягиваются на сервер.

    На этом все.
    Ответ написан
    6 комментариев
  • Регулярное выражение для поиска слов из заглавных букв?

    @Nc_Soft
    preg_replace_callback(
        '~[А-ЯЁA-Z]{2,}~u',
        function ($match) {
            return mb_strtolower($match[0], 'utf-8');
        },
        'Товар "Диван Амстердам" МИКС, акция, ОГРАНИЧЕННАЯ ПАРТИЯ'
    );
    Ответ написан
    3 комментария
  • Как выбрать дизайн для стартапа?

    oxyberg
    @oxyberg
    Продуктовый дизайнер ВКонтакте
    Раскрою секрет: даже если вы разработаете нужный стартап, но купите шаблон (т.е. не закажете, а купите готовый), проект может заглохнуть, не начавшись. Очень многое зависит от качества дизайна и проектирования, которое должно предшествовать разработке.
    Ответ написан
    Комментировать
  • Как во vue js добавить кружок, который показывает что идет загрузка?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ответ написан
    Комментировать
  • Где посмотреть примеры архитектур/связей БД?

    @Barmunk
    https://drawsql.app/templates

    Collection of real world database schemas from open-source packages and real-world apps that you can use as inspiration when architecting your app.


    На любой вкус.
    Ответ написан
    Комментировать
  • Как формируются slug в laravel?

    Вы можете валидировать данные, которые приходят в контроллер через кастомные Request-классы. Там вы можете указать такую конструкцию:
    public function rules()
        {
            return [
                'slug' => [
                    'string',
                    'unique:posts,slug'
                ],
            ];
        }


    Если при проверке Slug он уже есть в базе, то выводится ошибка валидации.

    Чтобы слаг генерировался на лету, можете в том же кастомном Request реализовать метод:
    protected function prepareForValidation() :void
        {
            $this->merge([
                'slug' => ($this->slug) ?? \Str::slug($this->title, '-')
            ]);
        }


    То есть перед самой валидацией ваших данных к этим данным добавится сгенерированный из заголовка слаг, если поле осталось пустым, либо тот слаг, что вы указали
    Ответ написан
    2 комментария