• Чем отличаются эти две записи?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    в 1 случае Вы сразу создали новый объект на основе прототипа AllElemetsParent и присвоили его в переменную CreateNewElement
    во 2 случае, вы присвоили свойству prototype объекта CreateNewElement ссылку на то что хранится в AllElemetsParent, если CreateNewElement - функция, то при вызове ее с оператором new будет создаваться новый объект на основе прототипа AllElemetsParent, он поступит в функцию как объект this и будет возвращен оператором new
    Ответ написан
    Комментировать
  • Как установить модуль Node.js на машине без интернета?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Для начала теория:
    1. Сам репозиторий npm располагается по адресу https://registry.npmjs.org/
    работает он по принципу http+rest+json
    2. Метаданные конкретного пакета можно получить по адресам:
    https://registry.npmjs.org/$package
    https://registry.npmjs.org/$package/$version
    где $package - имя пакета, $version - нужная версия или latest для самой последней
    3. в методанных по адресам https://registry.npmjs.org/$package/$version обязательно присутствует объект dist содержащий поля shasum (контрольная сумма архива) и tarball (ссылка на сам архив упакованный tar+gz), качаем архив по ссылке, при необходимости проверяем контрольную сумму
    4. там же могут содержаться объекты dependencies и devDependencies, формат как в файле package.json

    Базовую теорию рассказал, начать с этим писать свой npm/yarn уже можно, но не нужно
    Действуем:
    1. Пишем скрипт, который выкачивает tarball пакета и всего дерева его зависимостей и запускаем на машине где есть интернет
    2. Копируем все это на целевую машину
    3а. Устанавливаем все пакеты как расписал Константин Китманов через npm install ./package.tgz
    Однако npm может опять же захотеть интернет, чтоб подтянуть зависимости, поэтому:
    3б. Делаем установку вручную:

    в папке проекта создадим node_modules:
    mkdir node_modules

    распакуем туда архивы, package меняем на имя пакета, version - на версию:
    tar -xzf package-version.tgz node_modules/package

    если у нас при подтягивании зависимостей получилось 2 версии одного пакета, то старшую ложим в свой node_modules а младшие в node_modules тех пакетов, которые затребовали такую версию

    некоторые пакеты потребуют компиляции c++ части, тут понадобится python2 и build-essential в системе, которые можно поставить из deb пакетов (как выдернуть deb пакет из любого репозитория apt расписывать не буду, там принципы похожие), для компиляции достаточно запустить:
    npm build path/to/unpacked/package
    Ответ написан
    Комментировать
  • Как разместить картинку как на макете?

    bingo347
    @bingo347
    Crazy on performance...
    /*блок родителя*/
    .parent-block {
      position: relative;
      width: 100%;
      max-width: 1330px;
      margin: auto;
    }
    /*блок картинки*/
    .image-block {
      position: absolute;
      right: 0;
      transform: translateX(60%);
    }
    Ответ написан
    Комментировать
  • Выбор ОС, какая для программиста?

    bingo347
    @bingo347
    Crazy on performance...
    хочется подтянуть знания unix систем

    Gentoo, обязательно с кастомной сборкой ядра по принципу выкинуть все что не нужно, добавить нужное

    Ну а так, для новичка, я бы выбирал между Linux Mint + Cinnamon и Deepin + DDE

    Fedora, Ubuntu, CentOS, openSUSE

    Fedora - тестовый полигон RedHat, имхо но даже Arch стабильнее...
    Ubuntu - неплохой выбор для начала, посоветованый мной Mint сделан на основе нее
    CentOS - взяли федорино горе, допилили все то г., что RH толкает за бабки... на десктопе не юзал, ибо на серверах ее хватило по уши...
    openSUSE - будет лучшим выбором, если Вы в отличии от меня сторонник rpm/yum (я лично предпочитаю dpkg/apt, хотя нет, лучше emerge ничего так и не придумали)
    Ответ написан
  • Alpine или kali linux?

    bingo347
    @bingo347
    Crazy on performance...
    kali - дистр основанный на debian, основная цель - предоставить из коробки набор по для тестирования безопасности и вскрытия уязвимостей, вообщем то все это можно получить и на обычном debian при желании, и на любом другом linux
    alpine - если не ошибаюсь самостоятельный дистр, направленный на минимальность затрачиваемых ресурсов, сам по себе, на мой взгляд, не особо то жизнеспособен, разве что на встраиваемых системах, но имеет большую популярность благодаря проекту docker с его идеологией "1 контейнер - 1 сервис"
    Ответ написан
    Комментировать
  • Как вызвать два setTimeout в цикле?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    function delay(t) {
      return new Promise(resolve => setTimeout(resolve, t));
    }
    //...
    clients.reduce((p, {person, city, sum}, i) => p.then(() => delay(10000 * (i + 1))).then(() => {
      //show code
    }).then(() => delay(15000 * (i + 1))).then(() => {
      //hide code
    }), Promise.resolve());
    Ответ написан
    Комментировать
  • Как написать функцию выбора и возврата рандомного цвета?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    function randColor() {
      var c = Math.floor(Math.random() * 0xffffff).toString(16);
      if(c.length < 6) {
        c = '0'.repeat(6 - c.length) + c;
      }
      return '#' + c;
    }
    Ответ написан
    Комментировать
  • Linux Ubuntu, Mint как избавится от локализации в консоле?

    bingo347
    @bingo347
    Crazy on performance...
    alias git='LANG=en_US.UTF-8 git'
    в .bashrc
    Ответ написан
    Комментировать
  • Откуда пошло разделение терминов с Client-side и Server-side на Front end и Back end?

    bingo347
    @bingo347
    Crazy on performance...
    "Client-side и Server-side" и "Frontend и Backend" - это абсолютно разные и никак не связанные понятия

    Клиент - это приложение, которое делегирует часть своего функционала другому приложению - серверу
    Сервер - это приложение, которое обслуживает множество клиентов, предоставляя им свой функционал
    Frontend - это часть приложения, отвечающая за интерфейс (GUI, CLI, etc.), то есть то, что непосредственно видит пользователь, с чем пользователь взаимодействует
    Backend - это часть приложения, отвечающая за бизнес логику, за фоновые задачи, за то что скрыто от пользователя

    Практически любое приложение содержит backend часть, не зависимо от того клиент оно, сервер или вообще работает без клиент-серверного взаимодействия
    frontend часть может содержать как клиент, так и сервер, хотя сервера содержат ее не часто
    Яркий пример - X.org (сервер GUI в Linux и некоторых других *nix системах) содержит frontend часть - рисует на экране, получает пользовательский ввод (клавиатура, мышь, джойстик, etc.), а простейшие WindowManager (например awesome), являющиеся клиентами по отношению к X.org, frontend части не содержат

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

    P.S. Еще про web, а конкретно про его клиентскую часть, то есть браузер:
    Когда пишем html, css - это frontend (пусть "чистые" верстальщики порадуются)
    Когда пишем js код взаимодействующий с DOM, CSSOM, рисующий на Canvas - это frontend
    Когда в js обрабатываем пользовательские события (keyup, click, focus, touchstart, etc.) - это frontend
    Когда на js производим расчеты, проверки ввода, вешаем таймеры, работаем с локальными хранилищами, отправляем ajax запросы - это backend
    Когда обрабатываем такие события как load, message, DOMContentLoaded - это backend
    Код работающий в WebWorker'е - это backend
    Продолжать можно долго, суть думаю ясна
    Ответ написан
    Комментировать
  • Не работают свойства добавленного класса?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    в css перед is-active пропущена точка
    Ответ написан
    Комментировать
  • Что за ошибка "unexpected token: result"?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В комментах нашли с топикстартером решение, в виде указания версии ecma линтеру:
    "parserOptions": {
            "ecmaVersion": 2015,
            "sourceType": "script"
    }
    Ответ написан
  • Правда ли, что Node.js работает только с одним ядром процессора, и что с этим делать?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Используйте pm2 на продакшене
    Он запустит Ваше приложение в кластере (настраивается конкретное количество процессов или по числу потоков cpu)
    Будет следить за потребляемой памятью и загрузкой процессора
    Сделает рестарт упавшего процесса
    Будет собирать логи (console.log, console.error), с плагинами можно настроить ротацию
    С плагинами можно прикрутить CI для пересборки и перезапуска проекта по webhook в git
    Ну и много чего еще
    Ответ написан
    3 комментария
  • Можно ли настроить автопрфикс для имён классов во vue-loader?

    bingo347
    @bingo347
    Crazy on performance...
    <template>
    <div :class="$style.component">
       <div :class="$style.element"></div>
       <div :class="$style['another-element']"></div>
    </div>
    </template>
    
    <style module>
    .component {}
    .element {}
    .another-element {}
    </style>


    module, в отличии от scoped, меняет имена классов на уникальный хэш, и выкидывает его в объект vm.$style
    селекторы получаются мега легковестные
    Ответ написан
    4 комментария
  • Как быть, если отключен javascript на клиенте?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Как показывает практика, юзеры с отключенным js денег через сайт не приносят, а следовательно тратить на них человекочасы просто не рационально с точки зрения бизнеса
    Посмотреть контент или предложение такой юзер вполне сможет за счет ssr, захочет пользоваться сервисами - js включит, онлайн покупки... ну... опять же как показывает практика, такие люди предпочитают сделать телефонный звонок, чем по кнопочкам тыкать
    Ответ написан
    Комментировать
  • Функция обработки ответов?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    server.use((req, res, next) => {
      res.sendError = function(type, code) {
        return this.send({status: 'error', type, code});
      };
      next();
    });
    
    server.get('/', (req, res, next) => {
      res.sendError('auth', 'no_login');
    });
    Ответ написан
    Комментировать
  • Можете объяснить пару строк кода?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    С первой строкой Вы разобрались правильно

    Во второй строке используется метод массива reduce, предназначенный для свертки массива
    Этот метод принимает 2 аргумента, функцию и инициализирующее значение, притом 2й аргумент не обязателен, если он отсутствует, то в качестве инициализирующего значения будет взят 0й элемент массива, а массив будет обрабатываться начиная с элемента с индексом 1.
    Важно! для пустого массива метод reduce просто вернет инициализирующее значение, а если оно опущено - выкинет ошибку. Но здесь это не критично, так как метод строки split никогда не вернет пустой массив, а метод массива map всегда вернет массив той же размерности, что и исходный.
    Функция переданная первым аргументом будет вызываться для каждого элемента массива, в нее передается 4 аргумента (в Вашем примере 2 последних опущены за ненадобностью):
    1. Результат предыдущего вычисления (или инициализирующее значение для первого вызова)
    2. Текущий элемент массива
    3. Индекс текущего элемента
    4. Исходный массив
    Функция должна вернуть результат вычисления для текущего элемента, последний результат будет возвращен методом reduce

    В третьей строке используется тернарный оператор, формат которого:
    <условие> ? <результат при истине условия> : <результат при лжи>
    То есть, если sum > 1 - в target запишем 0, иначе 1

    Метод массива indexOf производит поиск в массиве по точному совпадению (проверяет оператором ===) с переданным аргументом и возвращает индекс первого найденного элемента или -1 если ничего не нашел

    P.S. я бы решил так:
    function iqTest(numbers) {
      return numbers
        .split(' ')
        .map((v, i) => ({v: v % 2, i: i + 1}))
        .find(({v}, i, arr) => i !== 0 && v !== arr[i - 1].v)
        .i;
    }
    Ответ написан
    3 комментария
  • Можно ли NodeJs'ом заменить всю основную функциональность PHP, при этом работать с SQL?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Можно
    Ответ написан
    Комментировать
  • Как отменить промис?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Комментировать