Size: a a a

Node.js — русскоговорящее сообщество

2021 February 24

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Про v8 я то все знаю. Но это всего лишь рантайм для джса. Мне не понятно как node js держит большое кол-во соединений, имея ограничененное кол-во ядер
В ноде ио операциями заниматься либъюви
источник

А

Алексей in Node.js — русскоговорящее сообщество
Максим
В ноде ио операциями заниматься либъюви
А каким образом libuv хендлит соединения?
источник

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Про v8 я то все знаю. Но это всего лишь рантайм для джса. Мне не понятно как node js держит большое кол-во соединений, имея ограничененное кол-во ядер
источник

DM

Denis Morozkin in Node.js — русскоговорящее сообщество
Артем Ильченко
Всем привет. Я тут осознал, что не понимаю что произойдёт если у нас в проекте в зависимостях "redux": "^4.0.1", а у пакета в депенденсис "redux": "^4.0.5". Погуглил что-то ничего не нашёл(скорее ввсего как-то вопрос не так задаю). Может у кого есть статья где-то в закладках о том как решаются такие зависимости в yarn или npm, можете поделиться плз?
http://rightblog.ru/3504

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

ЛМ

Леха Маскаль... in Node.js — русскоговорящее сообщество
Максим
Да. Это один из вариантов. Постаринке так сказать.
Ну получается подключаешь шаблонизатор в app.js, настраиваешь , разбираешь по страницам и все?
источник

I

Igor in Node.js — русскоговорящее сообщество
Алексей
А каким образом libuv хендлит соединения?
есть специальные системные вызовы для эффективной работы с большим числом соединений, на разных осях разные, для линукса можно погуглить epoll
источник

М

Максим in Node.js — русскоговорящее сообщество
Леха Маскаль
Ну получается подключаешь шаблонизатор в app.js, настраиваешь , разбираешь по страницам и все?
Погугли nodejs mvc например. Или express with hbs
источник

ЛМ

Леха Маскаль... in Node.js — русскоговорящее сообщество
Максим
Погугли nodejs mvc например. Или express with hbs
Да я смотрел)) спасибо))
А ты написал по старинке, ты имеешь ввиду что сейчас в основном для фронта используют фреймворки?
источник

М

Максим in Node.js — русскоговорящее сообщество
Леха Маскаль
Да я смотрел)) спасибо))
А ты написал по старинке, ты имеешь ввиду что сейчас в основном для фронта используют фреймворки?
По разному бывает.
По старинке потому что раньше так и делали ещё до появления ноды.
«динамический сайт» это древний термин. У меня он ассоциируется с шаблонизаторами.
Молодежно это spa.
источник

А

Алексей in Node.js — русскоговорящее сообщество
Igor
есть специальные системные вызовы для эффективной работы с большим числом соединений, на разных осях разные, для линукса можно погуглить epoll
Мне пока тяжело осознавать материал на низком уровне. Мне скорее хотелось бы пройтись по верхам(более-менее абстрактно).
Например, предполагается, что node.js сервер со всеми своими зависимостями умеет держать 40к соединений одновременно. Мне понятно, как выполняются операции на уровне v8 для каждого из запросов, но не понятно как libuv держит эти 40к соединений в абстракции. Вычитал, что libuv предоставляет thread pool и 4х(вроде) тредов, готовые выполнять i/o операции.
Используются ли эти треды из тредпула libuv для поддержания сетевых соединений, или используется какая-то другая сущность?
Понятно, что мне стоит перелопатить всю доку libuv, но чую будет тяжело понять библиотеку концептуально, если нырять сразу в нее.
источник

ЛМ

Леха Маскаль... in Node.js — русскоговорящее сообщество
Максим
По разному бывает.
По старинке потому что раньше так и делали ещё до появления ноды.
«динамический сайт» это древний термин. У меня он ассоциируется с шаблонизаторами.
Молодежно это spa.
Понял)) спасибо за наводку))
источник

G

Gunaevart in Node.js — русскоговорящее сообщество
Всем привет, народ подскажите что не так дклаю: нужно символ (букву) последнего элемента в масиве сравнить с первой (буквой) из инпута, вод код. Но выдаёт ошибку Uncaught TypeError: Cannot read property 'slice' of undefined
at HTMLInputElement.<anonymous> Хотя вроде всё верно. В чём проблема тут подскажите.

let field = document.getElementById('field');
let message = document.querySelector('#message');

const sity = []
field.addEventListener('keypress', (e) => {

   if(e.key === 'Enter'){

       if(sity.indexOf(field.value) != -1){
           sity.push(field.value)
       }else if(field.value.slice(0, 1) == (sity[sity.length -1].slice(-1)){
           message.innerHTML = Введите город на букву  ${sity[sity.length -1].slice(-1)}
       }
       else{
           message.innerHTML = Такой город уже есть  ${field.value}
       }      
   }
})
источник

I

Igor in Node.js — русскоговорящее сообщество
Алексей
Мне пока тяжело осознавать материал на низком уровне. Мне скорее хотелось бы пройтись по верхам(более-менее абстрактно).
Например, предполагается, что node.js сервер со всеми своими зависимостями умеет держать 40к соединений одновременно. Мне понятно, как выполняются операции на уровне v8 для каждого из запросов, но не понятно как libuv держит эти 40к соединений в абстракции. Вычитал, что libuv предоставляет thread pool и 4х(вроде) тредов, готовые выполнять i/o операции.
Используются ли эти треды из тредпула libuv для поддержания сетевых соединений, или используется какая-то другая сущность?
Понятно, что мне стоит перелопатить всю доку libuv, но чую будет тяжело понять библиотеку концептуально, если нырять сразу в нее.
да хоть в один тред можно опрашивать, там асинхронная работа с подключениями
источник

А

Алексей in Node.js — русскоговорящее сообщество
Igor
да хоть в один тред можно опрашивать, там асинхронная работа с подключениями
А чем обусловлено максимальное кол-во одновременных соединений?
источник

I

Igor in Node.js — русскоговорящее сообщество
Алексей
А чем обусловлено максимальное кол-во одновременных соединений?
память на состояние tcp-подключения расходуется
источник

А

Алексей in Node.js — русскоговорящее сообщество
Igor
память на состояние tcp-подключения расходуется
т.е. для вертикального масштабирования в целях поддержания бОльшего кол-во соединений достаточно лишь увеличить кол-во RAM?
источник

L

Leonid in Node.js — русскоговорящее сообщество
Может кто поделится ссылкой на репозиторий с норм реализацией юнит тестов в ноде?
источник

I

Igor in Node.js — русскоговорящее сообщество
Алексей
т.е. для вертикального масштабирования в целях поддержания бОльшего кол-во соединений достаточно лишь увеличить кол-во RAM?
в целом да, но могу что-то упускать, сам не занимался
источник

А

Алексей in Node.js — русскоговорящее сообщество
Igor
в целом да, но могу что-то упускать, сам не занимался
Понял, спасиб)
источник

A

Adv0cat in Node.js — русскоговорящее сообщество
Gunaevart
Всем привет, народ подскажите что не так дклаю: нужно символ (букву) последнего элемента в масиве сравнить с первой (буквой) из инпута, вод код. Но выдаёт ошибку Uncaught TypeError: Cannot read property 'slice' of undefined
at HTMLInputElement.<anonymous> Хотя вроде всё верно. В чём проблема тут подскажите.

let field = document.getElementById('field');
let message = document.querySelector('#message');

const sity = []
field.addEventListener('keypress', (e) => {

   if(e.key === 'Enter'){

       if(sity.indexOf(field.value) != -1){
           sity.push(field.value)
       }else if(field.value.slice(0, 1) == (sity[sity.length -1].slice(-1)){
           message.innerHTML = Введите город на букву  ${sity[sity.length -1].slice(-1)}
       }
       else{
           message.innerHTML = Такой город уже есть  ${field.value}
       }      
   }
})
смарите, у вас в начале пустой массив… Вы проверяете наличие в пустом массиве своего поля sity.indexOf(field.value) Но, т.к. массив пустой, то indexOf вам отдаст -1, значит вы перейдете на else if, и дальше начинаете проверять sity[sity.length -1], а в пустом массиве это будет sity[0-1], т.е. sity[-1], что ясное дело undefined, теперь понятно, почему у вас ошибка Cannot read property 'slice' of undefined? Потому что вы пытаетесь взять slice у undefined значения 😉
источник