Задать вопрос
  • Какое оптимальное время въехать в проект?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    От проекта зависит. На моëм проекте например новичкам даже сеньорского уровня до первой простой таски требуется недели две, а выход на 100℅ эффективность занимает 3-6 месяцев.
    Ответ написан
    9 комментариев
  • Как расширить список поддерживаемых единиц путём задавания правил конвертации с помощью JSON файла?

    mayton2019
    @mayton2019
    Bigdata Engineer
    const converter = {
      "m":{
        "cm":{k:0.01	},
        "in":{k:0.254	},
        "ft":{k:0.3048	},
      },


    Тут можно улучшить. Если посмотреть на этот JSON документ с "прищуром". То можно увидеть
    полносвязный граф. Например узел футов ("ft") имеет свое ребро в направлении дюймов ("in").
    И все другие также.

    Нужно ли нам описывать так много цифр? Я-бы предложил одну таблицу. Все меры длины отобразить на метры.
    Тогда формула перехода ft -> in будет всегда идти через метрическую систему. ft -> m -> in.

    А ребра графа мы все равно сможем получить но уже путем вторичных расчетов если надо.
    Ответ написан
    Комментировать
  • Как вывести значение ключа объекта?

    Вывести куда? В вашем примере не прописан сам вывод.
    Также коллбэк в forEach некорректно построен, вы пытаетесь передать в качестве аргумента некий this.balance. Но в функцию вообще нельзя передать аргумент в таком виде. У forEach есть конкретная сигнатура
    array.forEach((element, index, array) => {}) // 2 и 3 необязательные

    Поэтому, по сути, должно выглядеть хотя бы так
    array.forEach((element) => element.balance.startsWith("$1") && console.log(element.balance))


    Также можно деструктурировать, вытащив стразу свойство balance через фигурные скобки:
    array.forEach(({ balance }) => balance.startsWith("$1") && console.log(balance))


    Если же вам нужно получить именно отфильтрованный массив, состоящий из юзеров, чей баланс меньше 2k, то вместо forEach нужно использовать filter, возвращая результат его работы:
    function findBalance (array) {
      return array.filter(({ balance }) => balance.startsWith("$1"))
    }
    console.log(findBalance(users))


    А вообще хранить числа (в т.ч. денежные суммы) в виде строк - это чрезвычайно плохая идея. Лучше распилить свойство balance на два других свойства:
    // Вместо
    { balance: "$1,000.57" }
    
    // Сделать так
    {
      balanceAmount: 1000.57,
      balanceCurrency: '$'
    }
    
    // Или так
    {
      balance: {
        amount: 1000.57,
        currency: '$'
      }
    }


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

    const balance = {
       amount: 1768.67,
       currency: '$'
    }
    console.log(`${balance.currency}${balance.amount.toLocaleString('en-EN')}`);


    А совсем уж по уму будет вот так:
    const balance = {
      amount: 1768.67,
      currency: 'USD'
    }
    console.log(balance.amount.toLocaleString('en-EN', { style: 'currency', currency: balance.currency }));
    Ответ написан
  • Как сделать анимацию кардиограммы?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вообще рисование линий обычно делается через изменение свойств stroke-dasharray и stroke-dashoffset у кривых в SVG. Это самый простой способ в рамках фронтенда, хотя и изначально эти вещи были для другого придуманы. Но в случае с ЭКГ нужна постоянная скорость рисования по горизонтали. Поэтому можно взять прямоугольную маску в рамках той же SVG, и двигать ее в сторону:

    Ответ написан
    6 комментариев
  • Как подростку заработать в 14-15 лет?

    xez
    @xez
    TL Junior Roo
    Задача подростка учиться, что бы зарабатывать не 500р в день, а 500р в час хотя бы.
    Ответ написан
    Комментировать
  • Как можно назвать эту схему?

    Схема подключения/соединения/коммутации "чего-то" (с "чем-то"|и "чего-то")?

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

    PS: Непрошенная критика самой диаграммы

    за такой стиль диаграммы стоит руки отрывать:
    1. Цветные стрелочки, да ещё и с близкими цветами (синий+фиолетовый)
    Цветовая слепота достаточно распространена, чтобы учитывать её.
    Да и "так нужно руководителю" наводит на мысль, что кто-то захочет напечатать её на чб принтере.
    2. Один объект от другого отличается только надписью => нужно внимательно вчитываться
    3. Принципиально разные объекты собраны в кучу
    4. Стрелки очень тонкие и тоже собраны в кучу. Чтобы понять что к чему подключено - приходится играть в детскую игру про нахождение отдельных ниток в клубке.
    Примерно так это воспринимается
    wonder-day-labyrinths-31.jpg

    5. Если важны порты на коммутаторах, то почему не подписаны номера?
    Если порты не важны, то почему они в принципе отображены на схеме?

    Критикуешь-предлагай

    1. Заменил синий на зелёный, чтобы если человек слепой на 1 цвет, то чтобы хотябы только 1 из цветов оказался серым.
    2. Все цветные линии заменил на пунктирные, чтобы в случае цветовой слепоты можно было понять, какие именно линии цветные
    3. убрал выравнивание по вертикали.
    4. Сгруппировал устройства, которые подключены только к первому свичу в группу.
    5. Выделил жирным соединения двумя кабелями. (это же кабели изображены?)
    63a321fdba794668962095.png

    Ответ написан
    3 комментария
  • Как работает оператор &?

    То что вы написали в вопросе и в комментарии к моему встречному вопросу - это две совершенно разные вещи.

    То что в вопросе:
    const myVar = ClassCat & ClassDog;
    Тут работа идёт со значениями и & - это побитовое И.

    А вот кусок кода из вашего пояснения:
    export type CatDocument = Cat & Document;
    1. Это Typescript. В JS нет никакого Export type
    2. Тут работа идёт уже с типами (Не со значениями!). & - это пересечение типов
    CatDocument - это пересечение типов Cat и Document.

    На практике это значит, что переменная, которая имеет тип CatDocument должна иметь все поля из Cat и из Document, если Cat и Document - это объекты.
    Ответ написан
    Комментировать
  • Как работает функция внутри компонента и за его областью видимости?

    @wyctpukkk Автор вопроса
    Вопрос снят, во время перерисовки компонента, создается новый ТестДебаунс, поэтому надо вынести его за компонент.
    Ответ написан
    1 комментарий
  • Как сделать вывод больших цифр в формате число умноженное на 10 в степени?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    <?php
    $num = 12345678900000000;
    
    $pow = floor(log10($num));
    
    echo  $num / pow(10, $pow) . ' * 10^'.$pow;


    https://phpize.online/s/aU
    Ответ написан
    1 комментарий
  • Как правильно импортировать модуль js в js без html?

    @wakenbyWork
    Если не используется сборщик, то лучше его взять. Могу посоветовать esbuild. Не знаю вашей задачи, можно и vite, у него под капотом esbuild

    Если используете уже что-то, хоть тот-же webpack. То нужно понять почему не работает. Указано ли "type": "module" в package.json

    Если нет возможности использовать сборщик, то вот обходной путь, но это такое себе:

    config.js
    export const options = {
      foo: 'bar'
    }


    main.js
    import("./config.js").then((res) => {
      const { options } = res;
      console.log(options.foo);
    });


    Или даже так:

    const initApp = async () => {
      const { options } = await import('./options')
    
      console.log(options)
    }
    
    initApp()
    Ответ написан
    1 комментарий
  • Почему функция возвращает массив с теме же данными?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Потому что Вы не прочитали документацию по методу.

    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Возвращаемое значение
    Массив, содержащий удалённые элементы.


    Соответственно, return [].splice() возвращает массив из элементов, которые были удалены.
    А ещё метод - деструктивный. То есть меняет исходные данные. arrayTaskOne, объявленный вне функции, изменился, а это не хорошо.
    Почему не хорошо? Гуглите по теме: чистые функции, сайд эффект
    Ответ написан
    Комментировать
  • Какой алгоритм быстрее и почему?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Ваш алгоритм быстрее. Но в задаче часто бывает сработает не только самый быстрый код. Например, если там чисел всего 10 в массиве, то вы никакими измерениями разницу между сортировкой и вашим решением не намеряете (если только не запустите оба решения миллионы раз. Но это же уже другая задача. Ваша задача - найти минимальные 2 числа в одном массиве и ограничение по времени, если и есть, будет считаться по одному массиву)

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

    В вашем алгоритме еще проблема, что не очевидно, почему он работает. Надо аккуратно рассматреть все 6 случев расположения arr[0], arr[1] и numbers[i] и убедиться, что инваринат "2 минмальных числа лежат в arr" поддерживается. Тут легко накосячить, перепутать 0 и 1, не там проверку поставить и все.

    Обычно, когда такой алгортм реализуют, поддерживают более строгий инвариант "минимальное число в arr[0], следующее минимальное число в arr[1]". Тогда проверки чуть чуть упрощаются и за логикой решения следить проще.
    Ответ написан
    1 комментарий
  • Почему ResNet дает слишком хорошие результаты?

    Maksim_64
    @Maksim_64
    ML Engineer
    На практике такие метрики могут означать лишь одно вы тренируете и тестируете на одних и тех же данных. Первое место для проверки
    test_dataset = ASDataset(client_file="raw/client_train_raw.txt", imposter_file="raw/imposter_train_raw.txt", \
        transforms=preprocess)
    train_dataset = ASDataset(client_file="raw/client_test_raw.txt", imposter_file="raw/imposter_test_raw.txt", \
        transforms=preprocess)
    train_dataloader = DataLoader(train_dataset, batch_size=128, shuffle=True)
    test_dataloader = DataLoader(test_dataset, batch_size=128, shuffle=True)

    второе место для проверки естественно сам класс DataLoader.
    ну и третье сами файлы что бы по запарке они не содержали одно и тоже содержимое.

    В каком случае возможны такие метрики ну например данные на которых вы учитесь в них входная переменная это температура в цельсии а то что нужно "предсказать" температура в фаренгейтах. Ваши тестовые данные по структуре такие же но сам датасет алгоритм никогда не видел. На тех данных что алгоритм тренировался он благополучно выучит школьную формулу перевода из цельсии в фаренгейты и справится со 100 точностью. По простой причине в данная проблема состоит только из детерминистической составляющей, т.е вариативность отсутствует. (Данный пример специально примитивен. Это может и Unsupervised Learning это может задача где на вход "features" пойдут десятки переменных и.т.д лишь бы отсутствовала вариативность). Подобные примеры как этот будут выдавать такие метрики.
    Ответ написан
    Комментировать
  • К чему относятся эти "приемы"?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    К чему относятся эти «приемы»

    К "модульной архитектуре". Правда не понятно что подразумевается под "и т.д."

    Webpack

    Лишь сборщик. Не безальтернативный. Помогает собирать проект и используемые модули в единый бандл, или на несколько чанков (пакетов), которые потом улетают в продакшен. Разделение на чанки для того, чтобы пользователь грузил только то, что нужно для текущей страницы.

    Npm

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

    что именно мне нужно учить

    Модули, в частности, es6 модули, это если хотите понимать что действительно происходит.

    Но если детали Вам не интересны, то всё очень на самом деле просто.
    Представьте что один файл вам предоставляет функции(то есть делает export из себя), а в другом файле Вы эти функции потребляете(то есть делает import в себя). А нужно это, чтобы написать какой-то модуль один раз, и потом переисползовать. А не делать постоянно ctrl+c - ctrl+v. Вот и всё.
    Ответ написан
    4 комментария
  • Как правильно находить готовые коды, плагины на разных языках?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Мда. С такой грамотностью далеко не уйдёшь... ПредпрИниматель...
    Я дам простой ответ - предприниматель сам должен уметь находить ответы на вопросы, которые ты здесь задаёшь.
    Ты занимаешься не своей работой."Куски кода искать" должен не руководитель, а разработчик, это его работа и его профессия, за это ты платишь ему деньги
    Ответ написан
    5 комментариев
  • Как сделать динамическую длину ключей для обращения к объекту?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Как, имея массив ключей, достучаться до соответствующего им вложенного свойства:

    const nested = {
      _keys: arr => arr
        .flat(Infinity)
        .flatMap(n => typeof n === 'string' ? n.split('.') : n),
    
      get(obj, ...args) {
        return nested._keys(args).reduce((p, c) => p?.[c], obj);
      },
      set(obj, ...args) {
        const val = args.pop();
        const keys = nested._keys(args);
        const key = keys.pop();
        return keys.reduce((p, c) => p[c] ??= {}, obj)[key] = val;
      },
    };

    В вашем случае применять так: nested.set(this.data, args, value);.

    А вообще, ключи можно указывать в довольно-таки произвольном виде, например:

    nested.get([], 'constructor.prototype', [ 'at', [[[ 'name' ]]] ], 'length') // 2
    Ответ написан
    Комментировать
  • Нужно в js создать таблицу 10 на 10 чтобы 1 шли по диагонали. Остальное 0?

    Seasle
    @Seasle Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Существует ли быстрый алгоритм поиска общих подстрок во множестве больших строк?

    begemot_sun
    @begemot_sun
    Программист в душе.
    В grep реализовн умный алгоритм поиска вхождения подстроки в строку. А именно берется фрагмент строки по длине равный подстроке и сравнивается последний символ. Если символ совпадает с подстрокой, то сравнивается предпоследний, и т.д. если на каком-то этапе символы разные -- то сразу указатель текущей работы перемещается на + длина_искомой_подстроки .. т.о. можно увеличить производительность в N-раз.

    https://www.gnu.org/software/grep/manual/grep.html... -- там в конце есть список алгоритмов, может поможет.
    Ответ написан
    Комментировать