• Зачем ставить сразу несколько точек останова?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    >> Зачем тогда некоторые программисты при отладке ставят несколько этих breakpoint'ов?
    Например:
    - чтобы узнать какая функция выполнится раньше
    - убедиться, что программа в эти места не заходит при выполнении
    Вы можете и сами придумать как это использовать. В общем, разрешено все, что не запрещено.
    Ответ написан
    Комментировать
  • Почему свойство length начинает считать с единицы, а не с нуля, если в массиве счет начинается с нуля?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Как раз с длиной всё очевидно. length – количество элементов массива:
    []; // сколько элементов? – 0
    ['a']; // сколько элементов: 1
    ['a', 'b', 'c']  // 3

    Индексы начинают с нуля, потому, что индекс – это смещение.
    Исторически, с низкоуровневых языков программирования.
    В памяти под массив выделена некоторая память, начиная с адреса X.
    Последовательно находятся ячейки одинаковой длины. Чтобы найти, где лежит значение i-го элемента, к адресу X прибавляют i * size байт. Самый первый элемент начинается сразу с адреса X. Его индекс 0.

    Так же и со строкой в JavaScript: к буквам можно обращаться по индексу, как к элементам массива.
    "abcd"[1] // "b"
    "abcd"[3] // "d"
    Представьте, что в начале строки стоит курсор. Курсор возвращает букву перед которой стоит. Индекс – на сколько вправо надо этот курсор подвинуть.

    Эта особенность index / length общепринята во многих языках программирования. Так же, как для интервалов часто принято включать начало и исключать конец: [a; b) – например, в методе массива slice(), который вырезает кусок массива, если указать slice(1, 5) — вытащит элементы с индексами 1, 2, 3, 4 – включая 1-й, но не доходя до 5.
    Ответ написан
    Комментировать
  • Как в Mikrotik запретить другим роутерам работать?

    @nApoBo3
    802.1x, остальное обходится без существенных сложностей. Но внедрение 802.1x в сети задача не тривиальная.
    Ответ написан
    Комментировать
  • Почему выдает undefined?

    @dmitriyff
    Слишком мало данных, но посмею предположить, вы мутируете объект, после того как делаете вывод.

    const a = { b: 1 };
    console.log(a);
    a.c = 2;


    если в момент выполнения кода будет открыта консоль, то вы увидите
    {b: 1}
    но если происпектировать объект, то там появится свойство
    c: 2
    Ответ написан
    Комментировать
  • Linux какую файловую систему выбрать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    стандартную ext4
    Ответ написан
    Комментировать
  • Нужно ли эстимейтить больше времени на проект с нуля, если использовать с Reactом Typescript?

    fomenkogregory
    @fomenkogregory
    Юниор софтварный инженер
    Выглядит как будто ты ни разу не писал проект на тсе. тогда выделяй в 3 раза больше времени, пригодится когда будешь гуглить ошибки :)
    Ответ написан
    Комментировать
  • Возможно ли совершать операции с числами больше Number.MAX_VALUE?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    В JavaScript недавно завезли целые числа неограниченной длины: https://learn.javascript.ru/bigint.
    Так что сейчас почти как в Python.
    Ответ написан
    Комментировать
  • Почему не пингуются виртуальные машины?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    в фаерволе наверное
    Ответ написан
    2 комментария
  • Как работает эта часть алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть S = 1 + 2 + ... + n.
    Тогда, по условию задачи,
    a · b = S - a - b
    Зафиксируем a и решим уравнение относительно b:
    a · b + b = S - a
    (a + 1) · b = S - a
    b = (S - a) / (a + 1)
    Вот и получилась ваша формула.
    Ответ написан
    1 комментарий
  • Сколько запросов в секунду может обрабатывать Node.js приложение на 1 ядре?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Странный вопрос но отвечу:
    1. создаете виртуалку максимально похожую на ваше окружение у хостера, например 1 cpu + 512 gb ram
    2. ставите ноду которая у хостера
    3. создаете сценарий тестирования apache jmeter
    Ответ написан
    Комментировать
  • Почему не умножается массив чисел в JS?

    @rostick3123
    tog[i] * 0 = ?..

    замени res2 = 1
    Ответ написан
    Комментировать
  • Почему в оценке сложности алгоритма log n пишется без основания?

    @Dalp
    O(n)-это очень примерная оценка сложности алгоритма. В частности она отбрасывает все константы. Из курса алгебры:
    logan = (logbn)/(logba), logba-константа и её отбрасывают.
    Как видно из этого выражения, основание логарифма в оценке O(n) не имеет смысла.
    Однако чаще всего основание-2.
    Ответ написан
    Комментировать
  • Как вычислить коэффициент уменьшения вписанного в квадрат квадрата под углом n градусов?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Внутренняя сторона x
    Внешняя kx
    В то же время, внешняя это сумма катетов, т.е. xcos(a)+xsin(a).

    Тогда k=cos(a)+sin(a)
    Ответ написан
    Комментировать
  • Как собрать статистику DOM-дерева?

    vabka
    @vabka
    Токсичный шарпист
    Решение не смотрел, но я бы решил "в лоб".
    1. Заводим массив из всех типов элементов (h1, b, div, span итд)
    2. document.querySelectorAll
    3. Профит
    Ответ написан
    Комментировать
  • Почему не работает клонирование?

    qork
    @qork
    { background: #F00B42 }
    Ответ написан
    Комментировать
  • Возможность упаковки кругов в прямоугольник?

    Adamos
    @Adamos
    Взять бумажку.
    Нарисовать пример двух вписанных в прямоугольник окружностей.
    Подумать.
    Заподозрить, что точка соприкосновения окружностей всегда будет лежать на линии, соединяющей их центры. Доказать это.
    Провести линию между центрами окружностей и перпендикуляры от центров к сторонам прямоугольника.
    Сообразить, что нужно просто определить, влезет ли линия между центрами в габариты прямоугольника минус радиусы окружностей...
    Немножко посчитать.
    Ответ написан
    1 комментарий
  • Как сжать массив координат?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Прочитайте про protobuff - возможно это вам поможет.
    Ответ написан
    Комментировать
  • Как редиректить псевдонимы домена через Nginx?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Зачем обходиться одним блоком, если у вас обработка отличается? При прочих равных, лучше сделать отдельные серверные блоки, чем костылить с if`ами.
    Ответ написан
    3 комментария
  • Как сжать строку для отправки через GET-запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Перевести коды в другую систему счисления.
    Например, взяв 64-разрядную систему [0-9a-zA-Z\-_] из 78900 получим jgQ.
    Если все числа укладываются в определённый диапазон, то можно попробовать отказаться от подчёркиваний и записать каждое число с фиксированным количеством разрядов и лидирующими нулями. Тогда, например, 123_78900_44343_4349 преобразуется в 01XjgQaQT13Z
    Ответ написан
    Комментировать
  • Как на javascript замерить время выполнения функции (в наносекундах)?

    Robur
    @Robur
    Знаю больше чем это необходимо
    точное время выполнения одного вызова функции получить довольно сложно.

    во первых - performance.now возвращает дробное число, поэтому там в принципе может быть наносекундная точность. однако стандарт определяет что точность должна быть 5 микросекунд. Плюс браузеры могут специально занижать точность чтобы бороться с некоторыми атаками.

    поэтому правильно вызывать функцию много раз и считать среднее.
    так же в ноде есть process.hrtime которая дает наносекунды.

    оба этих метода "в лоб" не дадут нормального результата. Почему? потому что в реальности происходит много всего интересного при выполнении кода.

    в движке есть неимоверное количество оптимизаций, и функция вызванная 10 раз будет иметь совершенно другой код чем функция вызванная 100 раз. То же касается и типов параметров - например вы можете передавать целые или дробные числа.
    На одну вашу написанную js-функцию движок сгенерирует несколько функций которые это реализуют. У этих функций может быть совершенно разный код с разной произодительностью.

    Переключение происходит на лету и в общем виде вы не знаете когда это происходит.

    поэтому само по себе замерение скорости "функции" имеет мало смысла, так как там их несколько внутри. Если интересны детали - погуглите JIT, AOT и v8 optimizations.
    Сейчас важно то что есть "холодные" функции которые работают медленее но надеждее и как правило используются сразу и есть "горячие" варианты, которые компилятор начинает использовать когда видит что код вызван много раз, и условия не меняются. "Горячие" работают быстрее.

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

    зная это, код можно сначала разогреть а потом померять скорость. скорее всего на разогретом коде будет работать один и тот же вариант.

    или, как вы сказали, запустить его миллион раз (думаю хватит и десятка тысяч), и первые запуски холодного кода не будут особо влиять. Это можно определить по тому как растет производительность с увеличением итераций, в какой-то момент она перестанет это делать.

    И тут самый главный момент - даже если вы замерите эту скорость, что вы будете делать с этим знанием? В реальной программе при выполнении этого кода скорость может быть совсем не такая как вы намеряли. Эти тесты годятся только для своего общего развития

    На практике имеет смысл измерять скорость у функций которые выполняются намного дольше И там где это создает проблемы. погуглите термин "преждевременная оптимизация".
    В этом случае обычно понятно что создает задержки и измерить время работы одного вызова не составляет труда.
    Если же функция работат так быстро что вы не можете понять насколько именно, то вряд ли вам потребуется это выяснять.

    Для практических задач в браузере есть профайлер, если нужно выяснить что же тормозит в конкретном коде, правильнее всего начать с него.
    Ответ написан
    5 комментариев