• Разъясните пожалуйста как работают эти циклы?

    lastuniverse
    @lastuniverse
    Дополню. Так как цикл в обоих случаях успевает полностью прокрутиться еще до вызова функции первого таймаута то в варианте где переменная обьявлена через var в ней(переменной) уже лежит число 10. В случае где переменная обьявленна через let для каждой итерации цикла была создан собственный экземпляр переменной видимый только внутри цикла И!!! только в собственной иттерации цикла, поэтому каждый вызов таймаута запомнил собственную переменную i.
  • Как понять сколько тредов способна выдержать node.js?

    lastuniverse
    @lastuniverse
    А можно как-то наблюдать внутреннее состояние ивент-лупа, очереди и прочего? Вот чтобы понять сколько нужно времени на обработку той или иной команды, а так же контролировать где проседает асинхронный механизм, чтобы избежать блокировки цикла и утечки памяти.

    Ричард Хендрикс, есть вот такой модуль
    и вот такой цикл статей:
    Node.js Performance Monitoring - Part 1: The Metri...
    Node.js Performance Monitoring - Part 2: Monitorin...
    Node.js Performance Monitoring - Part 3: Debugging...

    В них можно найти/подсмотреть ответы на некоторые из Ваших вопросов.

    Так же существует продукт N|Solid (лично им никогда не пользовался), который поставляется ва 3-х вариантах:
    1. AWS Lambda. Optimally run Node.js serverless functions with exclusive performance insights. (Оптимальный запуск безсерверных функций Node.js с исключительной информацией о производительности.)
    2. On-Premise. Build, analyze, and secure mission-critical applications with a superior Node.js runtime. (Создавайте, анализируйте и защищайте критически важные приложения с превосходной средой выполнения Node.js.)
    3. Cloud. Monitor cloud Node.js applications for performance problems, security vulnerabilities, and more. (Мониторинг облачных приложений Node.js на предмет проблем с производительностью, уязвимостей безопасности и многого другого.)

    Судя по описанию, данный продукт позволит Вам мониторить eventloop и не только.
  • Как понять сколько тредов способна выдержать node.js?

    lastuniverse
    @lastuniverse
    Ричард Хендрикс, один процесс ноды не быстрее кучи процессов php или другого ЯП. Но использует отведенный потоку вычислительный ресурс полнее, по возможности и при наличии нагрузки не допуская простоев. Этим и достигается высокая эффективновсть. Но не более того, чудес не ждите.

    В свою очередь это накладывает ряд ограничений на код приложений, предполагающих работу под нагрузкой. Об этих онраничениях упоминалось выше, но повторюсь:
    1. не использовать синхронный ввод вывод;
    2. не делать больших задач с тяжелыми вычислениями, выполняемыми за раз. Если же такие вычисления необходимы, то в процессе их выполнения давать им паузу, позволяя эвентлупу переключаться на другие задачи или же выполнять такие задачи в воркерах. Для приостановки выполнения задач в ноде есть разные средста, например генераторы с yield и др.

    На мой взгляд этой и выше представленной информации достаточно для понимания.
    Если же вам требуется более глубокое понимание, обратитесь к исходным кодам ноды а также поищите в нете результаты тестов под нагрузкой для различных приложений.
  • Как понять сколько тредов способна выдержать node.js?

    lastuniverse
    @lastuniverse
    Если простыми словами то:
    Эвент луп это по сути что то типа тетриса, только укладывает стройными рядками без зазоров не фигуры а текущие задачки и не в стакан а в цикл. При этом учитываем что все укладываемые задачки должны быть не большими по времени выполнения и не содержать блокирующих (читай синхронных) операций, что ложится на плечи программиста. Также надо отметить что евентлуп одно поточный, что существенно облегчает жизнь, позволяя не задумываться о синхронизации обрабатываемых данных между потоками выполнения. Также нода имеет на все случаи жизни набор возможностей, позволяющих большие и тяжелые задачи разбивать на маленькие и легкие части, а также не блокирующие (читай асинхронные) механизмы для всех возможных операций ввода вывода. Этим и достигается:
    - компактная укладка задачек в цикл
    - минимальное время простоев цикла выполнения
    - и как следствие, максимально эффективное использование вычислительного ресурса потока.
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, написал простую программку для подсчета числа повторений
    // упростим алгоритм, теперь в нем будет 1 токен по 10 цифр
    function rand() {
      return ('00000000000'+Math.floor(Math.random()*10000000000)).substr(-10);
    }
    
    // число экспериментов
    var count = 10000000; 
    
    // вычисляем частоту повторения чисел в первой позиции
    var summ = [0,0,0,0,0,0,0,0,0,0];
    
    for(i=0;i<count; i++){
    	let test = rand();
    	let num = parseInt(test[0]);
    	summ[num]++;
    }
    
    console.log("частота повторения:\n");
    summ.forEach((n,i)=>{
    	console.log(i," - ",n);
    });


    отклонения в пределах десятитысячных долей (куда делись мои полтора процента?)))
    0 ' - ' 999089
    1 ' - ' 999237
    2 ' - ' 1000331
    3 ' - ' 999494
    4 ' - ' 1001380
    5 ' - ' 1001016
    6 ' - ' 999848
    7 ' - ' 1000501
    8 ' - ' 998291
    9 ' - ' 1000813


    что однозначно говорит в Вашу пользу, но совсем не понимаю почему так :)

    PS: попробую завтра еще раз вникнуть, а на сегодня прошу меня извинить, подушка зовет.
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, хотя постойте:)
    Ваш пример всего лишь показывает что случайные числа покрывают весь диапазон от 0 до 99. Но это не доказывает что они попадают в выборку с одинаковой частотой?
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, что то я уже сам начинаю сомневаться в своей правоте. Напишу на досуге тестилку с подсчетом матожидания и дисперсии, а там и отпишусь)
  • Express js что не так с роутингом?

    lastuniverse
    @lastuniverse
    поменяйте строку
    router.get('/', (req, res) => res.render('/auth'));


    на любой из этих вариантов:
    router.get('/', (req, res) => res.render('auth'));
    // или
    router.get('/', (req, res) => res.render('./auth'));
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, я говорю о генерации таких комбинаций как
    0xxxxxxxxxx
    00xxxxxxxxx
    000xxxxxxxx
    0000xxxxxxx
    00000xxxxxx
    000000xxxxx
    0000000xxxx
    00000000xxx
    000000000xx
    0000000000x
    где нолями отмечены 0 попавшие в число из строки '0000000000'+Math.floor....
  • Как ограничивать время работы программ в Linux?

    lastuniverse
    @lastuniverse
    Saboteur, это действительно жестко, но конкретно с моим 12-летним по другому не выходит, если комп и игры доступны ему совершенно ничего не интересно (ни с папой на горку покататься ни книжку почитать ни уроки сделать ни помастерить в гараже ни в кино сходить ни погулять во дворе)
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, а пока вот вам простая выкладка:
    1. При генерации 10 значного токена число генерируется в интервале от 0 до 999999999 с равномерным законом распределения, при этом если длинна числа меньше 10 символов то оно до 10 символов лидирующими нулями.
    2. так как добавленные нули каждого токена включаются в результирующее 80-и значное число то рассмотрим вероятность появления нуля в каждой их 10 позиций токена:
    - в 10-й позиции токена вероятность появления нуля будет 0.1
    - в 9-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет однозначным, тоесть 0.1 + 10/10000000000 = 0.1000000001
    - в 8-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 2 или менее значным, тоесть 0.1 + 0.0000000001 + 100/10000000000 = 0.1000000011
    - в 7-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 3 или менее значным, тоесть 0.1 + 0.0000000011 + 1000/10000000000 = 0.1000000111
    - в 6-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 4 или менее значным, тоесть 0.1 + 0.0000000111 + 10000/10000000000 = 0.1000001111
    - в 5-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 5 или менее значным, тоесть 0.1 + 0.0000001111 + 100000/10000000000 = 0.1000011111
    - в 4-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 6 или менее значным, тоесть 0.1 + 0.0000011111 + 1000000/10000000000 = 0.1000111111
    - в 3-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 7 или менее значным, тоесть 0.1 + 0.0000111111 + 10000000/10000000000 = 0.1001111111
    - во 2-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 8 или менее значным, тоесть 0.1 + 0.0001111111 + 100000000/10000000000 = 0.1011111111
    - во 1-й позиции токена вероятность появления нуля будет 0.1 + вероятность того, что сгенерированное число будет 9 или менее значным, тоесть 0.1 + 0.0011111111 + 1000000000/10000000000 = 0.1111111111

    Что позволяет однозначно утверждать, что закон распределения в токене не является равномерным, а следовательно закон распределения числа составленного из таких токенов также не является равномерным
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, логика вполне понятная, свой вариант тоже делал опираясь на нее. Но она ошибочная. Именно из-за нулей. Нельзя воспринимать токен с добавленными нулями распределенным равномерно именно по причине того, что в результат он включается вместе с этими нулями. Сейчас доберусь до компа и накидаю небольшой тестик, показывающий неравномерность распределения.
  • Как реализовать случайные числа в большом диапазоне на js?

    lastuniverse
    @lastuniverse
    Rsa97, данный пример не дает равномерного распределения во всем диапазоне значений. Как впрочем и мой. Но мой чуть ровнее будет.

    Внутри каждого токена (группы из 10 цифр) Ваш вариант будет иметь экспоненциальный закон распределения, а в сумме совсем не понятно какой, но точно не равномерный.

    PPS: только сейчас сообразил что jslby имено об этом и говорил, задавая вопрос.
  • Как ограничивать время работы программ в Linux?

    lastuniverse
    @lastuniverse
    Harbid Abu Marhamedoff, делал нечто похожее для своих пацанов. Как показала практика, ничего кроме негатива и нежелания учиться это не дало. Единственный найденный мной вариант - отключил на компе все игры навсегда а для интернета сосздал список разрешенных ресурсов, который вышел достаточно обширным и требует постоянного его расширения.
    Первые 2 недели прошли как в аду, дети скандалили, качали права и отказывались учится. По прошествии месяца у пацанов стали появляться интересы, не связанные с играми и ютуберами. Старший стал больше гулять, изьявил желание ходить на самбо и шахматы, младщий стал мастерить всякие поделки и также пошел на шахматы и робототехнику. Че рез 2 месяца оба стали читать книги, много и с упоением.

    PS: принимая такое решение руководствовался принципом создания у детей информационного вакума и настойчивой потребности у человека данный вакум чем-то заполнять. Под запрет навсегда попали все источники, позволяющие получать детям не качественную информацию, не требующую каких либо мыслительных усилий для ее усвоения (игры, ютуб и прочие видеохостинги и много чего еще)

    PSS: пацанам 9 и 12 лет.
  • Как на нативом уровне происходит создание рандомного числа методом Math.random(), хочу понять смысл - как?

    lastuniverse
    @lastuniverse
    Так же, для более глубокого погимания погуглите запросы ГПСЧ и ГПЧ. Данные алгоритмы (их реализаций множество) позволяют по мимо всего прочего генерить случайные числа по зерну (seed)
  • Какие ресурсы нужно использовать для изучения MongoDB?

    lastuniverse
    @lastuniverse
    Лентюй , Я не из чувства противоречия хочу задать Вам эти вопросы. Просто действительно интересно услышать Ваше мнение и его обоснование.

    на свалку истории монгу отправляйте

    1. Почему, более внятные/развернутые аргументы чем те, что присутствуют в Вашем ответе имеются?

    забудьте про эту поделку

    2. Опять же, почему поделка?
    3. Почему такой негатив?
    4. Могли бы представить примеры/описания ситуаций из своей/чужой практики заставляющие Вас столь категорично высказываться?

    все что умеет монга умеет и затюненная субд

    5. Что такое "затюненная субд"?
    6. Про какие именно возможности монги идет речь?
    7. Наименования "затюненых субд" обладающих теми же возможностями, и примеры имеются?

    монга это любая субд с запросами строго по pk и отрицанием 1НФ

    8. что такое запрсы строго по pk?
    9. почему Вы считаете что 1НФ хороша для всех возможных случаев представления данных?