Задать вопрос
  • Как заставить срабатывать Laravel Task Scheduler по заданному расписанию?

    @vism
    2022-08-27 14:35:00 Running [Callback] ............................ 8ms DONE

    вот ведь, работает. это у вас лог не работает видимо
    Ответ написан
    Комментировать
  • Как подключить библиотеку во vue.js 3?

    Fragster
    @Fragster
    помогло? отметь решением!
    ты пытаешься смешать composition api и options api.
    Если пользуешься options api, то убери import { useCookies } from "vue3-cookies";, найди место, где создается экземпляр vue (где-то в index.js или подобном месте ищи createApp()) и добавь туда строки подключения плагина для options api:
    import VueCookies from 'vue3-cookies'
    
    let app = createApp(App);
    app.use(VueCookies);
    app.mount('#app')


    или переходи на composition api и там уже useCookies и вот это все. В принципе, в документации всё описано.
    Ответ написан
    3 комментария
  • Не вызовут ли аттрибуты phpstorm проблем в продакшене?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Не вызовут, если версия РНР "на проде" не меньше 8.0
    Введение в атрибуты
    Ответ написан
    2 комментария
  • Зачем задавать приватный модификатор доступа для свойств класса?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    У вас очень логичный вопрос на счет сеттера: сеттер полностью уничтожает задумку с инкапсуляцией. Правильно это называется "семантическое нарушение инкапсуляции" — то есть как-бы мы инкапсулировали, но по факту назад открыли прямую запись в свойство напрямую. Все доводы "ну мы можем в сеттере валидировать" не корректны

    Правильным способом будет не использовать сеттеры. Вот моя статья на эту тему:
    https://habr.com/ru/post/469323/

    Более подробно: каждый класс нужно проектирвовать так, чтобы данные внутри были максимально связаны. Например каждый метод работать должен в хорошем случае с максимальным числом полей класса, тогда у него высокий cohesion... В тоже время снаружи наужно работать с максимальн омалым числом метода, тогда будет низкая связанность (coupling). Это пара принципов из GRASP.
    Когда вы делаете сеттеры и геттеры, то у вас данные внутри между собой почти никак не взаимодействут: с геттером работают снаружи, с сеттером работаю снаружи — весь класс нараспашку, а в нем в 100% случаев появляются данные, которые вместе не должны находиться и никак не связаны — анрушена и абстракция и инвариант и много чего еще...

    Про инвариант отдельно: например есть платеж, у него есть значение, с которым платеж инициирвоан (initValue), есть значение холда (holdAmount) и есть значение чарджа на списание (chargeAmount)
    Когда вы работаете с платежом, контролируя ивнариант в самом классе, то ваш каждый метод првоеряет др значения и позволяет перейти к др состоянию... методов будет 2-3, все инкапсулировано и безопасно.

    Например:
    class Payment {
         pub func charge(amount int) void {
              if (this.holdAmount < amount && this.initAmount < amount) {
                   throw new PaymentException('Unavailable charge amount')
              }
    
               if (this.status === PaymentStatus:finish) {
                   throw new PaymentException('Payment already fisnished')
              }
    
              this.chargeAmount = amount
              this.holdAmount -= amount
              this.status = PaymentStatus:finish
         }
    }


    Тут в одном методе полные проверки и класс сам контролирует все состояние внутри, также соблюдается закон Деметры. У даннго кода высокий cohesion (из GRASP), тк внутри идет плотная работа с внутр данными (значит они корректно тут закроекны) и низкий coupling ( с теми данными для данного кейса только один метод работы, все внутри)

    Когда вы раскроете сеттерами и геттерами, то ваше состояние становится непредсказуемо и полагается только на то, что снаружи точно подумали об инварианте (нет)
    Ответ написан
    18 комментариев
  • Есть ли возможность из одного модуля вызвать мутацию другого?

    Fragster
    @Fragster
    помогло? отметь решением!
    commit('namespace/someMutation', payload, { root: true })

    но вообще если приложение новое, я бы смотрел в сторону pinia, намного удобнее.
    Ответ написан
    3 комментария
  • Как передать на бекенд требования к API?

    @Vitsliputsli
    Многие фронтендеры относятся к беку, как к некой обертке для работы с базой данной. Когда такие становится лидом команды и начинают диктовать свои требования беку, начинается ад, проект даже с простым беком превращается в нечто монструозное, разваливающиеся на ходу. Но, так как снаружи бек не виден, руководство считает, что дело в отдельных тупых бек-разработчиках, которые артачатся, не хотят работать и увольняются.
    Судя по вашим фразам, вы скорее всего один из них. Так как уверены, что приложение - это то, что на фронте, что api - это хрень, которая завязана на отображении информации на фронте, что разработчики бека не нужны при разработке архитектуры и вообще пофиг, что они там делают, главное чтобы давали то, что хочет фронт.
    Но, раз вопрос задан, значит сомнения вас посещают. Поэтому: приложение это не только фронт, а зачастую фронт это не самая сложная его часть. Бек - это не обертка над базой данных, и если вы поменяете значение в базе, это не значит, что к примеру, в потоковом вещании сменится кодек (вот, кому-то может и смешно, а мне в такой ситуации ни фига не было весело). С помощью API получают данные, поэтому не важно, что там у вас напроектировали дизайнеры, или как эти данные выводит фронт, API должен быть универсальным и не зависить от того как вы отображаете данные, поэтому, к примеру, бек может вам дать для получения данных несколько универсальных запросов, а не один специальный. В общем, все гораздо сложнее, и ваш вопрос как состыковать фронт и бек перерастает в вопрос как формировать архитектуру проекта, и как управлять командой.
    Ответ написан
    17 комментариев
  • Как реализовать приложение для фитнес-центра?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Знаком с мобильным сектором довольно поверхностно, но кое о чем в курсе.
    1.Есть кроссплатформенные фреймворки по типу react и native flutter. Собственно они позволят максимально упростить создание интерфейса под разные платформы.
    2.Сейчас, насколько могу судить, каких-то существенных отличий в походе к управлению/параметрам устройств нет и делать разные дизайны имеет смысл если того требует специфика.
    3.
    разработчики приложений могут делать и фронт, и бэк

    Могут, в теории. Фулстеки. Но таких, особенно умеющих в мобильную разработку, а главное грамотных - на порядок меньше.
    Ответ написан
    1 комментарий
  • Как в Laravel выполнить задачу время которой указано в БД?

    neuotq
    @neuotq
    Прокрастинация
    Самый простой способ это начать с планировщика https://laravel.com/docs/9.x/scheduling, там допустим сделать задание(уже вам виднее Job или ещё как), который будет в момент запуска проверять вашу БД на текущие задачи и делать их.
    Ну те сделали, например каждую минуту
    $schedule->call(new DoCurrentJobsFromDb)->everyMinute();

    А в DoCurrentJobsFromDb запрос к базе, выборка по времени текущих заданий и отправка их на немедленное выполнение(тут снова тем или иным способом, подходящим под вашу архитектуру).
    Параметры частоты уже выбираете из ваших соображений.
    Ответ написан
    2 комментария
  • Где можно применить оператор нулевого слияния?

    @entermix
    Это синтаксический сахар

    let user;
    alert(user ?? "Аноним"); // Аноним (user не существует)


    let user = "Иван";
    alert(user ?? "Аноним"); // Иван (user существует)


    let firstName = null;
    let lastName = null;
    let nickName = "Суперкодер";

    // показывает первое значение, которое определено:
    alert(firstName ?? lastName ?? nickName ?? "Аноним"); // Суперкодер


    https://learn.javascript.ru/nullish-coalescing-operator
    Ответ написан
    Комментировать
  • Зачем нужны роутеры если можно обходиться без них в express.js?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Просто один из уровней абстракции. Точно так же можно сказать о любой функции/методе и так дойти вниз до машинного кода и транзисторов. Кроме того, роутер может иметь более сложную логику, чем просто отработка запроса по ссылке - например использовать параметры из ссылки.
    Ответ написан
    Комментировать
  • Как убрать авто подстановку кавычек?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    File → Settings → Editor → General → Smart Keys : Insert pair quote
    Ответ написан
    Комментировать
  • Для чего нужны Map и Set?

    Окей гугл, что такое "структуры данных".

    Нужны они для не очень частых случаев, когда объект (по сути тот же Map со строковым ключом) или массив не удобны, либо слишком неэффективны (тут следует загуглить О-большое).

    Например при помощи Map ты можешь сопоставить одному объекту другой объект, чего ты никак не можешь сделать при помощи обычных объектов.

    А при помощи Set ты можешь получить массив без повторов, и при этом без необходимости при каждой вставке проверять, есть ли такой элемент в массиве, или нет.
    Ответ написан
    Комментировать
  • Как в 2022 году проверяют верстку в Safari и Safari Mobile, если нет мака и нет айфона?

    Get-Web
    @Get-Web
    Front-End Developer
    На виртуальную машину VMware или VirtualBox ставишь MacOS и там с настоящего браузера Safari дебажишь без особых проблем.
    Ответ написан
    2 комментария
  • Как в 2022 году проверяют верстку в Safari и Safari Mobile, если нет мака и нет айфона?

    @Ignavus
    Можно поставить свежую MacOS на VirtualBox.
    Monterey 12.3.0 в марте ставил - взлетела нормально.
    Но вопросов с IPhone оно не снимает.
    Ответ написан
    1 комментарий
  • Что выбрать VPS или PaaS?

    @holyx
    ДевОпс Сисадмин
    cloudservicesseparation.png

    Вот хорошая иллюстрация. Классический PaaS под задачу будет получше, чем VPS. В данной схеме VPS это IaaS, т.е. предоставляется только "железо", на которое нужно самому накатить ОС, настроить, установить нужные пакеты, сконфигурировать их и потом гонять своё приложение.
    По PaaS предоставляется сконфигурированное окружение, на котором уже можно гонять своё приложение. PaaS настроен по шаблону, там с безопасностью будет лучше, чем в VPS сконфигурированной руками не профи. По нагрузке, всё зависит от прожорливости и кривости приложения.

    Если что-то специфическое нужно, то VPS и руками, если стандартное, без заморочек, то PaaS.
    Ответ написан
    1 комментарий
  • Безопасно ли хранить api ключ в .env?

    Djaler
    @Djaler
    Сеньор-помидор
    Если это фронтенд-приложение - то оно целиком публично, в нём нельзя ничего спрятать. Такие места, где используется переменные из env - считай что просто автозаменой при сборке подставляются значения.
    Ответ написан
    Комментировать
  • Безопасно ли хранить api ключ в .env?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Ну так если он будет передаваться при запросе, то и смысла его прятать нет.
    Ответ написан
    Комментировать
  • Можно ли обновить пакеты разархивировав образ в папку?

    @pfg21
    ex-турист
    какой образ ?? зачем вносишь изменения ?? для чего собираешь ?? какая система обновляется ?? что вообще делаешь ??
    описывай яснее вопрос, не свои бессмысленные эмоции , а конкретную проблему желательно технически подброным языком.
    все ясновидцы и предсказатели давно сбежали на РЕНТВ.
    Ответ написан
    6 комментариев
  • С помощью какой программы отзеркалить видео по горизонтали?

    ffmpeg с фильтром hflip:
    SRC="/var/tmp/nu-pogodi.mp4"
    
    ffmpeg \
      -i "$SRC" \
      -vf "hflip" \
      -c:v libx264 \
      -c:a copy \
      "$SRC-flip.mp4"
    Медленная и тяжёлая часть работы тут — пережатие видео в h264. Его не избежать, к сожалению.

    Можно выполнять кодирование на GPU, но придётся компилировать ffmpeg и кодек. Вот пример. Не пробовал. Но должно ускорить.
    Ответ написан
    7 комментариев