@nodejs_ru

Страница 2156 из 2748
Игорь
15.06.2018
12:24:56
а бывает когда тебе надо результат какого-нить реквеста использовать через три промиса ниже

а глобальные переменные это ваще не по-православному

Alexander
15.06.2018
12:25:17
а кто о них говорит?

Игорь
15.06.2018
12:25:19
потому async/await это необходимый сахар для того чтобы жизнь была проще ))

Google
Игорь
15.06.2018
12:25:32
а тянуть и ретурнить нужные данные просто так через три промиса вниз..

ну тоже так себе идея

Alexander
15.06.2018
12:25:38
есть одно очень простое следствие. если ты смог что-то сделать с сахаром, то это элементарно решается и без него

Matvey
15.06.2018
12:25:39
@energizer91 а если мне захочется внести изменения в fn2, в таком случае мне придется смотреть на data, fn1 и fn3 ?

Игорь
15.06.2018
12:25:42
лишние такты

Alexander
15.06.2018
12:25:59
типа делай в fn2 что хочешь, а остальным будет по кайфу?

Игорь
15.06.2018
12:26:11
ну конечно и без сахара можно, но сахар же делается для нашего удобства)

чтобы код было проще читать и воспринимать ))

Matvey
15.06.2018
12:26:20
думаю цепочка промисов говорит о плохом дизайне кода

Игорь
15.06.2018
12:26:20
это философский вопрос в общем-то ))

Alexander
15.06.2018
12:26:38
особенно pipe

Google
Alexander
15.06.2018
12:27:00
кто как хочет, как говорится

Игорь
15.06.2018
12:27:06
думаю цепочка промисов говорит о плохом дизайне кода
допустим, тебе надо… в таске.. Запросить размер файла, сравнить размер со свободным местом текущего хранилища.. если все оК.. - скачать файл.. распаковать файл..

как это сделать без цепочки промисов?

про async либу не надо мне задвигать

Игорь
15.06.2018
12:27:42
это таска которую надо сделать

это ряд асинхронных вызовов

Alexander
15.06.2018
12:28:49
ладно, будет вам с этих промисов и асинков

лучше ответьте на мой вопрос

Игорь
15.06.2018
12:28:59
конечно будет

на какой? )

Alexander
15.06.2018
12:29:16
пожалуй, и я задам вопрос

знает ли кто-нибудь хорошие либы для работы со звуковыми потоками? задача состоит в микшировании PCM

наложении эффектов, смешивании, выводе в stdout

задача в следующем: имеется PCM, приходящий по ws с фронта и PCM, добытый из, скажем, мр3 файла наподалеку. задача состоит в смешивании этих каналов, регулировке звука и параллельному скармливанию всего этого в output stream

хочется добиться удобства работы хотя бы на уровне потоков. PCM из ws конвертируется в readableStream, pcm из мр3 тоже в формате потока. пытался прикрутить audio api с браузера, но там другой формат потоков и получается дорого конвертировать их налету

а то с 7 июня висит неотвеченный

Matvey
15.06.2018
12:29:58
@this_self покажи код, в котором ты реализуешь данный кейс. нужна конкретика

Игорь
15.06.2018
12:30:26
да впадляк уже ща раскапывать сто миллиардов файлов и проект открывтаь.. это я так для примера привел

Google
Игорь
15.06.2018
12:31:06
Alexander https://www.npmjs.com/package/bassaudio

Alexander
15.06.2018
12:31:26
любопытно. благодарю

Игорь
15.06.2018
12:31:28
вообще либа BASS имеет тонну интересностей для обработки звука

это я так.. нашел первое попавшееся на npmjs

наверняка есть еще обвертки

там кажись и эквализация есть и куча всего

Matvey
15.06.2018
12:32:18
@energizer91 и вся эта цепочка вызовов выполняется в рамках одной какой-то функции? как она называется?

Alexander
15.06.2018
12:32:49
откуда мне знать такие тонкости?

у меня такое было. писал один вебхук для автоматизации. наделал маленькие сервисные функции для получения хука, обработки, заведения проектов, рассылки писем, добавления прав итд

Игорь
15.06.2018
12:33:41
getArchive(url) .then(unzip) .then(checkSize)
да, этот подход работает до момента пока тебе не нужно использовать результат какой-то функции выше.. в какой-то функции пониже.

но это не важно

Matvey
15.06.2018
12:34:10
getArchiveThenUnzipThenCheckSize() я полагаю

Alexander
15.06.2018
12:34:15
и компоновал их then-ами

Matvey
15.06.2018
12:34:20
функция выполняет три разных кейса за раз

Alexander
15.06.2018
12:34:20
getArchiveThenUnzipThenCheckSize() я полагаю
о да вы с Игорем коллеги

Игорь
15.06.2018
12:34:31
а что сразу я?)

Alexander
15.06.2018
12:34:37
ну я не коллега

Игорь
15.06.2018
12:34:43
doReleazeUpgrade() можно назвать например)))

Google
Игорь
15.06.2018
12:35:03
не обязательно перечислять все что функция делает, но вкратце дать понять в чем ее идея)

иначе будет потом как winapi.. функции по 100 символов длинной )

хотя это тоже вопрос слишком философский

и интимный

Alexander
15.06.2018
12:35:42
и интимный
а ты сам юзал bassaudio?

Matvey
15.06.2018
12:35:54
я просто хотел натолкнуть на мысль, что у функции отсутствует единая ответственность

Alexander
15.06.2018
12:35:56
что-то я не вижу там связи с родными нодовскими потоками

Игорь
15.06.2018
12:35:57
да, но я юзал ее на пайтоне

Matvey
15.06.2018
12:36:02
а это плохой дизайн кода

Alexander
15.06.2018
12:36:09
ухххххххх

Alexander
15.06.2018
12:36:24
она получает конкретные данные на вход и сообщает конкретные данные на выход

модифицируя начальные данные

чистые функции йо

(я знаю, что они не чистые)

Matvey
15.06.2018
12:37:25
она выполняет три разных кейса внутри себя. поменяв функцию uzip, я вынужден будут пересмотреть все остальные функции в цепочке вызовов, удостовериться что ничего не поломалось

если unzip используется еще и в другом месте?

получается связанность кода

Alexander
15.06.2018
12:38:01
она выполняет три разных кейса внутри себя. поменяв функцию uzip, я вынужден будут пересмотреть все остальные функции в цепочке вызовов, удостовериться что ничего не поломалось
ты в unzip получаешь инстанс с архивом. хоть мир тресни, unzip всегда на вход будет получать 1 файл, а возвращать массив файлов

Google
Matvey
15.06.2018
12:39:14
все хорошо, пока ты удерживаешь это поведение функции unzip в голове (своей)

Alexander
15.06.2018
12:39:25
или в jsdoc неподалеку......

Игорь
15.06.2018
12:40:39
в этом случае проблема не самих функций, а проблема процесса их взаимодействия

Alexander
15.06.2018
12:40:40
За это идея ещё и бережно тебе подскажет, что она ожидает и что вернёт

Игорь
15.06.2018
12:40:51
да и камон, пацаны

ну не бывает во вселенной чистого кода

везде будет быдлокод

надо просто с ним смириться и делать его красивым))

Alexander
15.06.2018
12:42:56
В других языках с этим получше

Игорь
15.06.2018
12:43:22
не могу не согласиться конечно

но здесь снова философский момент.. что считать чистым кодом

иногда как посмотрить на лапшу наследования...

в глубинной в 20-30 наследованных объектов

с точки зрения ООП парадигм то все правильно…

но чтобы это понять - надо голову трахнуть

и можно ли это назвать чистым кодом?

потому я понял для себя простую истину - чистый код это тот, который легко понять и читать и не важно соблюдаются там каноны SOLID, большой четверки и прочее или нет

Alexander
15.06.2018
12:46:08
Шта?
Что из этого тебе не понятно?

Mikhail
15.06.2018
12:46:47
Что из этого тебе не понятно?
Что setTimeout блокирует поток

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