• Как в ts распределить поля объека в другой объект?

    Robur
    @Robur
    Знаю больше чем это необходимо
    IComponentsList у вас по описанию может содержать любое свойство.
    и вы его пушите в IComponents, в котором хотите "строгое" описание. Это несовпадение типов и потенциальный баг от которого вас компилятор честно защищает -иначе у вас в рантайме в components в Main может быть совсем не то что написано в типах.
    самым правильным будет добавить индексную сигнатуру в IComponents.

    Но если вы уверены в себе и хотите заставить компилятор вам поверить, можно сделать следующее:
    this.components[componentKey as keyof IComponents].push(entity.components[componentKey]);

    или
    (this.components as any)[componentKey].push(entity.components[componentKey]);

    или еще каким то образом подавить компилятор в этом месте.
    Ответ написан
    2 комментария
  • Есть ли какое-то дополнение в виде форума для Laravel 5.2?

    Ты имеешь ввиду пакет? Если да, то плохо искал
    Laravel-forum maintained by riari
    Вообще ставил его себе, при знание фреймворка, можно хорошо допилить, да и под версию переделать не сложно

    UPD: Вот еще, на базе фреймворка flarum.org
    Ответ написан
    4 комментария
  • Как правильно создать архитектуру БД для нескольких сервисов?

    Если бы в тегах у вас не стоял MySQL, я бы сказал - "используйте схемы". В нормальных СУБД "база данных" - это единица администрирования, а "схема" - это пространство имён, т.е. как раз то, что вам нужно для различных сервисов и подсистем.

    Судя по тому, что вы описали, сервисов у вас несколько, но предметная область одна и та же, верно? т.е. эти сервисы всё-таки связаны, и возможно (даже вероятно) вам пригодятся связи между таблицами разных сервисов. И тут я бы тоже вам сказал "используйте схемы".

    В разных БД желательно хранить абсолютно несвязанные данные, такие, что можно взять одну из БД и спокойно перекинуть на другой сервер, или вообще на другую СУБД. Например, в одной БД у вас CRM-система, а в другой хранит данные ваш почтовый сервер. А в третьей данные для промо-сайта.

    Но т.к. вы указали MySQL, я говорю вам "используйте префикс к таблицам".

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

    @Dementor
    программист, архитектор, аналитик
    Перед записью добавьте строчку:
    НовыйДокКоличества.УстановитьНовыйНомер();
    Ответ написан
    6 комментариев
  • Как сохранять ответы во время прохождения тестирования?

    Denormalization
    @Denormalization
    Можно попробовать что-то вроде:

    quiz_sessions
    --------------------
    id | user_id | finished(bool) | created_at | finished_at


    Где:
    user_id: ID юзера который проходит тест
    finished: закончил ли юзер прохождение
    created_at: время создания сессии (начала тестирования)
    finished_at: время завершения


    Теперь, когда юзер начинает тест, создаем в БД новую запись quiz_sessions.
    Если в БД уже есть НЕ законченная сессия, можно предложить юзеру продолжить прошлый тест с момента где он остановился.
    Когда юзер заканчивает, обновляем запись в БД, и выставляем finished & finished_at.

    Далее можно сделать скрикпт который по крону будет пробегаться по quiz_sessions и удалять записи у которых created_at > какого-то значения + можно удалять все ответы у юзера.

    UPD:
    В чем приемущество такого подхода:
    Если мы не удаляем сессии которые не законченны, то мы можем делать выборку, и видеть сколько человек и кто конкретно начинал делать тест и не закончил. Мы можем отослать им уведомление или наказать.

    Можно делать выборку и показывать статистику топого времени прохождения теста + среднее время + минимальное.
    Можно ловить "читеров", если такие будут, которые будут проходить тест за 1 секунду.
    Ответ написан
    3 комментария
  • Как хранить ответы пользователей и выводить вопросы в системе тестирования?

    Denormalization
    @Denormalization
    3 таблицы:

    questions:
    id | question
    
    answers:
    id | question_id | answer
    
    answer_user
    answer_id | user_id (или question_id | answer_id | user_id)


    Когда юзер отвечает, записывает ответ в answer_user.
    Обычная many to many связь.

    > как выводить ответы на которые пользователь еще не ответил
    Достаем все ответы по question_id из answers + join на таблицу anwser_user
    Ответ написан
    4 комментария
  • Под какие браузеры верстать?

    @President42
    Последние две стабильные версии Chrome, Firefox, Safari, IE, Opera
    Ответ написан
    Комментировать
  • Под какие браузеры верстать?

    @Royorso
    Начиная от Internet Explorer 10-ой версии - этого более чем достаточно
    Ответ написан
    1 комментарий