Andrew
допустим коннект к бд имеем один
Andrew
на всех
Andrew
через него для каждого лезем
Andrew
т.е. шлем в базу 100 запросов
Andrew
ответы прилетают в переменные
Andrew
название переменной по сути будет единое для всех
Andrew
получается действительно только замыкания спасут отца русской демократии
Ohar
Давай я расскажу как я понимаю, а товарищи меня поправят, если я где фигню сморожу 1) Приложение запускается и висит в памяти, загрузив все модули. 2) Для каждого клиента запускаются нужные ему обработчики и они всю его фигню хранят в замыканиях, то есть в памяти. Обработчики имеют доступ и к переменных верхних скоупов. 3) Клиент отваливается — сборщик мусора всё это дело прибирает. Количество обрабатываемых клиентов упирается только в память для хранения их переменных.
Ohar
А приложение на всех одно
Ohar
ответы прилетают в переменные
Ответы прилетают в обработчик и падают ему в замыкание. Соседний вызов этого обработчика для другого клиента этого ответа никогда не увидит.
Ohar
Ну, если его специально не прокинуть в общий скоуп
Kons
Нужно не забывать о том, что обработка в node происходит в один поток. Это означает, что никакого «соседнего» вызова нет. Есть более ранний и более поздний вызовы.
Evgeny
Соседний вызов === соседнее замыкание
Ohar
Вернее даже, соседний асинхронный отложенный вызов, который ещё ждёт своего выполнения
Kons
Допустим есть обработчик запроса (псевдокод, похожий на express.js): app.get('/example', (req, res, next) => { console.log('Request handler started'); dbRequest(req.query, (err, data) => { console.log('DB request ended'); }); console.log('Request handler ended'); }); К моменту, когда начнет выполнятся обработчик для второго вопроса, выполнение этой функции для первого запроса уже будет завершено.
Ohar
Здесь нужен стикер со сборщиком мусора
Kons
Смысла держать замыкание из обработчика в результат выборки из БД нет, т.к. ответ на клиента все равно надо отправлять из колбека запроса к БД.
Kons
Сможете привести пример стейта, который нужно было бы из колбека dbRequest передать в обработчик?
Kons
Вдруг я что-то упускаю из виду
Kons
* то, что req, res, next в замыкании, понятно. Я имею ввиду какие-то дополнительные переменные.
Artur
Ребят, кому еще прилетело про https://medium.com/@deian/63e6e0a566a7#.8dlz2whq5?
Ohar
Только на неделе думал, насколько сложно закинуть зловред в NPM
Vlad
несложно было всегда
Vlad
есть же пост/пре-инстал хуки
Дима
Можно скомпилировать ещё что нибудь
Vlad
и запустить на тысячах чужих CI
Дима
Я представляю, как бы бомбануло, если бы left-pad не выпилился, а делал чтонибудь эдакое
Ohar
Ребят, кому еще прилетело про https://medium.com/@deian/63e6e0a566a7#.8dlz2whq5?
Общий смысл статьи: пользуйтесь только https
Artur
Про смысл статьи я понял. Вопрос в том, что письмо от этого товарища всем мейнтенерам в репе npm прилетело?
Vlad
Общий смысл статьи: пользуйтесь только https
эм. это не поможет пока не отключишь компиляцию бинарников
Vlad
удалить все пакеты, это так себе идея
Artur
эм. это не поможет пока не отключишь компиляцию бинарников
Как минимум проверять пакеты и фиксировать версии же. В стетье речь идет о возможной подмене источника пакета же, так
Vlad
смотри синдре, сабстек и зкат удалят свои пакеты и чо будет?
Artur
Вот же
Artur
Весело
Artur
Все держится фактически на взаимном доверии и соплях
Vlad
допустим он лочит бинарники os regardless
Vlad
зашринкврапишь на винде
Vlad
на маке не будет работать
Artur
Как вариант еще bundleDependencies, проверяешь сборку в изолированной среде, пакуешь и в бой
Vlad
и с бандл/пир депсами шринкврап тоже плохо работает
Vlad
ахахах
Artur
А потом рыдаем - ну как же так... да
Artur
Короче везде засада
Artur
Не знаю. Рыдают же.
Artur
А это не аналогично первому варианту?)
Gordey
Чуваки! Приходите к нам на митап через 2 дня! https://rambler-co-e-org.timepad.ru/event/419923/
Дима
Напоминает завязку dear javascript
Ohar
Все держится фактически на взаимном доверии и соплях
Ну никто не заставляет пользоваться. Можешь сам всё писать. Хочется защищённости - делай полное ревью всех зависимостей и клади их свой собственный репозиторий и пользуй только оттуда. Просто в большинстве случаев оно не окупается и поэтому так никто не делает.
Ohar
Крупные конторы типа алиэкспресса так и делают
Artur
Ну никто не заставляет пользоваться. Можешь сам всё писать. Хочется защищённости - делай полное ревью всех зависимостей и клади их свой собственный репозиторий и пользуй только оттуда. Просто в большинстве случаев оно не окупается и поэтому так никто не делает.
Ну, я как бы и не ругаюсь и не истерю. Просто давненько этот вопрос не всплывал, а тут письмо прилетело - алярма, мир опасносте. Вот и спросил. А так я ревью зависимостей делаю и если на мой взгляд там много лишнего, я просто пишу свой аналог если по времени это не слишком затратно.
Ohar
Ну вот да
Ohar
Я тоже иногда как открою кодище, а там такая дичь
Ohar
Но в этом случае обычно есть аналог поинтереснее
Artur
Ну вот да или аналоги. Про дичь согласен. Иногда в голове не укладывается, насколько популярная библиотека и насколько ужасный код.
Дима
Но в этом случае обычно есть аналог поинтереснее
Мне наверное не везёт, но как правило, я аналогов не нахожу
Дима
Страх и ненависть в javascript
Ohar
Они не пишут лучше, они просто ставят всё из своего репозитория, куда либы попадают только после ревью
Ohar
Хотя не уверен в обязательности ревью, знаю только что репозитрий у них точно не NPM
Ohar
А чего все так бугуртят с этим лефтпадом?
Ohar
Ну кривенький он, ну и что
Дима
Он нормальный
Дима
Был
Ohar
Да пусть тянет, если это проблем не создаёт
Дима
Воот!))
Ohar
Это твои из головы придумки
Ohar
Проблемы это когда баги лезут или боттлнек на этот паккт попадает
Ohar
А то что ты назвал это преждевременная оптимизация бессмысленная
Ohar
Ну ок, раз ты так говоришь
Ohar
Да пусть увеличивает
Ohar
Ты пойми что нет абсолюта «риск всегда надо уменьшать»
Ohar
Есть оценка «Дешевле уменьшить риск или затратить эти ресурсы на что-то другое, более важное»
Vladimir
> @Oharr Ты пойми что нет абсолюта «риск всегда надо уменьшать» Вот какой какой, а именно такой - есть
Ohar
И выбор тут обычно не в пользу уменьшения риска