Nikolay
Nikolay
А есть книги где более подробно то гасчет архитектуры конкретно пишется
Nikolay
Что гуд что нет
Aleksey
сомнительно как-то
Vladimir
Обработка ошибок стримов и избегание различных утечек это не то, о чем хочется постоянно думать
Vladimir
async await вполне себе есть
Nikolay
Ну вы предлагайте свой мод
Nikolay
Пока пак инструкций антиговнокодеринга выглядит следующим образом : Используй flow, async-await, комбинируй классы и функции Не используй глобалы и синглтоны Пиши тесты для всего Используй DI Не используй в своем коде эвент эмиттеры и стримы Используй чистые функции где возможно Никода не используй throw
Roman
извините я опять о больном, кто юзает чистый сорт, где вы его берете? у lodash по ходу нет кастомной функции сравнения 2 элементов, только мап значний
Vladimir
arr.slice().sort()
Vladimir
чистый сорт)
Nikolay
Roman
arr.slice().sort()
ну вариант да
Yan👀
меня может закидают тут сразу, но можно узнать почему throw никогда не использовать?
Yan👀
попытался загуглить не увидел ярких предупреждений о том что его надо сторониться
Roman
но я бы не говорил так категорично
Nikolay
Я даже не знаю что такое троу
Nikolay
Так что я пока чист
Nikolay
Он ексепшены райзит?
Yan👀
throw new Error('WOW')
Yan👀
типа такого да
Nikolay
Да не херня
Nikolay
Чет я вроде как думал его ассерт заменяет
Andrey
throw в функции все так же убивает оптимизацию ?
Yan👀
Вероятно где-то тут близко ответ на мой вопрос
Yan👀
throw в функции все так же убивает оптимизацию ?
Nikolay
Посоны
Nikolay
Поясните мне за го
Nikolay
Пришел на сопеседование
Nikolay
Компетентный чел полил ноду и монгу говном
Nikolay
С ног до головы
Nikolay
Монгу то ладно
Nikolay
А вот ноду то за что
Roman
не
Roman
так
Nikolay
Назвал всего одну килер фичу
Roman
пиши
Nikolay
Еще один спидврайт хейтер
Vlad
не throw убивает оптимизации
Nikolay
Которая типа пишеш один код на сервере и на клиенте
Nikolay
Но это ж миф
Vlad
а try … catch
Yan👀
ну тут все-таки с каждым днем нас все более дохуя поэтому придется по одному сообщению все же писать
Nikolay
а try … catch
А без этого какжить вообще
Vlad
отдавать функции данные так, чтобы она не падала например
Andrey
а try … catch
точно, перепутал
Andrey
А без этого какжить вообще
сделал функцию врапер, где try ..catch
Nikolay
Так а что она врапит? Возникновение ошибки?
Vlad
https://github.com/petkaantonov/bluebird/wiki/Optimization-killers
Vlad
плюс на русском http://frontender.info/optimization-killers/
Nikolay
Тогда такой вопрос
Nikolay
Какие таски можно вешать на ноду а какие нет
Aleksey
в целом, если это не касается тяжелых вычислений, то нода вполне ок
Nikolay
Yan👀
@sullenor Тяжелых это какие порядки?
Roman
а try … catch
есть кейсы, например подгрузить вероятно отсутствующий модуль дешевле так, чем проверять fs-ом сначала
Aleksey
например 40mb данных замаппить раз 5
Aleksey
а по факту считать над
Nikolay
например 40mb данных замаппить раз 5
Лучше на го сделать этот функционал а как потом его с нодой связать? Сокеты или процесс форк?
Aleksey
когда ты загружаешь процесс, он перестает отвечать на внешние запросы. В результате можно просесть по RPS, так как пока воркер занят, на новый запрос будет отвечать следующий и т.п.
Aleksey
пока не закончатся
Aleksey
поэтому, для синхронных тяжелых вычислений это плохо подходит, так по нагрузке просядешь в конечном счете
Aleksey
https://events.yandex.ru/lib/talks/1502/
Vladimir
для меня основная проблема в throw - отсутствие статической типизации
Aleksey
там разбирают как event loop работает в nodejs
Aleksey
не очень понятно как связана статическая типизация с throw
Aleksey
да и по сути в самом языке ее нет
Vladimir
Естественно, проблема в том, что она теоретически невозможна
Aleksey
ну да
Aleksey
круто же
Vladimir
очень круто, когда throw null прилетает
Vladimir
а у тебя e.stack в лог идет
Aleksey
ну так проверь вначале, что у тебя ошибка является инстансом Error
Aleksey
и кидай
Vladimir
ну также и про аргументы можно сказать, проверяй в каждой функции каждый аргумент
Vladimir
и все ок
Aleksey
я просто не понимаю, какой смысл кидать не Error через throw
Aleksey
стактрейс пропадет, согласен
Aleksey
скорее всего в каком-то месте не обрабатываешь ошибку корректно