Комментарии 20
Знай свой инструмент
Что есть инструмент?
До какого уровня абстракции требуется опуститься, чтобы познать его?
В противовес Вашему утверждению, хочу выразить более разумный лозунг — «Делай свое дело эффективно».
Расходуй свое время эффективно. Развивай себя эффективно.
Часовщик на рисунке дает нам ясное представление, к чему приводит узконаправленное развитие личности — старик в свои седые годы вынужден работать больными руками, ибо он все свои силы положил на познание примитивного инструмента. Таким ли видят свое будущее свидетели «текучих абстракций»?)
Ну и чисто экономически не целесообразно специалистам вкладывать все яйца в одну корзину.
Тут как в любом деле — 90 процентов материала изучается по времени столько же, сколько и оставшиеся 10. А так как человек ограничен 24 часами в сутках, то чтобы получить максимальное количество полезных знаний ему необходимо собирать лишь те плоды, что уже созрели и лежат на земле. Это самый оптимальный путь в объективной реальности, что косвенно подтверждает обилие багов в софте, который пишут далеко не глупые люди)
"Компьютер — это конечный автомат". Алан Кокс, прим. Википедия
Блин, раньше считал, что сам это придумал.
До кучи, этот вопрос, как правило, идет следующим после вопроса о микро и макро задачах, которые как раз js-прикладник и использует в повседневной жизни.
Т.е. из разряда: «Чей обратный вызов сработает раньше setTimeout или setImmediate? Когда стоит применить то, а когда это?»
Или тот же вопрос, но с примером кода, где вы увидите лесенку асинхронных вложенностей из process.nextTick и setTimeout.
К примеру, функций setImmediate (разве что нестандартизированная в FF) и process.nextTick в брузерах не найти, они характерны только Node.js платформе и ее событийному циклу.
libuv используется не только в node.js, есть и другие платформы.
Полезно ли знать это или нет — решать вам, решать каждому, я считаю, что полезно, затем и опубликовал заметку.
Ну и что то менеджер пакетов насчитывает столько модулей. Это разве заставляет вас их все учить?) вообще не понял про бежать в х2 быстрее к чему здесь)
Хорошая статья
Но после прочтения остаётся ряд вопросов. Что такое время таймера и что такое время цикла — не обозначается. Когда говорится об определении времени выполнения операции ввода вывода — тоже непонятно. Разве есть такие механизмы ядра, которые могут нам сказать, сколько времени будет выполняться асинхронная операция?) — ответ нет.
Потом что такое idle?) Дальше непонятно про что то вроде «благо мы знаем что в никсах все файл и тип одинаковый». Какая разница? Мы просто имеем дескриптор на сущность. В винде то же самое.
На фоне этого, мудерж с таймаутами для epoll_wait() выглядит костылем.
На винде waitable timer только блокирующие. Кроме того, это же +1 системный вызов на операцию...
Но при той реализации таймеров, которая в libuv — там эти таймера получаются не очень точные. И, насколько понимаю, при такой реализации у периодических таймеров не будет ни fixed rate ни fixed delay — а будет нечто среднее.
Знай свой инструмент: Event Loop в libuv