Задать вопрос
  • Откуда пошло разделение терминов с 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...
    Комментировать
  • Управление ключевыми кадрами из js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Для управления анимацией есть css свойство animation-play-state
    https://developer.mozilla.org/ru/docs/Web/CSS/anim...

    Вычислять время/проценты придется все же на js
    Например по requestAnimationFrame проверять текущую ширину элемента, и если достигла нужного значения - паузить анимацию
    Ответ написан
  • Нормально ли работают виндовые программы на ubuntu установлены с wine?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, ответьте себе на вопрос, для каких целей Вам нужен Linux, если просто хочется попробовать другую ОС, то попробуйте для начала в виртуалке
    Если же жизненно необходим, то разберемся дальше
    Для большинства приложений есть нативные аналоги, у них возможно не такой красивый GUI, но работать они будут лучше чем виндовые под wine, к тому же в 80% случаях будут бесплатными
    Насчет фотошопа, запустить под wine заморочено, но можно, с пиратками кстати траблов больше, и имхо, но для фотошопа лучше osX (у меня для этих целей лежит самый бюджетный Mac mini, без монитора клавы и мыши, работаю с ним с основного компа, через remote desktop по протоколу vnc)
    Насчет игр, все таки основная игровая ОС - винда, но под wine большинство нормально работают, под популярные как правило можно найти готовые бутылки. Траблы есть в другом, видеокарты amd не особо хорошо поддерживают драйвера для старых моделей, так что официальные драйвера могут быть не совместимы со свежим ядром и/или х-сервером, с картами nvidia все норм

    P.S. если раньше имели опыт только с виндой, то первым дистрибутивом я бы рекомендовал попробовать Linux mint с одной из родных ДЕ (cinnamon или mate), он создавался как раз для более легкого перехода и основан на LTS версиях Ubuntu
    Ответ написан
    Комментировать
  • Как скомпилировать под Linux из под Windows?

    bingo347
    @bingo347
    Crazy on performance...
    Можно попробовать найти сборку g++ под Cygwin и скомпилировать им, но не уверен
    Собственно по nix'ами для винды компилирую родными компиляторами, запущенными под wine
    А Cygwin - это wine наоборот

    Еще как вариант - скомпилировать clang'ом, да будет прослойка в виде llvm, зато кросплатформенно получится
    Ответ написан
    Комментировать
  • Как создать get и set в функции-конструкторе?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    es6:
    class Foo {
      get a() {
        // getter
      }
      set a(value) {
        // setter
      }
    }
    Ответ написан
    2 комментария
  • Кто подскажет про вложенные области видимости в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Объясню, почему небыло ошибки.
    JS поддерживает максимальную совместимость со старыми стандартами, если явно не указано другое
    Согласно древнему es3 переменная b будет взята из глобального объекта (самая верхняя область видимости), без проверки на ее наличие
    Более строгие проверки были добавлены в es5, но если бы их включили по умолчанию, то старый код мог сломаться. Поэтому был введен строгий режим, который можно включить добавив 'use strict'; в начале файла или функции
    Ответ написан
  • Как передать объект в событие?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    this.canvas_object.addEventListener("click", () => this.click(), false);
    Ответ написан
    Комментировать
  • Что нужно помнить в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Бесполезно учить JS (как и любой другой ЯП или технологию), владение приходит только с практикой и опытом
    От того, что Вы прочитали что-то о незнакомой Вам технологии, Вы получите нулевой результат
    От того, что скопировали примеры - аналогично
    От того, что решили самостоятельные задачи - результат около 5%
    Начните делать небольшой проект и за информацией лезте в MDN, это будет гораздо эффективнее
    P.S. Кантор устарел, ИМХО
    Ответ написан
    Комментировать
  • В каких случаях использование фреймворка(например express.js) для nodejs не оправдано?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Когда у Вас хайлоад express/koa выльются затратами вида "нам нужно еще +5 машин", но железо нынче дешевое, пишите на express, и Вам проще и я буду продолжать по 200-300 тыс зарабатывать
    Ответ написан
    Комментировать