• Как учиться быть руководителем?

    Griboks
    @Griboks
    В отличии от программирования и подобных специальностей существуют три базовых способа изучить искусство управления:
    1. вуз
    2. специальные курсы + сертификация
    3. госты+стандарты+книги для расширенного понимания первых двух

    p.s.
    Alexander Lamdan утверждает, что
    Научиться быть руководителем это почти никак. Нужно к этому идти.


    Замечу, что это в корне неправильный подход, который ведёт к самодурству, неэффективной организации труда и коррупции. Вы действительно должны выработать свою точку зрения, но делать это самостоятельно и изолированно от обширных накопленных человечеством знаний займёт слишком много времени и других ресурсов - это путь в никуда для управленца.
    Ответ написан
    7 комментариев
  • Как получить новый объект с посчитанными суммами?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    const out = items.reduce((acc, {id, price}) => {
      const key = obj[id]
      if (key) { // проверяем что элемент с таким id нас вообще интересует
        if (acc[key]) { // если он встречался ранее, то добавляем к текущему значению
          acc[key] += price
        } else { // иначе запоминаем с текущей ценой
          acc[key] = price
        }
        acc.total += price // и всегда добавляем к total
      }
      return acc
    }, { total: 0 })
    Ответ написан
    Комментировать
  • Можете опознать хэш функцию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это не хэш, это UUID Version 4 Variant 1, полностью случайно генерируемые значения за исключением кодов версии и варианта.
    Ответ написан
    1 комментарий
  • Как вычислить мат.выражение представленное в виде дерева?

    Раз тут уже посчитаны приоритеты вычисления - просто рекурсивно проходишься по каждому узлу, вычисляя его.
    Ответ написан
    Комментировать
  • В чем можно хранить около триллиона значений key=>value?

    @rPman
    ключ 49 бит - log(66^8) - пусть для простоты 8байт, значение 32 байта (у тебя там hex строка)
    только на значения тебе нужно 30 терабайта на каждый триллион - 32*10^12 и даже в идеальном случае еще 16тб на индекс ключа (чем больше оптимизируешь хранение тем больше операций на чтение и запись каждой)

    Недавно была статья на хабре про тесты производительности работы mssql с похожими ключами миллионы записей

    Я бы предложил схему с самописным индексом (мне кажется тут колхозить идеальнее всего).
    * делишь ключ на 2 части (если бы ключ был не такой равномерный, то нужно было бы брать хеш от него), например по 4 байта
    * младшие 4 байта (они наиболее равномерно будут распределены) - это номер блока в общем хранилище (на 1 триллион примерно 9кб, рекомендую. 16кб или 32кб, ssd на таких кластерах идеально работают), с массивом элементов: каждый из которых это вторые 4 байта ключа (старшие байты) + 32 байта искомое значение
    для 16кб блока итоговое хранилище будет 70 тб - 2^32*16кб, можно прямо в дисковое устройство писать без файловой системы, по дискам пусть какой-нибудь рейд 0 раскидывает
    * последняя запись в 16кб блоке - ссылка на дополнительное хранилище переполнений неравномерного распределения, его можно организовать как хочешь, на отдельном носителе

    Итого на каждый запрос ты делаешь ровно одно чтение 16кб блока с диска, в полученном массиве ищешь нужный ключ и получаешь значение (если нет значит переполнения из-за неравномерного заполнения индекса, топать в дополнительное хранилище), кстати можно читать по секторно в процессе поиска, тогда если диск сумеет это оптимизировать будет 2х профит. Запись то точно так же - 1 чтение 16кб и запись 1 сектора диска, дозапись в массив. Кстати, если контролировать порядоковый номер ключевого значения (а что то мне говорит там будет простой перебор всех паролей) то будет последовательная запись блоков на диск, для hdd это идеальная ситуация. Иначе всю оперативную память используешь как самодельный lazy write буфер, при переполнении записываешь его на диск, отсортировав согласно дисковым устройствам и отсортировав порядок номеров секторов (тогда либо понимать как работает рейд либо самому раскидывать по дискам), операционные системы и контроллер диска это умеют но у них кеш маленький.

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

    Добавь еще один уровень, будет 2 чтения по 8-16кб (когда ты не на 2 части делишь ключевое значение а на 3, первая часть ссылается на список ссылок на вторую часть, которые уже ссылаются на блоки с третьей частью), можно уменьшить этот оверхед но мне кажется скорость в твоей задаче важнее, ведь она упадет в два раза.
    Универсальные базы данных делают многоуровневые древовидные индексы (это настраивается) и ради удобства и универсальности ты теряешь в скорости.
    Ответ написан
    3 комментария
  • Как изменить состояние полей в массиве объектов, которые совпадают с id'шниками в другом массиве?

    Seasle
    @Seasle Куратор тега React
    setCells((current) => current.map((entry) => ({
        ...entry,
        win: arr.includes(entry.id)
    })));
    Ответ написан
    Комментировать
  • Какое оптимальное время въехать в проект?

    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, объявленный вне функции, изменился, а это не хорошо.
    Почему не хорошо? Гуглите по теме: чистые функции, сайд эффект
    Ответ написан
    Комментировать
  • Можно ли во vue отобразить один и тот же компонент несколько раз?

    @deliro
    Привяжи их к одному стейту и будет тебе два тех же
    Ответ написан
    2 комментария
  • Какой алгоритм быстрее и почему?

    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
    Data Analyst
    На практике такие метрики могут означать лишь одно вы тренируете и тестируете на одних и тех же данных. Первое место для проверки
    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" пойдут десятки переменных и.т.д лишь бы отсутствовала вариативность). Подобные примеры как этот будут выдавать такие метрики.
    Ответ написан
    Комментировать