Задать вопрос
  • Как функция получает доступ к себе при рекурсивном вызове?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    в текущей области видимости 'func' не объявлена

    как раз таки объявлена. В любой именованной функции ее имя создается в момент вызова (наравне с arguments и this) и ссылается на саму функцию. Наиболее наглядно это показывают именованные функциональные выражения:
    var f = function func() {
      console.log(func.name); // 'func'
    };
    console.log(f.name); // 'func'
    console.log(func.name); // Reference error так как func нет в этой области видимости
    Ответ написан
    Комментировать
  • Как на веб хостинг установить десктопную ubuntu?

    bingo347
    @bingo347
    Crazy on performance...
    вопрос зачем? запускать gui софт? дешевле по ресурсам будет просто поставить X-сервер и делать его проброс через ssh, тогда запускаемые на сервере утилиты будут исполнятся там, а рисоваться у Вас. Естественно на системе, в которой рисуем тоже должны быть иксы, хотя на wayland и на винду есть костыли, насчет макоси не уверен, а большинство DE/WM линукса с этим будут нормально работать. Ну и так как данных по сети будет гоняться меньше, данный вариант будет шустрее, чем проброс всего десктопа через vnc
    Так же стоит учесть, что на сервере скорее всего нет видеокарты (совсем, даже встроенной в проц), для многих современных gui приложений это станет проблемой.

    ну и если не трудно, объясните мне, какой в этом практический смысл?
    Ответ написан
    3 комментария
  • Почему файлы не загружаются на сервер посредством AJAX?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Вы отдаете заголовок xhr.setRequestHeader('Content-Type', 'multipart/form-data')
    а отдаете просто файл
    Так понимаю на сервере php, так что буду основываться на этом, хоть и не помню его толком
    вариант 1: оборачивать файл в FormData и отправлять его, читаем про него тут https://developer.mozilla.org/ru/docs/Web/API/FormData
    вариант 2: если отдаем как есть, то читаем файл из php://input если передавать только файл, там будет только он
    Ответ написан
    Комментировать
  • Ошибка при установки плагина nodejs и как ее исправить?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Когда вы все уже научитесь читать вывод программ?..
    Ошибка в синтаксисе JSON в файле package.json
    Ответ написан
    3 комментария
  • Как лучше организовать структуру такого проекта?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Общие части выделить в npm модули, по подключению есть три варианта:
    1. решение в лоб, npm link, я бы не использовал, так как это больше для отладки модулей
    2. npm вполне себе нормально работает с git репозиториями, как через ssh так и через http, лучше через ssh, так как если репо приватный, на http придется при каждой установке/обновлении вводить пароль, автоматизировать не получится, а на ssh можно пару ключей повесить
    3. немного гиковское, зато самое гибкое - поднять свой npm репозиторий, в конфиге npm направить на него либо отдельный скоуп (@scope/module) или вообще все, если репо умеет проксировать (и кэшировать) неизвестные ему модули на официальный репо
    Ответ написан
    Комментировать
  • Как выгрузить файлы в удалённый репозиторий?

    bingo347
    @bingo347
    Crazy on performance...
    На удаленной машине нужно создать bare репозиторий:git init --bare project_name.gitгде project_name - имя проекта
    на локальной машине, в папке проекта:
    git remote add origin project_url
    git push -u origin remote_branch_name
    где project_url - url проекта, например при доступе по ssh и работе git из под пользователя git: git@server.com:/path/to/project_name.git
    remote_branch_name - как текущая ветка будет называться на удаленном репозитории, например master
    Ответ написан
    6 комментариев
  • Как можно быстро создать список хешей sha256 и MD5 из словаря?

    bingo347
    @bingo347
    Crazy on performance...
    простейший скрипт на баше:
    for l in $(cat text.txt); do
      echo $l | md5sum >> md5.txt;
      echo $l | sha256sum >> sha256.txt;
    done;
    Ответ написан
    Комментировать
  • Как сгруппировать объекты из массива по определенному полю объекта, используя метод Reduce?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    function groupByDate(arr) {
      //свертка массива во временный объект, с датами в качестве ключей
      const temp = arr.reduce((acc, elem) => {
        // делим строку по пробелу и извлекаем 0й элемент '2018-03-05 12:00' -> '2018-03-05'
        const date = elem.date.split(' ')[0];
        //если ключа-даты еще нет в объекте, записываем туда пустой массив
        if(!acc[date]) {
          acc[date] = [];
        }
        // ложим текущий элемент в соответствующий массив
        acc[date].push(elem);
        return acc;
      }, {});
      // извлекаем все ключи получившегося объекта в массив
      // и преобразуем массив ключей в массив значений
      return Object.getOwnPropertyNames(temp).map(k => temp[k]);
    }
    Ответ написан
    5 комментариев
  • Чем отличаются эти две записи?

    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"
    }
    Ответ написан