Игорь
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 либу не надо мне задвигать
Alexander
15.06.2018
12:27:27
Игорь
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
Alexander
15.06.2018
12:31:06
Игорь
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
но это не важно
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
Игорь
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
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
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, большой четверки и прочее или нет
Mikhail
15.06.2018
12:45:05
Alexander
15.06.2018
12:46:08
Шта?
Что из этого тебе не понятно?
Mikhail
15.06.2018
12:46:47