Задать вопрос
  • Как лучше изменить код?

    Примерно вот так:
    const queries = [
        categoryModel.find({}),
        productModel.find({}),
        seasonModel.find({}),
        sizeModel.find({})
    ];
    Promise.all(queries).then(result => {
        console.log(result);
    }).catch(err => {
        throw err;
    });
    Ответ написан
    Комментировать
  • Можно ли журналирование действий пользователя реализовать на front-end?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Нет, не правильно.
    Фронт не должен содержать в себе бизнес-логику.
    Хотя бы по той причине что любой запрос фронта могут заблокировать или видоизменить.
    Ответ написан
    4 комментария
  • Можно ли в Date хранить некорректное время?

    @deadem
    Нельзя.

    Первая проблема этой реализации в том, что во-первых, в минуте может быть не 60000 миллисекунд.
    https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BA%D...

    Вторая в том, что мы прибавляем к UTC (new Date) время в часах (3600000), а потом получаем время для текущей (toLocaleString) временной зоны, а не для той, для которой мы считаем время. Если у человека, который запускает этот код в этот диапазон попадёт переход на зимнее-летнее время, то результат она выдаст неправильный, так как Date сконвертирует даты для текущей локали, а не для той, смещение для которой передали.

    И более того - нельзя вообще указывать смещение относительно UTC в часах именно из-за зимнего-летнего времени, обязательно нужно знать страну и город. Переходы на зимнее-летнее время - это вообще дичь какая-то, для каждого города могут быть свои собственные правила перевода часов, которые, к тому же, периодически меняются. Поэтому в операционных системах таскают с собой огромные справочники для правильного вычисления локального времени.

    Вот, для примера, что в одной только России творилось со временем за последние 100 лет: https://www.worldtimezone.com/dst_news/dst_news_ru...

    Предложенная функция почти всегда она будет возвращать правильный результат, но иногда будет ошибаться. Поэтому зависит от целей использования. Для финансовой документации её использовать нельзя. А для вывода текущего времени на сайте - почему бы и нет.
    Ответ написан
    Комментировать
  • Каким способом вы объединяете Date и Time для создания moment()?

    AxisPod
    @AxisPod
    Средствами HTML дата всё же не получается, а средствами JS. Если речь про текущую, то велосипед изобретать не надо.
    momen()
    вернёт уже сразу объект с датой и временем.
    Ответ написан
    2 комментария
  • Как в JS работать с альтернативными часовыми поясами?

    Veliky
    @Veliky
    Full Stack Web Dev
    Возможно для вас будет лучше использовать Moment Timezone.
    Ответ написан
    Комментировать
  • Как записать время и дату в другом часовом поясе?

    Stalker_RED
    @Stalker_RED
    После ввода конвертировать в UTC и хранить в UTC. Переводить только перед отображением, на сервере или на клиенте - как вам удобнее. Если юзеры из разных часовых поясов, то удобнее на клиенте, обычно.

    Попроще: https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Покруче: https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Ну и есть куча сторонних библиотек типа moment.js
    Ответ написан
    Комментировать
  • Беговая дорожка для работы за столом?

    sim3x
    @sim3x
    https://www.google.com.ua/search?q=%D0%B1%D0%B5%D0...

    PS
    от себя посоветую сначала привыкнуть к просто к работе стоя хотя б в режиме 10 минут в час

    дешевая надежная функциональная
    выберите два пункта - так будет проще
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    Заказчик хочет чтобы разработчик сделал сложное приложение.

    Причина 1: обычно заказчик хочет, но не знает чего конкретно. Фишка в том, что разработка приложения, у которого ещё нет аналога - это... не только разработка приложения. Это ещё и выяснение того, что действительно нужно, начиная с пожеланий по UX, и заканчивая оптимизацией бизнес-процессов во всей компании (это когда заказчик внезапно говорит "слушайте, и правда, на кой чёрт мы печатаем эту накладную каждый раз").

    КПД получается крайне низок.

    Причина 2: вы не учитываете причину 1 при расчёте КПД и думаете, что проделали мало работы. Да, приложение ещё не готово или делается очень долго, но это не потому что вы мало работаете, а потому что работы намного больше, чем казалось.

    но идёт на удаление или переделку из-за того, что что-то не так.

    Причина/особенность 3: иногда это неизбежно: бизнес меняется, потребности - тоже.
    Иногда этого можно избежать, не заводя требования слишком "далеко" - очевидно, нет смысла реализовывать то, что УЖЕ СЕЙЧАС кажется неподходящим под требования, НО это далеко не всегда вовремя замечают. Над проектом работает много людей, у всех немного разные представления о задаче, или ещё хуже: не все и далеко не всегда говорят о проблемах с системой, которые уже виднеются "на горизонте", говоря что "в ТЗ всё написано, а мы делаем по ТЗ". Можете погуглить статьи о стоимости ошибок на разных этапах разработки.

    Причина 4: заказчик, разработчики или и те и другие не умеют останавливаться и выбирать необходимый и достаточный функционал для первого или очередного релиза. Я в последнее время убеждаюсь, что это целая наука - вовремя остановиться и не расширять список "супернужных" фич, из которых треть окажется почти невостребованными. Особенно часто это бывает, когда бизнес уже работает как-нибудь (например, на экселевских табличках или Access-овских базах), а теперь пришла пора автоматизации, но релиз постоянно откладывается, потому что "и это хочется, и то бы сразу сделать". Иными словами, иногда нужно решиться на гарантированные переделки в будущем ради релиза сейчас. Оценка возможности и стоимости таких "переделок" - т.е. подождать и переделать сейчас или зарелизиться и переделать потом (соответственно, с удорожанием "переделок") - и есть та самая наука. Разработчик обычно видит только архитектуру, и раньше понимает её недостатки/ограничения, ему сложно решиться на релиз того, что не будет идеально решать поставленную задачу.
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    AlexanderYudakov
    @AlexanderYudakov
    C#, 1С, Android, TypeScript
    Карл Вигерс "Разработка требований к программному обеспечению"
    скриншот первой страницы первой главы — про вас
    5a4e46fe7d045170343260.png
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    titov_andrei
    @titov_andrei
    All my life I learn - and die a fool!
    Ремонт ЗАКОНЧИТЬ нельзя — его можно только ПРЕКРАТИТЬ.
    https://www.inpearls.ru/
    - © Михаил Жванецкий
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    search
    @search
    мама говорит что я особенный
    На самом деле, рефакторинг - это неотъемлемый элемент процесса разработки. Без него никак. На поздних этапах обязательно всплывают неучтенные подробности. К тому же сам разработчик развивается и стремится улучшить то, что было написано несколькими месяцами ранее.

    Но если в рамках рефакторинга программист коммитет больше 20 файлов за раз, то есть вариант что он не видит всей картины, поэтому пилит "супергибкую архитектуру". В этом случае, можно сесть вместе с разработчиком и составить майндмеп всех элементов будущей системы и связей между ними. Это будет полезно как для разработчика, так и для менеджера проекта.
    Ответ написан
    5 комментариев
  • В чём причина постоянного переделывания кода?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Причин много:
    1. Бизнесу всегда нужно срочно. Из-за этого менеджер/заказчик бьет по рукам и говорит "не до архитектуры и главное быстрее", по итогу — пилятся костыли, которые блинным комом накатываются и в определенный момент нужно переписывать куски структуры, чтобы просто иметь техвозможность работать дальше
    2. Если было жирно по ресурсами и времени изначально и такая проблема — не правильная архитектура, экономия на тестах и прочее
    3. Плохая договоренность и плохое понимание задачи с каждой стороны, у кого-то завышенные/заниженные ожидания (один сказал сделай мне приложение, второй сказал, что сделает — вина обоих в таком случае)
    4. Не всегда это плохо. Сначала быстро запустили (проверили гипотезу, получили первые деньги, инвестиции и прочее), потом переделывают планово (просто этот план может не проговорен, отсюда плохие ожидания и чувство низкого КПД, а он может высокий как раз).

    Всегда, всегда ошибка менеджмента — где-то договорились, где-то не оговорили что-то, где-то не учли, где-то нажали, где-то пренебрегли, не выяснили ожидания, где-то сэкономили на выборе разраба, и прочее,
    даже если взяли не умного разраба — это тоже вина менеджмента

    UPD: Urukhayy речь не об этом проекте?
    Может ли проект быть собран с низким качеством кода, и пользоваться большим спросом?
    Ответ написан
    Комментировать
  • В чём причина постоянного переделывания кода?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В неумении разработчика проектировать гибкую архитектуру приложения и писать расширяемый код.
    Ответ написан
    2 комментария
  • Объясните, пожалуйста, строку кода?

    rockon404
    @rockon404
    Frontend Developer
    Самовызывающаяся функция.
    Все варианты записи:
    strict = (function() {return !this;}());
    
    strict = (function() {return !this;})();
    
    strict = function() {return !this;}();


    Пара скобок в конце это вызов этой функции. Можно переписать так:
    function func() {
      return !this;
    }
    
    var strict = func();
    Ответ написан
    3 комментария
  • Как спланировать БД (чат)?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Итак, что вам нужно. Предполагается, что у вас есть табицы user и group.

    Таблица со списом чатов

    chat
    	id - идентификатор чата
    	name - название чата (тема обсуждения)
    	user_id - идентификатор  пользователя, который создал чат (необязательно)


    Список участников чата
    roster
    	chat_id - идентификатор чата
    	user_id - идентификатор пользователя
    	group_id - ид группы, если пользователь пишет от имени группы или NULL, если от пользователя (можно даже держать 2 записи, где group_id = null и где нет)


    Список сообщений
    messages
    	id - идентификатор сообщения
    	chat_id - идентификатор чата
    	user_id - ид пользователя
    	group_id - ид группы, если сообщение отправлено от имени группы или NULL, если от пользователя
    	text - текст сообщения


    Статусы сообщений
    message_status
    	message_id - идентификатор сообщения
    	user_id - идентификатор пользователя
    	read - прочтено или нет
    	notified - отправлено уведомление о сообщении или нет


    Итак, как это работает.
    Круг, в котором общаются пользователи называется чатом (chat).
    Кто находится в чате определяется через ростер (roster). Ростер может не быть показан в интерфейсе.
    Кто кого приглашает в чат определяется через бизнес-логику приложения.

    В данной схеме сценарий "Пользователь2 пишет в Группа1" выглядит так.
    Создается чат, далее в ростер добавляются П2 и Г1. Далее просто создается сообщение от имени П2. Через бизнес-логику находится владелец Г1 и ему отправляется уведомление.
    Ответ написан
    Комментировать
  • В каком формате хранить время?

    miraage
    @miraage
    Старый прогер
    Зависит от требований. Я обычно храню в UTC datetime.

    Бывают задачи, когда еще дополнительно надо сохранять либо оффсет часового пояса, либо дополнительно local datetime.
    Например, при отправке писем, оповещений, которые должны плясать от локального времени пользователя (каждую первую субботу месяца в 10:00 утра присылать новостную рассылку).
    Или сбор статистики (например, uber) - во сколько чаще всего заказывают такси. По UTC данные будут неактуальны, поэтому локальное время надо бы запомнить.
    Ответ написан
    Комментировать
  • Почему после закрытия браузера пропадает авторизация?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Время жизни куков проверьте, может они "протухают" после закрытия браузера?
    Ответ написан
    1 комментарий