• Зкмена символа @ в href?

    HardBot
    @HardBot
    back-end, front-end developer
    document.querySelectorAll('a').forEach(a => a.setAttribute('href', a.getAttribute('href').replace(/@/, 't.me/')))
    Ответ написан
    3 комментария
  • Существует ли способ проверить является ли заданная строка корпоративным email или нет?

    Adamos
    @Adamos
    Примерно у половины российских ООО корпоративный (он же единственный) email - на mail.ru, том же Яндексе, реже - gmail.
    Ответ написан
    Комментировать
  • Какие есть аналоги ssh клиентов MacOS?

    Noizefan
    @Noizefan
    Termius самый удобный как по мне.
    Ответ написан
    Комментировать
  • Как делают такие интерфейсы и навешивают события?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Скорее всего, через всплытие событий.
    Ответ написан
    Комментировать
  • Сколько комбинаций из цифр 5678?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы имеете ввиду сколько перестановок возможно без замены то есть если я использовал например 8 то все я не могу использовать 8 снова. Логика следующая у вас есть 4 позиции _,_,_,_ на первую вы можете сколько вариантов подставить вы имеете на выбор 5, 6, 7, 8 то есть 4. Вы имеете 4,_,_,_. Теперь выбираете из 3 чисел. 4,3,_,_ и по той же логике получаете 4*3*2*1.
    Ответ написан
    Комментировать
  • Как учиться быть руководителем?

    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 комментарий
  • Как вычислить мат.выражение представленное в виде дерева?

    vabka
    @vabka
    Токсичный шарпист
    Раз тут уже посчитаны приоритеты вычисления - просто рекурсивно проходишься по каждому узлу, вычисляя его.
    Ответ написан
    Комментировать
  • В чем можно хранить около триллиона значений 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р в час хотя бы.
    Ответ написан
    Комментировать
  • Как можно назвать эту схему?

    vabka
    @vabka
    Токсичный шарпист
    Схема подключения/соединения/коммутации "чего-то" (с "чем-то"|и "чего-то")?

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

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

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

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

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

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

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

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

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

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

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