Задать вопрос
  • Нужно ли добавлять в gitignore .d.ts?

    Lynn
    @Lynn
    nginx, js, css
    Иногда их пишут руками.

    А в остальном с ними надо поступать как со любыми другими файлами: если их можно получить путём компиляции из других исходных файлов, то нет смысла хранить их в гите
    Ответ написан
    3 комментария
  • Как в nuxt узнать ширину клиента во время ssr?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Ширину вроде никак, а вот тип устройства можно
    @nuxtjs/device
    Ответ написан
    Комментировать
  • Как в activeField yii2 с имени инпута убрать formName?

    myks92
    @myks92 Куратор тега Yii
    Нашёл решение — пометь вопрос ответом!
    А зачем вам такое? Это сделано для того, чтобы у вас можно было сделать несколько форм разных сущностей и они без проблем сохранялись. В формах есть такой метод ->formName() переопределите его и возвращайте своё название или пустоту
    Ответ написан
    3 комментария
  • Выигрывает ли nodejs в производительности php на примере обычного сайта?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    В общем случае все зависит от того как написать, можно и на ноде понаписать таких тормозов, что хорошо оптимизированный php, особенно 7, будет просто летать на фоне этого.
    Ну и в большинстве серверных приложений основная нагрузка приходится на БД, а значит и скорость в большей части будет зависеть от нее.
    Но за счет асинхронной работы нода однозначно выиграет у php по потребляемым ресурсам, что в конечном итоге так же может сказаться на производительности.
    Ответ написан
    8 комментариев
  • Как в pjax yii2 отложить вставку нового контента?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    У виджета Pjax для yii2 есть куча настроек, в том числе ReplaceState. Так что отменяете замену контента и в js сами пишите свою логику по задержке или еще как-то, цепляясь при этом за события плагина, например pjax:complete или pjax:start и pjax:end.
    Ответ написан
    5 комментариев
  • Как асинхронно импортировать компонент VUE?

    0xD34F
    @0xD34F Куратор тега Vue.js
    в документации сказано что его нужно импортировать в обьект:
    import { VueEditor } from 'vue2-editor'

    Ну тогда попробуйте этот самый VueEditor при импорте и отдать:

    Vue.component('vue-editor', () => import('vue2-editor').then(c => c.VueEditor));
    Ответ написан
    Комментировать
  • Обьясните логику работы auth на примере nuxt auth?

    1. Запрос /api/login/ ожидает в ответ токен пользователя. Как из ответа выбрать токен - указывается в настроках auth. Т.е. сервер получает логин и пароль, проверяет. Если они верны - выбирает из базы токен этого пользователя и возвращает его.
    2. После получения nuxt'ом токена он сохраняется в localStorage и, вроде, дублируется в кукис
    3. Этот токен потом надо при каждом запросе добавлять в заголовок и проверять на сервере
    4. /api/user/ запрашивается после токена и в ответ надо дать профиль пользователя
    5. Если профиль получен, он сохраняется в store и для пользователя устанавливается переменная loggedIn на true
    6. Всё, пользователь залогинен
    Ответ написан
    1 комментарий
  • Почему в nuxt axios у всех запросов метод OPTIONS?

    Fragster
    @Fragster
    помогло? отметь решением!
    CORS, там на странице есть картинка. Это делает браузер совершенно самостоятельно, ни nuxt, ни axios не причем.

    Но если я на прямую использую axios, то все правильно работает:
    import axios from 'axios'
    axios.get('http://some-url')

    Этот доп. запрос идет только для post запросов, get без него работают.
    Ответ написан
    1 комментарий
  • Какой смысл такой конструкции isset($arr[$name]) || array_key_exists($name, $arr)?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Ответ написан
    Комментировать
  • Хранить ли изображения в Git?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Смотря почему вы задались этим вопросом.
    Проблема бинарников в гите, в том что их оттуда уже не выпилишь и со временем репа становится монструазной.
    Если хочется хранить в гите бинарники то создайте отдельную репу и прикрутите сабмодулем.
    Ответ написан
    Комментировать
  • Как правильно реализовать структуру бд для многопользовательской платформы?

    Melkij
    @Melkij
    PostgreSQL DBA
    У конструкторов типичный workload - около нуля на большинство площадок и небольшой процент активных. Заворачивать индивидуально каждого в свою БД - сильно утомительно в поддержке. Дожили до 1000 созданных сайтов (что не так уж много если не сказать "вообще крохи") - у вас 1000 баз, что уже весьма дофига. Выкатить в прод новую версию приложения - уже приключение.

    Если вы хотите SaaS - т.е. у конечных пользователей прямого доступа в БД нет никакого - то в поддержке сильно проще будет классическая схема шардирования. К тому же у вас данные разных клиентов заведомо по предметной области никак не пересекаются.
    - в таблицах специфичных для клиентов вводится site_id и входит в уникальные ключи и прочее счастье ограничений целостности (для postgresql можете дополнительно прикрутить row level security и база будет дополнительно приглядывать)
    - отдельно размещается ваш биллинг и управление пользователями, где помимо прочего пишете таблицу соответствия, какой site_id расположен на каком физическом хосте и в какой базе данных (плюс список ro-реплик)
    - закешировать соответствие сайта базе можно в каком-нибудь redis и ходить с одного единого пула серверов приложений что сильно проще по масштабированию приложения (если сервер приложения рассматривать как stateless, что опять же сильно проще в поддержке).

    В итоге схема позволяет работает с осмысленным числом крупных баз (начиная с одной и вводя новые по необходимости), неактивные сайты мигрировать в архивные базы, горячие от дорогих клиентов - выделять хоть даже в отдельную инфраструктуру. Кстати, фокус с отделением vip-клиента в отдельную инфраструктуру позволяет дать этому клиенту и прямой доступ в базу при необходимости и возможность пилить кастомный функционал именно для него.
    Ответ написан