боюсь, такое логирование уложит спать боевой проект. Хотя ненадолго можно попробовать.Во первых все логировать не нужно. Можно тупо в коде доктрины апдейты только ловить и логировать, можно иначе извернуться, но вам нужны, очевидно, только апдейты. Которых сомневаюсь что мильён в секунду. Ну и во вторых - просто малореально что-то другое придумать...
Я про логирование запросов к Mongo..
server {
listen 127.0.0.1:4000;
root /var/www/html;
location / {
proxy_pass http://127.0.0.1:3000;
error_page 502 = @local;
}
location @local {
}
}
upstream
(видимо Сергей Соколов имел в виду его):upstream backend {
server 127.0.0.1:3000; # основной сервер
server 127.0.0.1:4001 backup; # сервер на случай неработающего основного
}
# запасной сервер, просто отдаёт статику
server {
listen 127.0.0.1:4001;
root /var/www/html;
}
# Это наш сервер
server {
listen 127.0.0.1:4000;
location / {
proxy_pass http://backend;
}
}
const tempalte = `
<span class="c56 c77 c98">текст</span>
<span class="c101">текст</span>
<span class="c111">текст</span>
<span class="c12 c30 c98">текст</span>
`;
const parser = new DOMParser();
const root = parser.parseFromString(tempalte, 'text/html');
root.querySelectorAll('.c77, .c98, .c101').forEach((element) => {
const content = document.createElement('b');
content.append(...element.childNodes);
element.replaceWith(content);
});
console.log(root.body.innerHTML);
/*
<b>текст</b>
<b>текст</b>
<span class="c111">текст</span>
<b>текст</b>
*/
const template = `
<span class="c56 c77 c98">текст</span>
<span class="c101">текст</span>
<span class="c111">текст</span>
<span class="c12 c30 c98">текст</span>
`.trim();
const classNames = ['c77', 'c98', 'c101'];
let result = template;
for (const className of classNames) {
const expression = new RegExp(`<([\\w-]+)\\s*class=".*${className}.*"\\s*>(.+)</\\1>`, 'gm');
result = result.replace(expression, (match, tag, content) => `<b>${content}</b>`);
}
const classNames = ['c77', 'c98', 'c101'];
const expression = new RegExp(`<([\\w-]+)\\s*class=".*(${classNames.join('|')}).*"\\s*>(.+)</\\1>`, 'gm');
const result = template.replace(expression, (match, tag, className, content) => `<b>${content}</b>`);
Научиться быть руководителем это почти никак. Нужно к этому идти.
const out = items.reduce((acc, {id, price}) => {
const key = obj[id]
if (key) { // проверяем что элемент с таким id нас вообще интересует
if (acc[key]) { // если он встречался ранее, то добавляем к текущему значению
acc[key] += price
} else { // иначе запоминаем с текущей ценой
acc[key] = price
}
acc.total += price // и всегда добавляем к total
}
return acc
}, { total: 0 })