Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 April 24

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Егор Хильченко
ребят, кто-то использовал nestjs на проектах?
если да, то поделитесь опытом разработки
выглядит как что-то серьезное и со своей архитектурой
Ну оно на первый взгляд энтерпрайзно выглядит, но когда заходишь почитать код реального проекта, то без нормальной иде-хи, которая по клику будет тебя перебрасывать на исходники модулей и всяких богомерзких декораторов, то понять что там происходит сложно.

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

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

ЕХ

Егор Хильченко... in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Ну оно на первый взгляд энтерпрайзно выглядит, но когда заходишь почитать код реального проекта, то без нормальной иде-хи, которая по клику будет тебя перебрасывать на исходники модулей и всяких богомерзких декораторов, то понять что там происходит сложно.

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

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

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
@OleksiyFiks уже вплотную подошел к переделке таймаутов, очередь на семафорах получила таймауты и предельную длину: https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/master/lib/semaphore.js завтра займусь сокетами
источник

NK

ID:0 in NodeUA - JavaScript and Node.js in Ukraine
Первый релиз Node.js Starter Kit выйдет 28 апреля, уже доделано много критических вещей, в том числе появились таймауты и предельная длина в очередях, много покрыто тестами. Что для вас важнее?

https://github.com/HowProgrammingWorks/NodejsStarterKit
Окончательные результаты
11%
Безопасность
13%
Производительность
12%
Надежнось
10%
Масштабируемость
2%
Малый размер
15%
Понятность кода
3%
Комплексность
9%
Расширяемость
12%
Удобство разработки
13%
Документация
Проголосовало: 1934
источник
2020 April 25

OF

Oleksiy Fiks in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
@OleksiyFiks уже вплотную подошел к переделке таймаутов, очередь на семафорах получила таймауты и предельную длину: https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/master/lib/semaphore.js завтра займусь сокетами
Круто. Еще один момент. Не хватает semaphore.leave();
https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/master/lib/server.js#L82
источник

OF

Oleksiy Fiks in NodeUA - JavaScript and Node.js in Ukraine
https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/master/lib/server.js#L119

И это мб тоже лучше в try/catch, оно может завалится. Если кто-то будет делать публичное апи и ему будет приходить не JSON, то можно залочить семафор
источник

R

Roman in NodeUA - JavaScript and Node.js in Ukraine
Переслано от rvv880
Querying the dataset, how should the database be configured to search for specific fields
quickly?
○ Title
○ Author name
○ Publication date
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Oleksiy Fiks
https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/master/lib/server.js#L119

И это мб тоже лучше в try/catch, оно может завалится. Если кто-то будет делать публичное апи и ему будет приходить не JSON, то можно залочить семафор
О, спасибо! Сейчас как раз с таймаутами закончу и обработку ошибок буду исправлять, сначала логически, а потом навалю туда autocannon-ом, нормальных пакетов вперемешку с битыми и посмотрю утечки.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
@OleksiyFiks Все готово
источник

KZ

Kostya Zgara in NodeUA - JavaScript and Node.js in Ukraine
Всем привет! @tshemsedinov такой вопрос по стартер киту. Если нам понадобиться добавить еще один сервер, каким образом можно будет решить то, что клиенты хранятся в памяти ? https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/4256d7127e95946d2bb369da7395f7e8a2ffc9c6/lib/server.js#L24

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

P.S. Было предположение, что это можно закинуть в редис и искать соединения там, но не совсем понимаю как можно восстановить объекты req и res для класса Client? Я так понял это же не реально? Тогда это нужно делать где-то внешне, например, чтобы лоадбалансер как-то умел ходить в редис и понимал куда перенаправить запрос по его индентификатору.  Или единственный вариант это все таки не серверный лоадбалансер, а клиентский? В общем выложил все свои мысли и предположения, но пока понятие не имею, что из этого реально сделать, а что нет)
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Kostya Zgara
Всем привет! @tshemsedinov такой вопрос по стартер киту. Если нам понадобиться добавить еще один сервер, каким образом можно будет решить то, что клиенты хранятся в памяти ? https://github.com/HowProgrammingWorks/NodejsStarterKit/blob/4256d7127e95946d2bb369da7395f7e8a2ffc9c6/lib/server.js#L24

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

P.S. Было предположение, что это можно закинуть в редис и искать соединения там, но не совсем понимаю как можно восстановить объекты req и res для класса Client? Я так понял это же не реально? Тогда это нужно делать где-то внешне, например, чтобы лоадбалансер как-то умел ходить в редис и понимал куда перенаправить запрос по его индентификатору.  Или единственный вариант это все таки не серверный лоадбалансер, а клиентский? В общем выложил все свои мысли и предположения, но пока понятие не имею, что из этого реально сделать, а что нет)
Из стартер-кита мы сейчас делаем фреймворк и там этот вопрос будет решен автоматически, кроме того, две большие облачные платформы готовы взять эту технологию для прстроения своих облачных продуктов
источник

KZ

Kostya Zgara in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Из стартер-кита мы сейчас делаем фреймворк и там этот вопрос будет решен автоматически, кроме того, две большие облачные платформы готовы взять эту технологию для прстроения своих облачных продуктов
Хорошие новости! А если не секрет, можете рассказать как вы собираетесь это реализовать? Возможно я смогу взять себе что-то на вооружение)

Хотя бы вкратце)
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Kostya Zgara
Хорошие новости! А если не секрет, можете рассказать как вы собираетесь это реализовать? Возможно я смогу взять себе что-то на вооружение)

Хотя бы вкратце)
Из одного инстанса в другой будет синхронизироваться часть состояния, но не сессии, сессии приклеиваются к инстансам, и пользователь всегда попадает на свой сервер через балансировщик
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Возможны миграции пользователей, но это редкая операция и автоматически, вам ничего не нужно придумывать.
источник

KZ

Kostya Zgara in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Из одного инстанса в другой будет синхронизироваться часть состояния, но не сессии, сессии приклеиваются к инстансам, и пользователь всегда попадает на свой сервер через балансировщик
Спасибо за ответ! Я правильно понял, в скором времени это можно будет увидеть своими глазами как это реализовано в коде?
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Kostya Zgara
Спасибо за ответ! Я правильно понял, в скором времени это можно будет увидеть своими глазами как это реализовано в коде?
Да, все в открытом коде
источник

KZ

Kostya Zgara in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
Да, все в открытом коде
круто! Еще раз спасибо)
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Kostya Zgara
круто! Еще раз спасибо)
источник

ГП

Георгий Погосян... in NodeUA - JavaScript and Node.js in Ukraine
Добрый день. Кто знаком с mongoose, не могли бы объяснить мне почему этот кусок кода возвращает мне массив строк, а не массив объектов из базы
let performs = await Performs.find({'troupe.value._id': staff._id })
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Может это? неправильно обьявлена схема — https://stackoverflow.com/questions/37366826/mongoose-only-returning-id-of-the-document
источник