
Andrew
26.08.2018
13:30:31
здец. это тебе уже 21. одуреть.

Maxim
26.08.2018
13:30:52
ща ещё перлы скину кусок кода, может кому-то понравится)
заодно растолкуете может что эта ересь делает

Google

Nikita
26.08.2018
13:31:32

Maxim
26.08.2018
13:31:40

Andrew
26.08.2018
13:31:52
я 89го

Ярослав
26.08.2018
13:32:17
2002го

Maxim
26.08.2018
13:32:32
не поверишь, уже три года кожу) на ноде чуть меньше года
ладно
код в студию:
use(fn) {
this.go = (stack => (...args) => stack(...args.slice(0, -1), () => {
const next = args[args.length - 1];
fn.apply(this, [...args.slice(0, -1),
next.bind.apply(next, [null, ...args.slice(0, -1)]),
]);
}))(this.go);
}

Nikita
26.08.2018
13:33:51

Alexander
26.08.2018
13:33:57

Nikita
26.08.2018
13:34:04
ахвхавхах
я даже не понимаю
что тут происходит
зачем так

Google

Nikita
26.08.2018
13:34:15
и почему

Gleb
26.08.2018
13:36:17
Лол

Maxim
26.08.2018
13:36:56
в общем это кастомный врапер over FaaS, serverless.
напоминает експресс, только самописный
этот кусок - по идее имплементация паттерна middleware
но как работает - я так и не выкупил
не то что бы меня конкретно этот кусок кода парил, но блин, такой весь проект...
нахуя
и да - я полностью солидарен с тобой и предидущим оратором)

Alexander
26.08.2018
13:40:07

Maxim
26.08.2018
13:44:45
как это работает?

Alexander
26.08.2018
13:45:52
не, получше поищу
хм, а инфы и правда немного в этих ваших интернетах, но вот что-то похожее... https://stackoverflow.com/questions/39318027/how-to-write-a-middleware-class-in-node-js

Maxim
26.08.2018
14:00:34

Alexander
26.08.2018
14:05:26

Andrei
26.08.2018
14:06:30

Nikolay
26.08.2018
14:08:17
код в студию:
use(fn) {
this.go = (stack => (...args) => stack(...args.slice(0, -1), () => {
const next = args[args.length - 1];
fn.apply(this, [...args.slice(0, -1),
next.bind.apply(next, [null, ...args.slice(0, -1)]),
]);
}))(this.go);
}
? Классный, понятный код, который легко поддерживать :))

Andrei
26.08.2018
14:09:03
это "engine". его один раз написал и потом никогда к нему не возвращаешься. поэтому не страшно если он сложный.
главное чтобы основной код был нормально написан

Nikolay
26.08.2018
14:09:47
Никогда не понимал вот этих эпизодов "умного программирования", на-ху-я? За лишние строчки кода вас током хуячит что-ли?

Google

Alexander
26.08.2018
14:09:59

Nikolay
26.08.2018
14:10:18

Maxim
26.08.2018
14:10:34

Andrei
26.08.2018
14:11:20
famous last words :D
ну а что, ты часто улучшаешь engine миддлварей?
ты хоть раз улучшал его?
или вообще писал его?
тут вопрос прагматизма.
безусловно, код должен быть в основном простой и понятный.
но есть случаи, когда это неважно.

Таймураз
26.08.2018
14:14:02
и почему
За столбики ро выдам в следующий раз
код в студию:
use(fn) {
this.go = (stack => (...args) => stack(...args.slice(0, -1), () => {
const next = args[args.length - 1];
fn.apply(this, [...args.slice(0, -1),
next.bind.apply(next, [null, ...args.slice(0, -1)]),
]);
}))(this.go);
}
Дай всей этой дичи нормальное именование переменных, заменяй части кода на современные и понятные аналоги
А там будет проще переписать

Maxim
26.08.2018
14:20:13

Alexander
26.08.2018
14:21:03

Maxim
26.08.2018
14:22:00
удачи
спасибо (без под*ба)

Alexander
26.08.2018
14:22:10

Maxim
26.08.2018
14:23:56
ех, раз у меня кажись бенефис в этом чате сегодня, то вот вам занятная ссылка:
https://edgecoders.com/how-well-do-you-know-node-js-36b1473c01c8
кто сколько осилит взять вопросов? =)

Nikita
26.08.2018
14:24:12
а в одном сообщении можно столбиками писать ?

Таймураз
26.08.2018
14:26:22

Andrei
26.08.2018
14:38:39
а какая там либа для этого используется, да какая к черту разница

Nikolay
26.08.2018
14:43:04

Andrei
26.08.2018
14:43:17
такие вопросы имеют смысл возможно для высоконагруженного решения, когда идёт серьезная оптимизация, но 99% девелоперов пишут простые сайтики с парой тысяч юзеров в день максимум, а для этого достаточно воткнуть экспресс и не загружать себе мозги.

Google

Nikolay
26.08.2018
14:43:25
Очень хотелось бы писать такой код, но увы :))

Alexander
26.08.2018
14:43:49


Andrei
26.08.2018
14:51:26
Не бывает такого кода, который "раз написал и никогда не возвращаешься"
вот в том-то и дело, что бывает
сколько проектов было загублено только потому, что начинающий архитектор решил что "а давайте сделаем всё как следует", "не бывает неважного кода", "всё должно быть идеально"
если бы идеальный код легко было писать, это одно дело, но ведь его писать очень непросто.
почти всегда, если очень сильно подумать, можно найти какое-нибудь элегантное решение проблемы, красивое, простое и понятное. но если так думать над каждым классом/функцией, состаришься прежде чем хоть какой-нибудь проект закончишь...
вот чего не бывает, по моему глубокому убеждению (основанному на опыте), это однозначности. нет ни одного паттерна, который бы подходил везде. нет ни одного правила, которое бы абсолютно везде было применимо. об этом я и пытался сказать: всегда есть исключения из правил.


Nikolay
26.08.2018
14:54:25
Код должен быть выразительным и понятным. Исключение могут составить разве что всякие хаки оптимизации ради.
Я надеюсь понятно, что я говорю в контексте работы в команде.

Alexander
26.08.2018
14:56:04

Admin
ERROR: S client not available

Maxim
26.08.2018
14:56:41
мне кажется большинство этих вопросов не имеют практического смысла.
по модулям к примеру, не очень понимаю, зачем знать детали того, как оно работает. может и есть какие-то хитрости, но в 99% случаев нужен module.exports и require, а они простые как топор.
опять же libuv, я про неё знаю только потому, что когда-то давно готовился к собеседованию. а на практике важно только знать что IO асинхронный и может выполняться параллельно с основным кодом (если не использовать методы *Sync).
"когда-то давно готовился к собеседованию".
Примерно для того же оно и мне надо) - назначили меня куратором по ноде в нашей конторе?
и тут мне как-то так печально стало, что я не знаю как тот же event loop в потрохах работает) то есть что это такое и в чём профит понимание есть, но вот его фазы вспомнить сходу не мог
вот и полез гуглить-ковырять. А как оказаось - чем дальше в лес, тем больше дров

Alexey
26.08.2018
15:00:51
я с 2004 код пишу понемногу.. и толку

Nikolay
26.08.2018
15:01:26

Andrei
26.08.2018
15:01:28

Maxim
26.08.2018
15:06:09
вот главное такие вопросы на собеседовании не задавай)
не, я для себя) толку что-то объяснять если не смогу ответить на вопросы)
вот недавно, я прям подофигел - сам пишу на 8-мой ноде, так как на 10-ке AWS Lambda пока писать не даёт.
вижу у чувака в ноде import, потом черз пару строчек require. На вопрос в чём разница, и зачем ты их мешаешь он ответить понятное дело не смог.
моё же объяснение свелось что 1) всё должно быть консистентно, мешать не стоит 2) это експерементальна фича..

Andrei
26.08.2018
15:40:26

Nikolay
26.08.2018
15:41:31

M
26.08.2018
16:33:59
Привет. У меня вопрос. Пишу сайт на express. Как избежать огромных ошибок от nodemailer в консоле при получении несуществующего адреса почты юзера при регистрации. Или это нормально? Подскажите пожалуйста кто с nodemailer работал. Спасибо

Кирилл
26.08.2018
16:57:38
Nodemailer вроде юзает debug
Добавь в env
DEBUG=-nodemailer*
Или как то так

Google

Gleb
26.08.2018
17:02:16
или просто ошибки ловить? )

Max
26.08.2018
17:18:17
ok, спасибо, но согласись -
constructor() {
this.middlewares = [];
}
use(fn) {
this.middlewares.push(fn);
}
в разы проще того что я сбрасывал..
Самая простая реализация миддлваров даже никакого библиотечного кода не требует
http.on("request", async (req, res)=>{
await middleware1(req, res, middleware2, middleware3, middleware4, ...)
})
async function middleware2(req, res, next, ...res){
...
await next(req, res, ...res);
...
}
async function middleware3(req, res, next, ...res){
...
await next(req, res, ...res);
...
}
async function middleware4(req, res, next, ...res){
...
await next(req, res, ...res);
...
}правда вместо next() как в экспрессе нужно явно передавать параметры, зато все предельно просто и прозрачно

Julia
26.08.2018
17:19:58
я пытался))))

Alexander
26.08.2018
17:20:30

Julia
26.08.2018
17:21:19
хз, нет, даже не вчитывался, но может кому будет полезно
потому что я adonisjs.com использую в локальных проектах, хотелось в express немного ООП добавить

Nurlan
26.08.2018
17:50:28
Добрый вечер!
Кто может подсказать, делаю сейчас приложения для создания тестов, ну типа составляешь вопросы и варианты ответов, вот не знаю как лучше составить модель для mongodb, поидее mongo хорошо подходит для этого, то есть будет документ в нем поле вопроса, поля ответов, поле категории вопросов, автор вопроса (через ref подтягивается из другой коллекции где зарегистированные пользователи) проблема в том не могу сообразить как помечать правильный вариант ответа

Nikita
26.08.2018
18:01:19

Nurlan
26.08.2018
18:07:37
там нужно скопировать один зарубежный сайт с онлайн тестами

Alexander
26.08.2018
18:31:09

¢
26.08.2018
19:18:32
Привет, Ребята! Не подскажите пожалуйста , для авторизации на сайте для этого нужно ли создать две url'ы один для login/tutor , второй для login/user или все это объединить одним url'ом типо login/ и все ?

Roman
26.08.2018
19:19:46
Подскажите, что то в упор не могу понять, почему:
npm mysql -v
Возвращает: 5.6.0
При том что установленный модуль mysql имеет версию: 2.16.0
https://www.npmjs.com/package/mysql

Alexander
26.08.2018
19:20:30
Ты смотришь версию с репо похоже