• В каком временном промежутке нужно искать людей, которым сейчас X лет?

    LoliDeveloper
    @LoliDeveloper
    Линейная алгебра как смысл жизни
    Нижняя граница: (текущая дата - Х - 1). Потому что все кто раньше, им уже 17. (Х+1)
    Верхняя граница: (текущая дата - Х). Потому что всем кто позже, ещё 15. (Х-1)
    Ответ написан
    3 комментария
  • Как фильтровать выдачу бд по возрасту, если он хранится в базе данных как дата рождения, а с клиента нужно получать конкретное число/числа?

    Если храните в тексте, то лучше преобразовать в дату и делать обычные запросы

    let dStart = new Date();
    let dEnd = new Date();
    dStart.setFullYear(dStart.getFullYear() - 15);
    dEnd.setFullYear(dEnd.getFullYear() - 13);
    db.user.find({birthday: {$gte: dStart, $lt: dEnd}})
    Ответ написан
    3 комментария
  • Каким образом в Set попали не уникальные значения?

    Есть разница между буквальной строкой "habr", примитивом String("habr") и объектом new String("habr"). В последнем случае typeof === "object" и происходят чудеса:
    const x = new String("habr");
    const y = new String("habr");
    x === y // false

    Соответственно и Set() сможет хранить экземпляры объектов, которые только при приведении к примитиву дадут одинаковые строки, а так суть есть разные инстансы. Может, это ваш случай?
    Ответ написан
    5 комментариев
  • Как уникализировать массив объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Собираем ключ-значение, выдёргиваем значения:

    [...new Map(arr.map(n => [ n.value, n ])).values()]
    
    // или
    
    Object.values(arr.reduce((acc, n) => (acc[n.value] ??= n, acc), {}))

    Фильтрация, запоминаем кого встретили, первый раз пропускаем, остальные нет:

    arr.filter(function(n) {
      return !(this[n.value] = this.hasOwnProperty(n.value));
    }.bind({}))
    
    // или
    
    arr.filter(function({ value }) {
      return !this.set(value, this.has(value)).get(value);
    }, new Map)
    
    // или
    
    arr.filter(((picked, { value: n }) => !picked.has(n) && picked.add(n)).bind(null, new Set))

    Фильтрация, ищем элемент похожий на текущий, его же и нашли - окей:

    arr.filter((n, i, a) => n === a.find(m => m.value === n.value))
    
    // или
    
    arr.filter((n, i, a) => i === a.findIndex(m => m.value === n.value))

    Ну и чего-нибудь странного ещё добавим:

    Array.from(
      new Set(arr.map(n => n.value)),
      n => arr.find(m => m.value === n)
    )
    
    // или
    
    arr
      .slice()
      .sort((a, b) => a.value.localeCompare(b.value))
      .filter((n, i, a) => n.value !== a[i - 1]?.value)
    Ответ написан
    1 комментарий
  • В чём прикол модулей NestJS?

    @dimuska139
    Backend developer
    Этот декоратор по сути описывает то, от каких модулей зависит текущий модуль, какие в нём контроллеры и сервисы есть - то есть, грубо говоря, описание модуля что ли, его конфигурация. А сам по себе модуль - это совокупность какой-либо логики (сервисов, контроллеров), объединённых по смыслу (находящиеся в одной папке). Что что-то вроде приложений в Django внутри проекта, если имели дело с этим. Это нужно, чтобы проект в кашу не превращался. То есть в вашем случае users и products - это два разных модуля.
    Ответ написан
    Комментировать
  • Индексируются ли NodeJS + Express + HBS приложения?

    Запроси страницу при помощи curl, если получишь готовую страницу - никаких проблем с индексацией.
    Ответ написан
    Комментировать
  • React, nodejs, jwt - как сделать аутентификацию и авторизацию с refresh token?

    Делаешь запрос, в middleware проверяешь токен. Если срок истек выбрасываешь ошибку.
    На клиенте при этой ошибке, делаешь отправку рефреш токен на отдельный роут.
    На нем в middleware делаешь проверку рефреш токена. Если рефреш действитейный, отправляешь
    клиенту новую пару аксесс и рефреш токенов. Если нет, то ошибку доступа.
    Ответ написан
    Комментировать
  • Как хранить пароль от базы данных?

    DevMan
    @DevMan
    стоит или нет в первую очередь зависит от требований к сохранности и критичности потери.
    не хотите/можете хранить в конфиге? не вопрос:
    есть переменные окружения;
    есть системное хранилище паролей практически в любой системе;
    есть специализированные хранилища типа vault;
    Ответ написан
    Комментировать
  • Как защитить свой софт авторскими правами?

    vabka
    @vabka
    Токсичный шарпист
    или моя Apache лицензия и является этим документом?

    Да, там написано, что именно вы являетесь владельцем всех прав на ПО.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    Ответ написан
    Комментировать
  • Как защитить свой софт авторскими правами?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Пихайте кто вам мешает.
    Фишка лицензий не в том что вы запрещаете воровать (когда это кого то остановило)
    Вы переводите ваших нормальных клиентов в правовое поле. Где они могут использовать ваш продукт легитимно.
    Ответ написан
    3 комментария
  • Как работает просчёт траектории в играх типа Angry Birds?

    @Mercury13
    Программист на «си с крестами» и не только
    От массы тела зависит взаимодействие с другой массой.
    От силы броска и массы тела — начальная скорость v.

    Чаще всего действительно не доводят до аналитического решения, а каждый кадр происходит шаг численного решения дифференциального уравнения:
    (vx, vy)′ = (0, −g) — ну или сопротивление воздуха добавьте
    (x, y)’ = (vx, vy)

    Гуглите «методы Рунге—Кутты», нам хватит метода второго порядка.
    Ответ написан
    Комментировать
  • Как работает просчёт траектории в играх типа Angry Birds?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    то компьютеру игрока прийдётся каждый кадр решать квадратное уравнение.

    И что? Это не особо то и тяжелые вычисления. Тем более для кор-механики.
    Ответ написан
    Комментировать
  • БД для хранения сообщений чата, какую выбрать?

    @InoMono
    Вполне себе любая развитая современная РСУБД годится для этой задачи.
    MySQL, PostgreSQL...

    А по мере роста нагрузки - тут не выбором СУБД нужно заморачиваться, а MQ-сервер ставить. Он гораздо легче сравиться с бешенными нагрузками.

    Как вариант - Queue на базе Tarantool, например. Я даже не знаю что вы там должны такое сделать, чтобы заткнуть его производительность. При условии того, что на сервере достаточно много оперативной памяти.

    Из самого критично подозрительного - полнотекстовый поиск.
    Впрочем, полагаю, что полнотекстового поиска средствами MySQL или PostgreSQL вплоне хватит.

    Если уж делать прям таки серьезный чат типа Slack, то для полнотекстового поиска я бы вообще отдельную специализированную БД держал бы. Например, SphinxSearch.

    Но, для начала, возможностей PostgreSQL или MySQL будет вполне достаточно.

    Что до Mongo... Если вам не нужна репликация без консистентности. Зато быстрая...
    Так вот если вам не нужна такая репликация, то Монга вам не нужна.

    РСУБД будут существенно быстрее.

    Вот ежели вы планируете заводить ваш чат в кластер, когда одного сервера вам не хватит, то тут да, тут РСУБД не лучший выбор. Тут бы я рекомендовал как раз Монгу.
    Но опять таки кластер серверов для чата вы без MQ не сделайте.

    Вывод:

    Начните с обычной РСУБД.
    Как начнутся затыки - рассмотрите MQ
    Как начнется рост до масштаба планеты - рассматрите Монгу.

    Вся система работает с бд MySQL - InnoDB, сообщения пишутся в бд при каждой отправке (INSERT), пока сервис еще не запущен, сообщений мало (только мои тестовые) все работает шустро, но вот когда запущу и количество сообщений перевалит за несколько миллионов, что будет тогда с моей бд? Начнутся жесткие тормоза при select и insert?


    Вам никто не мешает это проверить.
    Сгенерируйте миллион случайных сообщений.

    При грамотном использовании индексов - ровным счетом никаких проблем ни на миллионах ни на миллиардах записей.
    Ответ написан
    15 комментариев
  • Почему основное тригонометрическое тождество работает всегда?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    > а почему тут работает ОТТ, если оно доказывается с помощью теоремы Пифагора?

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

    ОТТ применимо всегда! Для любых аргументов. Но, возможно вас именно это и запутало, после применения ОТТ и взятия корня, по идее, у вас получится +-sqrt(...). Потому что x^2=9 => x=3 или -3. Два варианта извлечения корня, 2 варианта для синуса.

    Но, поскольку вы знаете, что угол в треугольнике не может превышать 180 градусов, вы знаете, что синус этого угла всегда неотрицательный. Поэтому -sqrt() можно отбросить как лишнее значение и получить вашу формулу. В формальном доказательстве эти рассуждения надо учитывать.
    Ответ написан
    Комментировать
  • Какие есть NodeJS фреймворки, которые подойдут для написания игрового сервера?

    @acwartz
    Тут должна быть ваша реклама.
    Фреймворк и не нужен.
    Сервер отдает данные, получает, обрабатывает, выполняет функции матч-мейкинга и т.д. REST-сервиса тут за глаза.

    Если исходить из того что метод передачи данных на сервер Вы сами пишите, то и безопасность будет такая какую сами напишите. Никакой фреймворк это не автоматизирует из коробки. Если это не стандартные инъекции в базу то баги будут искать используя то что вы сами используете. Тоже самое с методами получения данных, как напишите так и будет, возможно где-то дадите лишнего если будете не внимательны.
    Ответ написан
    Комментировать
  • Как разделить nodejs приложение на компоненты?

    Kozack
    @Kozack
    Thinking about a11y
    Комментировать
  • Что можно написать на Node.js?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js

    Часто применяется для:

    1. Локальные приложения и утилиты командной строки
    • Сборщики и трансляторы
    • Пакетная обработка и сценарии отложенной обработки
    • Скрипты, CLI (интерфейсы командной строки)
    • Генерация документации, отложенное формирование отчетов
    • Сценарии тестирования для других систем

    2. Серверы
    • Серверы веб-приложений и SPA
    • Серверы и API для мобильных приложений
    • Любые другие веб-API (RPC, JSON, REST)
    • Серверы сообщений и трансляция событий (чаты, игры, интерактив)
    • Заплаты на уже готовые системы, написанные на других языках, для реализации вебсокетов, SSE, лонг-пулинга и т.д., т.е. для затыкания дыр, для решения проблем в узких местах уже работающих систем.

    3. Клиенты
    • Оконные приложения (nw.js, node-webkit)
    • Кравлеры, парсеры и сбор данных

    4. Железо
    • Программирование микроконтроллеров (arduino, espruino, tessel)
    • Промышленная автоматизация

    Редко применяется (но подходит) для:
    • CMS, публикация контента (просто ниша уже занята и в этой задаче нода не дает чего-то принципиально нового или сверх соблазнительного).
    • Массовая электронная коммерция и торговля (не применяется для массовых движков магазинов, но используется отдельными крупными компаниями для торговых и платежных задач в качестве дополнительного средства к уже имеющемуся ПО, по сути закрывает узкие места).

    И плохо подходит:
    • Вычисления и моделирование, со скоростью математических операций нода и JS, как не типизированный язык, не дают хороших показателей
    • Научные приложения (по тем же причинам)
    Ответ написан
    10 комментариев
  • Как узнать громкость музыки(звука) в Unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Если вы о пульсации - то для этого юнити нафиг не нужон и будет тут выступать только визуализатором.
    По факту - вам нужно получить АХ - амплитудную характеристику. Читаете файл, декодируете - уверен в сишарпе для всего этого уже есть инструменты - и просто получаете массив байт от 0 до 256. Вот вам и "громкость звука".

    P.S. А если нужна не только пульсация, а еще и вот та волна вокруг - то тут скорее всего уже частотная характеристика - быстрое преобразование Фурье и все такое. Опять таки - к юнити отношения не имеет.
    Ответ написан
    Комментировать
  • Существует ли алгоритм выведения неизвестного из формулы?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Ну, вы собираетесь написать систему символьной алгебры с нуля, а это - сложная задача. Лучше просто напишите коннектор к maxima или octave, они умеют это делать.

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

    Для начала, нужно научиться хотя бы хранить уравнение (в виде строки или в виде ОПЗ, или в виде AST, или еще как-то) и делать с ним эквивалентные преобразования.
    Ответ написан
    2 комментария
  • Кайфую от геометрии и физики, есть какие-то ресурсы на подобии описанного в вопросе?

    15432
    @15432
    Системный программист ^_^
    Не уроки, но я надолго залип

    Я.И. Перельман
    • Занимательная физика
    • Занимательная механика
    • Занимательная геометрия
    • Занимательная арифметика
    • Занимательная астрономия
    Ответ написан
    4 комментария