Задать вопрос
  • Как в компоненте подписаться на изменение state во Vuex?

    bingo347
    @bingo347
    Crazy on performance...
    Ответ написан
    Комментировать
  • Не работает метод Array.from?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    HTML коллекции динамические, когда Вы их выводите в консоль, они вполне себе пустые, но когда смотрите, консоль синхронизируется и показывает Вам заполненную коллекцию.
    Когда Вы преобразуете коллекцию в массив, в массиве оказывается текущие элементы, которых еще нет. И так как массив ничего не знает о Вашем DOM, то ничего и не появится в дальнейшем.
    Нужно дожидаться, пока элементы появятся на странице, и только потом работать с ними, например с помощью события DOMContentLoaded на document
    Ответ написан
    5 комментариев
  • Как сделать правильно v-if при v-for во vue?

    bingo347
    @bingo347
    Crazy on performance...
    так же читал, что v-for нельзя использовать с v-if
    не рекомендуется не значит нельзя, рекомендуется делать .filter на массиве, а уже по отфильтрованному массиву делать v-for и связано это с тем, что vue может закэшировать отфильтрованный массив и пересчитывать циклы только при изменении самого массива, но не реагировать на изменение элементов в нем.

    по сабжу:
    <li v-for="user in users"
        :key="user"
    >
        <p>Имя: {{ user }}{{ user === 'Tom' || user === 'Misha' ? ' 9' : '' }}</p>
    </li>
    Ответ написан
  • Ошибка при импорте на node js?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    поменяйте "module": "CommonJS" в tsconfig
    Ответ написан
    3 комментария
  • Имена массивов в си?

    bingo347
    @bingo347
    Crazy on performance...
    Массивы в C - это сахар над арифметикой и разыменовыванием указателей
    Согласитесь, проще и нагляднее писать arr[i] чем *(arr + i)

    Так же, для хранения данных на стеке необходимо знать точный размер этих данных во время компиляции. Объявляя тип массива для переменной на стеке, мы еще и показываем компилятору, сколько памяти нам надо, то есть, когда мы пишемint arr[10];компилятор понимает, что тут нужно выделить sizeof(int) * 10 памяти на стеке
    Ответ написан
    Комментировать
  • Javascript framework, который использует "$"?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Классическая реализация метода noConflict() выглядит примерно так:
    const original = globalThis.libraryVariable; // сохраняем предыдущее значение заменяемой переменной
    globalThis.libraryVariable = libraryExport; // перезаписываем нашей либой
    libraryExport.noConflict = () => {
      globalThis.libraryVariable = original; // восстанавливаем сохраненное значение
      return libraryExport; // возвращаем нашу либу
    };
    где:
    globalThis - стандартное (начиная с ES2020) имя для глобального объекта (window, self - в браузере, global - в ноде - псевдонимы)
    libraryVariable - глобальная переменная содержащая библиотеку, в случае с jQuery таких переменных 2 - $ и jQuery
    libraryExport - внутренняя переменная, которая так же хранит ссылку на библиотеку (это нужно, чтоб либа не сломалась, даже если Вы руками измените глобальную переменную)

    P.S. в современном мире большинство библиотек по возможности используют модульную систему и не засоряют глобальный объект
    Ответ написан
    Комментировать
  • Асинхронный try, catch в JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Почему catch не ловит ошибку, если он должен ждать, пока не выполнится try
    Потому что try закончит выполнение до throw
    Как поймать асинхронную ошибку??
    Гуглите: js Promise
    Гуглите: js async/await
    В качестве факультатива можно погуглить:
    Почему try/catch зло
    Монада Result/Either
    Ответ написан
    Комментировать
  • Что такое обратный вызов в программировании?

    bingo347
    @bingo347
    Crazy on performance...
    Что такое обратные вызовы?
    Я знаю только что это функция которая передается как аргумент в другую функцию.
    В принципе, можно и так сказать. Если быть более точным - это вызов функции переданной в качестве аргумента.
    Почему они так называются?
    Это игра слов. На английском callback - это не только обратный вызов, но и обратный звонок (по телефону). Данная абстракция позволяет вызываемому коду вызвать вызывающий код, подобно тому как собеседник может перезвонить Вам позднее, если Вы сообщите ему куда.
    В чем их смысл и зачем нужны?
    В принципе я уже ответил, они нужны для возможности вызываемому коду вызвать вызывающий код. Это позволяет строить высокоуровневые абстракции, вроде обобщенных функций или асинхронных функций.
    Обобщенные функции позволяют не писать однотипный код, снижая тем самым вероятность ошибок, а с помощью обратных вызовов они могут принимать в себя фрагменты кода, которые могут меняться от использования к использованию. Для примера, абстрагируем цикл от 0 до n на C:
    // абстракция цикла
    void each(int n, void (*callback)(int, void*), void* closure_data) {
      if(n <= 0) { return; }
      for(int i = 0; i < n; i++) {
        (*callback)(i, closure_data);
      }
    }
    
    // колбэк - тело цикла, вариант 1
    void cb_body1(int i, void*) {
      printf("%d", i);
    }
    
    // колбэк - тело цикла, вариант 2
    void cb_body2(int i, void* acc) {
      int* normalized_acc = (int*)acc;
      *normalized_acc += i;
    }
    
    int main() {
      each(10, cb_body1, null); // напечатает строки 0, 1, ...9
    
      int result = 0;
      each(10, cb_body2, &result); // посчитает в result сумму чисел от 0 до 9
      printf("%d", result);
      return 0;
    }

    Асинхронные функции позволяют выносить долгие вычисления в фоновые потоки, тем самым не блокируя основной поток. А свой результат, когда он готов, они передают в обратный вызов.

    Так же стоит заметить, что во многих высокоуровневых языках наряду с обратными вызовами используется механизм замыканий, который позволяет объявлять функции внутри других функций и захватывать окружающие переменные. Но нужно понимать, что это лишь компиляторный сахар, и на самом деле в функцию просто передаются указатели на захваченные переменные в качестве аргументов, подобно тому, как я сделал это руками в примере выше, с помощью аргумента closure_data в функции each. Обычно компилятор создает для этого анонимные структуры (C++, Rust) или анонимные классы (C#), которые хранят указатель на функцию и указатели на окружение. А в некоторых языках, например в js, замыкания возведены в абсолют, и каждая функция является замыканием.
    Ответ написан
    2 комментария
  • Express + Handlebars. Как подключить шапку и футер?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Ответ написан
    Комментировать
  • Как обновить установленные пакеты в Node?

    bingo347
    @bingo347
    Crazy on performance...
    npm i -D grunt-contrib-watch@latest
    Ответ написан
    Комментировать
  • Как сделать плагин для jQuery используя Webpack?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Комментировать
  • При каких обстоятельствах возникает такой баг?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    debugger Ваше все
    Ответ написан
    Комментировать
  • Как подружить backend wordpress и node pm2?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Скорее всего проблема в том, что pm2 держит для каждого системного пользователя свой список задач, а у Вас вероятно php работает из под отличного юзера от того, под которым запущены нужные pm2 задачи.
    В качестве решения "в лоб" я бы предложил накатать небольшой сервис на ноде, который будет запущен из под нужного юзера тем же pm2 и будет слушать юникс сокет (ток права выдать не забудьте) или порт, а с php просто дергать его запросами
    Ответ написан
    1 комментарий
  • В чём отличие десктопной Ubuntu от Server Ubuntu?

    bingo347
    @bingo347
    Crazy on performance...
    Десктопная убунта отличается от серверной предустановленным пакетом ubuntu-desktop
    Если на чистой серверной убунте сделать
    sudo apt install ubuntu-desktop
    то получим чистый десктоп с гномом иксами и прочей прелестью
    Ответ написан
    1 комментарий
  • Как в Vue вписать переменную в значение cookie?

    bingo347
    @bingo347
    Crazy on performance...
    <div  v-for="product in products" class="row product-row" @click="setcookie(product)">
    <script>
    methods: {
      setcookie(product) {
        document.cookie = 'app_cookie_name=' + product.name;
        console.log(document.cookie);
      },
    }
    </script>
    Ответ написан
    Комментировать
  • Как порешать эту проблемку?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Вполне возможно, что connection.query из Вашей библиотеки уже умеет работать с Promise, но если это не так, то можно обернуть ее с помощью встроенной функции util.promisify:
    const {promisify} = require('util');
    const query = promisify(connection.query.bind(connection));


    А дальше все легко решается с помощью async/await:
    async function getSomethingFromDB() { // не знаю какое имя у Вас в оригинале
      const result = await query(" SELECT * FROM `tb_1` WHERE `id`=? ", [id]);
      const array = [];
      for (var i in result) {
        // ...
       const result_2 = await query(" SELECT * FROM `tb_2` WHERE `id`=? ", [id]);
        // ...
      }
    }

    P.S. я б вообще итераторами воспользовался (.map в частности) и результат бы вернул через Promise.all
    Ответ написан
    1 комментарий
  • Как удалить cookie через 5 минут после клика на кнопку?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    $('#click').on('click', 'submit', function() {
        // 5 min == 300sec
        document.cookie = 'userSubmitClick=1; path=/; max-age=300';
    });

    и все, браузер удалит куку сам, даже если вкладка будет закрыта
    и не нужно изобретать велосипеды
    Ответ написан
    5 комментариев
  • Почему не отображается картинка при использовании vue-cli?

    bingo347
    @bingo347
    Crazy on performance...
    Так /assets/img/body-backgr.jpg будет искать от корня файловой системы

    Резолвом модулей разруливает webpack, можно сделать alias @ для папки src, тогда можно будет писать так: @/assets/img/body-backgr.jpg

    https://cli.vuejs.org/guide/webpack.html#simple-co...
    https://webpack.js.org/configuration/resolve/#reso...
    Ответ написан
    Комментировать
  • Как избежать "circular dependency" при вызове функции главного модуля из компонента Svelte?

    bingo347
    @bingo347
    Crazy on performance...
    Самое простое и правильное решение будет вынести test_function в отдельный модуль.
    В принципе es-модули вполне умеют в циклические зависимости, за счет bind семантики, но на практике это приносит больше проблем, чем пользы
    Ответ написан
    Комментировать