• Как типизировать reduce через call?

    Alexandroppolus
    @Alexandroppolus
    кодир
    const v = ([''].reduceRight<string[]>).call(
        String(v1 + v2), 
        (acc, val) => {
            acc.push(val)
            return acc
        }, []
    )
    Ответ написан
    5 комментариев
  • Чем отличаются нативные модули от ванильных и в чем проблематичность нативных?

    Lynn
    @Lynn
    nginx, js, css
    Почему нативные модули не так просто скомпилировать под любой контроллер?

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

    В нативных модулях добавлены куски из других языков или как это происходит?

    Да. Обычно на C/C++, но может быть что угодно, Rust, Go, да хоть ассемблер.

    И как в npm понять, какие модули ванильные, а какие нативные?

    Обычно это в документации написано, но формально никак пока не попробуешь поставить.
    Ответ написан
    1 комментарий
  • Как правильно прочесть все файлы из папки без сильной нагрузки на сервер?

    можно обрабатывать фотки синхронно по очереди, можно обрабатывать несколько сразу. но для этого нужно еще написать асинхронный код, как я понимаю
    нагрузка на сервер будет, но возможно не критичная. можно потестировать. если нагрузка большая, то провести процедуру, когда у приложения меньше всего пользователй
    Ответ написан
    5 комментариев
  • При использовании методов добавления элементов в массив он под капотом создается заново?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?
    Про скорость ответили, скажу про логику: она у этих операций разная. В первом случае создаётся новый массив, во втором изменяется существующий. Это важно, если важна иммутабельность, как, например, в Реакте.
    Ответ написан
    Комментировать
  • При использовании методов добавления элементов в массив он под капотом создается заново?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Т.е. операции по типу [[...arr], value] так же сработают по скорости и логике, как arr.push(value)?

    Нет. push быстрее.

    А если чуть более детально, то под капотом это выглядит примерно так:
    - Вы объявили пустой массив. Движок зарезервировал память на массив из 10ти(разные движки могут под разную длину массива резервировать место) элементов.
    - Делаете пуш. Пока элементов меньше чем зарезервировано - всё очень быстро, так как движок просто кладёт элемент в зарезервированную ячейку памяти, адрес которой известен.
    - Как только элементов стало больше, под капотом ищется новая доступная область памяти на ещё 10 элементов и далее эти области памяти линкуются между собой (первая + вторая).

    В случае же со spread [...array] каждый раз создаётся новый массив, то есть каждый раз происходит поиск доступной памяти на массив + перебор массива для того чтобы заспредить его.

    Примерно так.
    Ответ написан
    2 комментария
  • К какому шаблону относится оформление свойств через нижнее подчеркивание?

    meusov11
    @meusov11
    По сути никакому.

    Использование нижнего подчеркивания перед именем переменной, такого как наприме р this._data, является соглашением в некоторых языках программирования, включая JavaScript. Это не является частью синтаксиса языка или специальной функциональностью, а скорее соглашением об именовании, указывающим на то, что переменная является "приватной" или "внутренней" для твоего класса

    В js вообще нет строгой приватности для переменных или свойств классов. Все свойства и методы класса по умолчанию доступны извне объекта. Использование символа _ перед именем переменной или свойства служит как некий сигнал или подсказка для других разработчиков о том, что эта переменная или свойство предназначены для внутреннего использования и не следует напрямую обращаться к ним извне класса.

    Таким образом, this._data в вашем примере указывает на то, что _data предполагается использовать только внутри класса User. Если бы использовалось this.data без символа _, это могло бы дать впечатление, что свойство data предназначено для публичного доступа извне класса.

    Еще разрабы документируют такие соглашения и указывают на то, что свойства или методы с символом _ перед именем предназначены для внутреннего использования. Это может быть указано в комментариях или в документации класса.
    Ответ написан
    8 комментариев
  • Есть отличие для нагрузки видеокарты для игры в 2к и просмотре видео в 2к?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    нет

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

    так что отличие есть

    ты и сам должен понимать - на старых фильм тоже идет, а игры - нет
    Ответ написан
    2 комментария
  • Существует такое понятие, как "Ассоциативный список"?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Я бы это назвал списком режимов. Ассоциативный список - это что-то самопротиворечивое. У вас же просто список пар значений.
    Ответ написан
    Комментировать
  • Существует такое понятие, как "Ассоциативный список"?

    @igor6130
    Ну оно так и называется: ассоциативный массив, словарь, объект или даже карта.
    Ответ написан
    Комментировать
  • Существует такое понятие, как "Ассоциативный список"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как всегда непонятен контекст. На каком языке автор пишет? Единого ООП не существует.
    Тебе по смыслу подходит много вариантов. Вернуть коллекцию пар. Вернуть мапу.

    Вот бери что по душе.
    public Iterable<Pair<String,String>> takeListOfPairs();
    
    public Map<String,String> takeMap();
    Ответ написан
    Комментировать
  • Как работать с обновлением в инпуте при сортировке элементов?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Не обновляйте данные, пока фокус не будет потерян. Типа, v-model.lazy.

    Или можете слушать событие input и дёргать метод focus у поля ввода, это заставит (ну, такое должно быть поведение по умолчанию) браузер выполнить прокрутку к элементу (если вдруг недостаточно, можно перед фокусом ещё и scrollIntoView вызвать). Типа так.
    Ответ написан
    1 комментарий
  • Как правильней хранить и обновлять JWT для аутентификации?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Каждый JWT-токен это три блока - заголовок, полезная нагрузка и подпись. В заголовке хранится информация о самом токене (срок жизни, алгоритм подписи). Полезная нагрузка - информация приложения. Подпись - зашифрованный хэш первых двух частей. В распределённых системах выдавать токен может сервер авторизации, а использовать любой другой сервер. В таком случае подпись может быть асимметричной, закрытый ключ для подписания, открытый для проверки.

    Токены выдаются парой, рабочий + обновления.

    Рабочий токен выдаётся на короткое время (минуты - десятки минут). Внутри содержится срок окончания действия токена, идентификатор пользователя, его права, какая-то информация для минимизации обращений к БД по данному пользователю. Токен на сервере не сохраняется.

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

    1. Клиент аутентифицируется/авторизуется на сервере со своим логином/паролем.
    2. Сервер генерирует пару токенов, короткоживущий рабочий и долгоживущий для обновления. Токен обновления записывается в БД.
    3. Клиент присылает запрос с рабочим токеном.
    4. Сервер проверяет токен.
    4а. Токен действительный и неистекший, сервер отвечает на запрос.
    4б. Токен действительный, но истекший, сервер сообщает о необходимости обновления токена.
    4в. Токен недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    5. Клиент присылает токен обновления.
    6. Сервер проверяет токен, в том числе и в БД.
    6а. Токен обновления недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    6б. Токен обновления действительный, но в БД отсутствует, сервер удаляет все токены обновления этого пользователя из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6в. Токен обновления действительный, но просроченный, сервер удаляет этот токен из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6г. Токен обновления действительный, непросроченный, в БД присутствует. Сервер удаляет этот токен из БД, генерирует новую пару, записывает новый токен обновления в БД и отправляет токены клиенту (на п.3).
    Ответ написан
    Комментировать
  • Как правильней хранить и обновлять JWT для аутентификации?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ваш токен это просто шифрованная строка и всё. Таблица под токены тоже должна быть простая, id, token и id юзера (Или кого-то другого, кому он принадлежит). Далее вы получаете откуда-то этот токен, а так же должны получить данные, кто его отправил.

    Для примера, у вас юзер будет переходить куда-то по этому токену и он будет отображаться в url.

    Далее вы проверяете id юзера (Или кого-то другого) и сам токен. Теперь делаете вывод, правильный ли токен был передан по url.

    Другая ситуация, когда у вас нет id юзера а есть просто токен. Тогда вы можете по БД проверить, какой юзер ДОЛЖЕН был перейти по этому токену.

    Воспринимайте токен как пароль
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Неверно поняли.

    Разве не видели никогда в продаже матерей с разводкой, но без распаянных элементов? Сделать чуть больше мать и дать пустовать месту дешевле, чем делать две матери с более плотной компоновкой (когда счет идет на миллионы штук).

    Так и здесь. Кристаллы идут с одного и того же источника. Только некоторые "первого сорта" - и они будут i7, а некоторые - "второго" - и они будут i5. Там нет "больше-меньше", там есть только кристаллы, которые выросли получше и похуже. Стоимость производства процессоров огогошеньки какая...
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?


    Почему в i5 тогда не добавляют больше быстрой процессорной памяти или не сделают некоторые модели i7 без встроенной карты и таким же количеством ядре, но с большим кэшем

    Потому что технологический процесс такой, что младшие модели/модели без видеоядра получаются путём отключение кусков чипа из старшей модели, в которой есть всё.

    Либо видеоядро добавляется как отдельный чип.

    Делать отдельную производственную линию, чтобы получить более мощные процы без видеоядра тупо не выгодно.
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    Melkij
    @Melkij
    PostgreSQL DBA
    Потому что это одни и те же кристаллы. Зачем разрабатывать и производить много разных модификаций кристаллов, если можно взять один и тот же, включать/отключать некоторые блоки, заодно тем самым уменьшая общую отбраковку.

    Ведь память это же самое дешевое, что можно сделать на кристалле?

    Это как раз обычно самое дорогое - самый большой по площади регион. Больше площадь = меньше кристаллов с пластины. Больше площадь кристалла = выше риск получения брака у каждого из кристаллов. Меньше исправных кристаллов = выше стоимость каждого.
    Ответ написан
    Комментировать
  • Почему процессоры без встроенной карты не быстрее процессоров со встроенной?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    i5 без встроенной видеокарты, как я понял i7 со встроенной

    Поняли не правильно. И те и те есть как со встроенной, так и без нее.

    Значит в i5 больше свободного места из-за наличия меньшего количества ядер и нет встроенной карты

    Нет. Это точно такой же чип, как и i7, только "не такой удачный". Поэтому на заводе его дефектуют и отключают на аппаратном уровне неудавшиеся ядра. Ничего добавить на этом этапе в чип уже не получится.
    Ответ написан
    4 комментария
  • Как можно закодировать строку в JS?

    TMProject
    @TMProject
    Frontend developer React/Redux
    Посмотри в сторону вот этой библы. Она и под js и под пыху есть.
    Ответ написан
    Комментировать
  • Как сделать кнопку в фиксированном положении внизу экрана до момента скролла до ее реального нахождения внизу блока?

    MrDecoy
    @MrDecoy Куратор тега CSS
    Верставший фронтендер
    .btn {
      position: sticky;
      bottom: 10px
    }


    Но так кнопка будет прокручиваться только в рамках своего родителя.

    Иначе на js.
    Гуглите то же самое.
    sticky.js
    Ответ написан
    Комментировать