Задать вопрос
  • Как посчитать количество функций в коде JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Rerurk, а учитывая, что это тестовое к собеседованию, то использование babel/esprima покажет сразу 2 положительных моментов: "умеет гуглить/искать на npm" и "умеет работать с деревьями"
    А вот дай мне решение с обработкой кода на строках, я бы лично резюмировал так: "не использовал инженерного мышления, решил задачу в лоб, не проверил крайние случаи". И да, какое бы решение Вы не написали, работающее на строках - я найду пример кода, на котором оно отработает некорректно.
  • Как посчитать количество функций в коде JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Rerurk, а теперь почитайте внимательно, в вопросе процитирована задача, которую решает автор, и там есть такое:
    Не учитывать вложенные функции
  • Как посчитать количество функций в коде JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    function f() {
      console.log(g());
      function g() {
        return 1;
      }
    }

    Rerurk, по условиям задачи, такую функцию надо пропустить, как такое на строках адекватно решать?
  • Как посчитать количество функций в коде JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Antonio Solo, обход дерева ничуть не сложнее "посчитать количество нулей в факториале"
  • Как посчитать количество функций в коде JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    регулярками
    когда в руках молоток все подозрительно выглядит как гвозди...
  • Как написать регулярку на допуск только цифр и точек?

    bingo347
    @bingo347 Куратор тега JavaScript
    Сергей, 99.99.9999 - это валидная дата?
    А дальше маски пользователь не уйдет.
    это весьма наивно...
    А вообще это типичная ошибка молотка
  • Как работают WebSockets?

    Alex Goncharov, как и с любыми другими данными передаваемыми по сети...
  • Стоит ли использовать везде GraphQL?

    bingo347
    @bingo347 Куратор тега Node.js
    Just Me, если Вы видите только публичное API различных сервисов, которое нацелено на массовое использование и не привязано к конкретным доменам, это не значит, что другого не бывает.
    RPC распространены гораздо больше чем Вы думаете, а их огромное разнообразие говорит лишь о том, что у разных бизнесов разные домены.

    Яркий пример - GitHub. У него есть публичное REST API нацеленное на массового пользователя.
    Но если открыть в devtools вкладку network на самом github.com, то мы увидим RPC в чистом виде
  • Стоит ли использовать везде GraphQL?

    bingo347
    @bingo347 Куратор тега Node.js
    Quty,
    Можете уточнить, что вы подразумеваете под внешним и публичным API? API, предназначенное для клиентов, а не межсервисного взаимодействия?
    Да, это API предоставляемое третьим лицам, деятельность которых лежит за пределами моей компании/домена/другого бизнес-юнита. REST или GraphQL тут выигрывают по 2 параметрам:
    Во-первых, я не знаю доменную область пользователей моего API, и скорее всего таких доменных областей будет столько же сколько и пользователей. А голый CRUD - это самый обобщенный доступ, который можно предоставить к своим ресурсам.
    Во-вторых, это общеизвестные штуки, которые не требуют доп библиотек. У REST тут чуть больше преимуществ, но в будущем думаю все же GraphQL займет лидирующую позицию, так как это полноценный язык запросов не привязанный к транспорту, а REST все же только соглашение привязанный к HTTP.

    Они ограничивают Вас в низкоуровневом CRUD, создавая больше проблем, чем решают

    Если не затруднит, могли бы привести пример? Кажется, речь о том, что CRUD у́же предметной области и последнюю приходится подгонять под этот самый CRUD.
    Когда голый CRUD ходит между частями одного целого (например между клиентским приложением и сервером, или между двумя микросервисами), это говорит сразу о многих болячках:
    1. Все разработчики вообще не знают что они делают, ни доменную область, ни решаемые проблемы, они просто бездумно пилят таски спущенные сверху, скорее всего манагером (менеджером такого назвать - язык не поворачивается), весьма далеким от разработки.
    2. Между людьми, которые делают разные части системы, абсолютно нет коммуникаций, иначе они давно бы уже договорились о некоторых интерфейсах, по которым будут взаимодействовать их части, а не тратили бы уйму человекочасов на написание обобщенных интерфейсов на все случаи жизни.
    3. Нет архитектора, который посмотрел бы на все это сверху и навел бы порядок, заодно сэкономив бизнесу некоторую ощутимую сумму денег.
    4. Инженеров тоже нет, иначе бы давно в конторе не было копирования подходов "как у фейсбука" в бизнес похожий на ФБ как сантехник на балерину.
    5. Денег тоже не особо много, во-первых зажали на архитектора и инженеров, а во-вторых, те на кого не зажали - вместо решения проблем бизнеса решают проблемы своего кода как могут, а еще иногда они выгорают и увольняются, что тоже денег бизнесу не прибавляет.
    6. Код с запашком, в нем много лишнего, в нем огромное число багов, он тормозит, а его поддержка дорожает в геометрической прогрессии каждый рабочий день.
    7. Скорее всего это очередной IT стартап, который загнется через некоторое время, так и не вкурив, что Цукерберг успешен не потому что бросил универ, а потому что придумал нечто новое, ну и деньги у него таки были.

    Но ведь мутации в GQL +- тоже самое, что описание методов в RPC, разве нет? Можно описать метод с любым названием, отражающим суть use-case, который принимает определенный набор параметров и что-то возвращает.
    Нет. При мутации в GraphQL вся бизнес логика сосредоточена в запросе, а сервер должен обработать любой такой запрос - что-то поменять у себя (ну или в 10 базах под собой, и бизнес хочет консистентно... боль...)
    В RPC же вся бизнес логика инкапсулирована в коде сервера, а наружу выставляется лишь публичный интерфейс.

    а так же мой любимый, но почему-то малоизвестный в русскоязычном интернете E/A/?T

    Что-то ничего адекватного по запросу
    rpc entity action target

    не смог найти. Буду благодарен, если поделитесь ссылками на материал.
    В основе лежит глава 20 из книги Роберт Мартин "Чистая архитектура", плюс статья одного блогера, которую я прочел несколько лет назад, ссылку сейчас затруднюсь дать, но идея в том, что любое взаимодействие между частями системы (в том числе сетевое) можно свести к вызову метода (Action) у экземпляра класса (Entity), а нужный экземпляр всегда можно найти по ссылке или id (Target), но Target опционален, так как бывают статичные методы. Если описать это на псевдо языке, будет что-то вроде такого:
    interface Entity {
      // Action без Target
      public static ResultType action(DataType data);
    
      // получение Entity по Target
      public static Entity getEntity(IDType target);
    
      // Action с Target
      public ResultType action(DataType data);
    }
  • В чем превосходство Typescript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Станислав Макаров, WbICHA, к сожалению с IPv6 так не проканывает, TS отказывается вычислять юнион если закодить все возможные форматы
  • В чем превосходство Typescript?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, а если интересно, что под капотом считается, то там что-то вроде:
    7 + 5 => 8 + 4 => 9 + 3 => 10 + 2 => 11 + 1 => 12
  • В чем превосходство Typescript?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, вообще, пример конечно больше синтетический, я его для лекции делал, он наглядно показывает Тьюринг-полноту системы типов, с одной стороны он считает это полностью на типах, с другой - он заставляет компилятор задуматься даже на достаточно мощном железе, особенно если взять числа побольше
  • В чем превосходство Typescript?

    bingo347
    @bingo347 Куратор тега JavaScript
    WbICHA, сложение и вычитание на литеральных типах
    https://www.typescriptlang.org/play?#code/C4TwDgpg...
  • Node Js: "primordials is not defined". Как исправить ошибку?

    bingo347
    @bingo347 Куратор тега Node.js
    Откуда качали ноду? Возможно у Вас неофициальная сборка.
    Вообще ошибка указывает вот на это: https://github.com/nodejs/node/blob/master/lib/fs....
    Данный объект доступен в internal global context, в котором исполняются встроенные модули ноды
    Но стектрейс ведет в зависимости foundation, где есть модуль fs, что выглядит как бага...
  • Что ассимптотически сложнее - линейная или квадрат логарифма?

    Для асимптотики основание роли не играет.

    Александр Скуснов, всегда считал, что в асимптотике именно log2 используется, так как он ложится на двоичную СС примерно так же как log10 на десятеричную.
    Ну и если руками посчитать сложность для merge sort например или бинарного поиска, то там именно логарифмы по основанию 2 выходят
  • Могут ли быть разными значения дочерних и родительских элементов?

    bingo347
    @bingo347 Куратор тега HTML
    правильно ли я понимаю, что в "минус" уйти нельзя?

    c4jn, не совсем. С position: static (это значение по умолчанию) и у родителя и у потомка оно будет так, потомок будет растягивать родителя. Но с другой комбинацией position поведение может быть другим. Поэкспериментируйте с различными сочетаниями position у родителя и потомка.
    Например если вложить position: absolute в position: relative то вполне можно сделать, чтоб у родителя был вообще нулевой размер, но при этом потомок был любого размера.

    Так же еще можно поиграться со свойствами группы overflow, они тоже могут менять это поведение.

    со значениями вьюпорта такие же правила?
    Нет, вьюпорт - это непосредственно область отрисовки страницы, на размеры которой может влиять только пользователь браузера, но не мы из кода. Яркий пример - на большинстве страниц есть скролл из-за того что элемент body не помещается во вьюпорт.
  • Как пробросить порт из встроенной в Windows 10 Ubuntu в саму Windows?

    Дмитрий, Вы видимо упустили из виду мое "во-первых", Ваш сервер должен слушать не 127.0.0.1 (localhost), а все интерфейсы, то есть 0.0.0.0
  • В VS code пробелы между буквами в словах, как это убрать?

    Влад, очень похоже на шрифт, найдите в настройках Editor: Font Family
    По умолчанию вроде как используется системный моноширинный
  • Как сформировать объект из повторяющих значений поля?

    bingo347
    @bingo347 Куратор тега JavaScript
    Сергей, разве что Map гарантирует Вам исходную последовательность, а объект нет.
    Хотя в современном v8 объекты реализованы под капотом через тот же OrderedHashMap, что и Map, так что порядок добавления сохраняют. Однако стоит помнить, что согласно спеке порядок полей в объекте не определен и однажды такое поведение может начать отличаться.
  • Как сформировать объект из повторяющих значений поля?

    bingo347
    @bingo347 Куратор тега JavaScript
    на лаконичный вариант с оператором ||=

    Сергей Соколов, мне почему то кажется, что ??= тут будет уместнее