@nodejs_ru

Страница 420 из 2748
Dmitry
11.12.2016
23:16:27
грубо говоря эти скрипты выполняются по порядку

накатывая все изменения на базу исторически

и тогда ты получаешь последнюю версию

без потери данных

Google
Dmitry
11.12.2016
23:17:54
и тогда можно обновляться с любой версии на любую нажал я npm update myapp

и получил в preinstall апдейтики

я пока так планирую

Dreamerinnoise
12.12.2016
07:34:59
ну как вариант, но хотелось бы в более сжатом виде, так сказать для чайников :)
http://stackoverflow.com/questions/25568613/node-js-event-loop Допустим, если для чайников

Aleh
12.12.2016
07:38:18
Вам скорее всего не нужен, но есть такая штука как event sourcing (типа как redux на клиенте). Там достаточно просто удалить все данные, кроме ивентов и рестартануть ивенты

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

В миграцию есть смысл добавлять две команды - up и down. Если потом придётся откатывать

Andrew
12.12.2016
09:10:21
http://stackoverflow.com/questions/25568613/node-js-event-loop Допустим, если для чайников
как евентлуп работает я знаю. меня интересует как многопользовательские стейты разруливаются

eugene
12.12.2016
09:15:47
выносятся в отдельные микросервисы, с возможностью блокировки операции записи

Evgeny
12.12.2016
09:30:29
Я, кажется, понял. Чувак, а ты знаешь как работают замыкания?

KlonD90
12.12.2016
09:30:54
короткие?

Pavel
12.12.2016
09:31:14
да, электрические

Google
Vitaliy
12.12.2016
09:51:52
Andrew
12.12.2016
09:58:33
Можешь ещё раз вопрос сформулировать?
вопрос в следующем - в пыхе когда приходит коннект от браузера, хедеры всякие, сам реквест, будь то гет или пост или что еще, скрипт отрабатывает, отдает результат и завершается, с полной очисткой памяти. поэтому искаропке в пыхе нет и не бывает никакого стейта, каждый раз приходится с клиента куку слать, парсить ее, сессию из файла или еще откуда таскать и прочие ужосы. в ноде все иначе, плюс коннект может не обрываться, в частности для СПАхи с кучей аякса это вообще гут. Плюс пока процесс крутится, он хранит весь стейт. Т.е. вот ты запустил node index.js допустим и доколе скрипт не завершит выполнение всех-всех-всех операций либо не крашнется, стейт сохраняется, а если мы в скрипте запустим веб-сервер, который слушает порт, то все, пока скрипт не крашнется или по CTRL-C Или как еще не отвалится, стейт хранится. При этом на порт лосятся клиенты с разных браузеров, т.е. один и тот же скрипт обслуживает кучу разных запросов. Я нутром чую, что для каждого отдельного коннекта стейт хранится отдельно, иначе это была бы вакханалия. Вопросов два - евент луп единый для всех коннектов или тоже по лупу на каждый коннект? И насколько сильно изолированы стейты, могут ли они сообщаться с ведома скрипта?

Дмитрий
12.12.2016
10:00:05
Я, кажется, понял. Чувак, а ты знаешь как работают замыкания?

Vladimir
12.12.2016
10:00:18
есть общий стейт - это все переменные в скрипте

а есть стейт реквеста - он в обработчике

Andrew
12.12.2016
10:02:41
т.е. я правильно понимаю что на потоке единый стейт на все коннекты?

Vladimir
12.12.2016
10:03:08
например, если ты делаешь скрипт var players = []; app.post(‘/addPlayer’, (req,res)=>{ players.push[req.body.name] }) то в players будет общий стейт

и поток один

Andrew
12.12.2016
10:03:27
т.е. любой коннект в потенциале может получить доступ к этому общему стейту?

Konstantin
12.12.2016
10:03:30
Что такое стейт? Есть переменные и есть их область видимости. Обработчик запроса — функция. Всё, что было в функции, остаётся в функции.

Andrew
12.12.2016
10:03:48
стейт это все переменные запущенного скрипта

вообще все

Pavel
12.12.2016
10:03:51
Он на то и общий какбэ

Andrew
12.12.2016
10:04:00
понял, мерси

хотя одну штуку не догоняю я еще

вот 100 бразуеров ломятся на порт

т.е. 100 коннектов имеем

и для каждого надо сходить в бд

Google
Andrew
12.12.2016
10:05:29
т.к. все асинхронно и евент луп

непойми когда что отработает

допустим коннект к бд имеем один

на всех

через него для каждого лезем

т.е. шлем в базу 100 запросов

ответы прилетают в переменные

название переменной по сути будет единое для всех

получается действительно только замыкания спасут отца русской демократии

Pavel
12.12.2016
10:07:35
Давай я расскажу как я понимаю, а товарищи меня поправят, если я где фигню сморожу 1) Приложение запускается и висит в памяти, загрузив все модули. 2) Для каждого клиента запускаются нужные ему обработчики и они всю его фигню хранят в замыканиях, то есть в памяти. Обработчики имеют доступ и к переменных верхних скоупов. 3) Клиент отваливается — сборщик мусора всё это дело прибирает. Количество обрабатываемых клиентов упирается только в память для хранения их переменных.

А приложение на всех одно

ответы прилетают в переменные
Ответы прилетают в обработчик и падают ему в замыкание. Соседний вызов этого обработчика для другого клиента этого ответа никогда не увидит.

Pavel
12.12.2016
10:09:59
Ну, если его специально не прокинуть в общий скоуп

Konstantin
12.12.2016
10:11:49
Нужно не забывать о том, что обработка в node происходит в один поток. Это означает, что никакого «соседнего» вызова нет. Есть более ранний и более поздний вызовы.

Evgeny
12.12.2016
10:12:19
Соседний вызов === соседнее замыкание

Pavel
12.12.2016
10:13:19
Вернее даже, соседний асинхронный отложенный вызов, который ещё ждёт своего выполнения

Konstantin
12.12.2016
10:15:53
Допустим есть обработчик запроса (псевдокод, похожий на 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'); }); К моменту, когда начнет выполнятся обработчик для второго вопроса, выполнение этой функции для первого запроса уже будет завершено.

Pavel
12.12.2016
10:16:27
Здесь нужен стикер со сборщиком мусора

Google
Konstantin
12.12.2016
10:18:11
Смысла держать замыкание из обработчика в результат выборки из БД нет, т.к. ответ на клиента все равно надо отправлять из колбека запроса к БД.

Сможете привести пример стейта, который нужно было бы из колбека dbRequest передать в обработчик?

Вдруг я что-то упускаю из виду

* то, что req, res, next в замыкании, понятно. Я имею ввиду какие-то дополнительные переменные.

Artur
12.12.2016
10:34:56
Ребят, кому еще прилетело про https://medium.com/@deian/63e6e0a566a7#.8dlz2whq5?

Pavel
12.12.2016
10:48:19
Только на неделе думал, насколько сложно закинуть зловред в NPM

Vladimir
12.12.2016
10:48:51
несложно было всегда

есть же пост/пре-инстал хуки

Admin
ERROR: S client not available

Дмитрий
12.12.2016
10:52:17
Можно скомпилировать ещё что нибудь

Vladimir
12.12.2016
10:52:49
и запустить на тысячах чужих CI

Дмитрий
12.12.2016
10:52:57
Я представляю, как бы бомбануло, если бы left-pad не выпилился, а делал чтонибудь эдакое

Pavel
12.12.2016
10:53:14
Ребят, кому еще прилетело про https://medium.com/@deian/63e6e0a566a7#.8dlz2whq5?
Общий смысл статьи: пользуйтесь только https

KlonD90
12.12.2016
10:53:58
Я представляю, как бы бомбануло, если бы left-pad не выпилился, а делал чтонибудь эдакое
парень то все правильно сделал. Его код же. Без зловреда по отношению к сообществу

Artur
12.12.2016
10:54:12
Про смысл статьи я понял. Вопрос в том, что письмо от этого товарища всем мейнтенерам в репе npm прилетело?

Vladimir
12.12.2016
10:54:17
Общий смысл статьи: пользуйтесь только https
эм. это не поможет пока не отключишь компиляцию бинарников

Artur
12.12.2016
10:55:08
эм. это не поможет пока не отключишь компиляцию бинарников
Как минимум проверять пакеты и фиксировать версии же. В стетье речь идет о возможной подмене источника пакета же, так

Vladimir
12.12.2016
10:55:28
смотри синдре, сабстек и зкат удалят свои пакеты и чо будет?

Google
KlonD90
12.12.2016
10:55:57
удалить все пакеты, это так себе идея
ну это их право. это их собственность если они не принимали чужой вклад

тем более что один из пакетов

npm и так фактически удалил

Artur
12.12.2016
10:56:22
Vladimir
12.12.2016
10:56:32
Artur
12.12.2016
10:56:40
Вот же

Весело

Все держится фактически на взаимном доверии и соплях

Vladimir
12.12.2016
10:57:19
допустим он лочит бинарники os regardless

зашринкврапишь на винде

на маке не будет работать

Artur
12.12.2016
10:57:55
Как вариант еще bundleDependencies, проверяешь сборку в изолированной среде, пакуешь и в бой

Vladimir
12.12.2016
10:57:57
и с бандл/пир депсами шринкврап тоже плохо работает

KlonD90
12.12.2016
10:57:57
Все держится фактически на взаимном доверии и соплях
так бизнес и ведется ну + государство но нашему никакого доверия нету

Vladimir
12.12.2016
10:58:04
ахахах

Artur
12.12.2016
10:58:26
Vladimir
12.12.2016
10:58:34
Artur
12.12.2016
10:58:46
Короче везде засада

KlonD90
12.12.2016
10:58:49
А потом рыдаем - ну как же так... да
зачем рыдать? делаем выводы - живем дальше. ну бизнес то тоже всегда отжать могут

Страница 420 из 2748