Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Negezor

Владлен Хеллсайт

Senior Shaurma Developer
  • 257
    вклад
  • 3
    вопроса
  • 180
    ответов
  • 100%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как получить данные из graphQL через JS/VUE?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Вам нужен GraphQL клиент, например urql (urql-vue) или apollo-client (vue-apollo). Если вам нужен один запрос, то можно обойтись обычным fetch, например:
    const response = await fetch('https://example.com/graphql', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        operationName: 'fetchAuthor',
        query: 'query fetchAuthor { author { id name } }',
        variables: {},
      }),
    });
    
    const data = await response.json();
    Ответ написан 09 нояб. 2022
    Комментировать
    Комментировать
  • Как строится защита плагина?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Невозможно защитить то —что является публичным. Максимум усложнить процесс реверс инжиниринга. Для "защиты" можно использовать обфускацию.
    Ответ написан 09 авг. 2022
    1 комментарий
    1 комментарий
  • Как оптимизировать поиск нужной фразы в json обьектах?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    // Это должно быть вне обработчика закэшировано
    const myPhrasesList = new Set([
      "test test test test test",
      "test test test test test",
      "test test test test test",
      "test test test test test",
      "test test test test test",
      "test test test test test"
      // ... 1mln length
    ]);
    
    for (object of wsData) {
        if (!myPhrasesList.has(object.description)) {
           continue;
        }
    
        this.notification(object, object.description).then()
    }
    Ответ написан 11 февр. 2022
    2 комментария
    2 комментария
  • Как можно обращаться к методам из другого файла?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    // core.js
    const { VK } = require('vk-io');
    
    const vk = new VK({})
    
    module.exports = {
        vk: vk
    };
    
    // bot.js
    const { vk }  = require('./core.js');
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Тормозит бот ВК. Что делать?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Если упирается в количество запросов на API, вас стоит увеличить apiLimit, попробовать другие режимы
    apiMode и apiRequestMode. Дальше вас стоит профилировать свой код что бы понять узкое место.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • В чем отличие Pool и Client конструкторов в NPM пакете pg?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Client — это одно соединение
    Pool — это хранилище соединений, которое по запросу выдаёт свободное соединение, если нет свободных, ждёт пока освободится и выдаёт освободившееся соединение. Соединения с базой это медленно, но если мы заранее поддерживает множество соединений, мы не тратим время на подключение. Так вот Pool берёт заботы о поддержании соединений на себя (обработку закрытия соединений, открытие новых соединений и поддержания соединений с помощью ping).

    Если мы говорим о приложении, то правильным выбором будет Pool.
    Ответ написан более года назад
    3 комментария
    3 комментария
  • Как получать рекурсивно вложенные элементы в GraphQL?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    В GraphQL на текущий момент невозможно сделать рекурсивное дерево через вложения, даже если мы будет повторять вложения, она в любом случае будет иметь конечное количество элементов, не говоря уже про размер самого запроса (не ответа). Однако всё не так плохо как может показаться, есть решения для этой проблемы:

    1. Возвращать плоский массив элементов, соответственно на клиенте можем собрать дерево.
    tasks {
    _id
    name
    status
    children {
        _id
        parentId
        name
        status
    }

    2. Использовать кастомный скаляр, например JSON. Однако в данном случае мы теряем типизацию схемы, в виду того что в скаляре может находится что угодно.
    3. Сделать резолвер, который будет фильтровать элементы по ID их родителя. Однако в данном случае, сервер будет получать много запросов, так как в дереве может находится много элементов.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Надо ли делать повторный запрос в базу если использую GraphQL?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Вытаскивать все рестораны оправдано если вы будете делать PWA и их будет не так много, а потом просто кидать запрос с датой последней синхронизации на поиск изменений. Однако если вы делаете публичное API, то лучше сразу реализовать поиск через аргументы в query, со временем к категориям добавятся сортировки и другие фильтры. Это придётся реализовывать на каждом клиенте отдельно.

    Так скажем ваш GraphQL API сейчас работает только с вашей БД, а потом придётся делать скажем REST запросы на чужой API и вот уже вытаскивать все рестораны не так уже выгодно для сервера. Произвести всякие оптимизации будет сложно, так как мы не знаем какие данные нужны клиенту и каждый раз тащим мегабайты ради скажем ресторана с одной категорией, так как человек каждый раз заходит в инкогнито и никакого кэша там снова не будет.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как прописать HTTPS GET запрос через SOCKS5 прокси в NodeJS?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    socks-proxy-agent
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как импортировать модуль JS без указания расширения?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    В чистой Node.js при использование ESM нужно обязательно указывать расширение в связи с следованием спецификации. Если хочется использовать ESM, но не зависеть от чистой Node.js, нужно использовать один из нескольких вариантов:
    • TypeScript
    • Babel
    • Webpack
    • Rollup
    • esm module
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как изменить текст в title с помощью JS?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    if (document.title === 'Волга') {
      document.title = 'Ветер';
    }
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как получить значение textarea во Vue?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    <template>
      <div class="textarea">
        <textarea
          name="card-textarea"
          id=""
          cols="30"
          :rows="rows"
          :placeholder="placeholder"
          :value="value"
          @input="$emit('input', $event.target.value)"
        >
    
        </textarea>
      </div>
    </template>
    
    props: {
        placeholder: {
          type: String,
          default: ""
        },
        rows: {
          type: Number,
          default: 5
        },
        value: {
           type: String
         }
      }
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Как можно подключить шрифты в Discord Bot JS ( Canvas )?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    https://github.com/Automattic/node-canvas#registerfont
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как сделать так, чтобы работали кнопки вк?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    В библиотеке присутсвует вариант использования клавиатуры с помощью стандартных средств, ссылка на документацию.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как получить id пользователя, в ответ на которое отправлено текущее сообщение?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    cmd.on(/^(?:test)$/i, async (message, bot) => {
        let senderId;
    
        // Если ответ на сообщение
        if (message.hasReplyMessage) {
            senderId = message.replyMessage.senderId;
        // Если пересланное сообщение
        } else if (message.hasForwards) {
            senderId = message.forwards[0].senderId;
        }
        
        console.log('senderId', senderId)
    })
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как сделать ответ на стикер?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    updates.on('new_message', async (message, next) => {
        if (message.hasAttachments('sticker')) {
            await message.send(`kkk`)
        }
    })
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Node.js Sequelize как обновить таблицы с сохранением данных?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Можно так:
    await sequelize.sync({ alter: true })
    Но при обновлении любых индексов он сломается. Вместо этого нужно делать миграции.
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Почему не работает запрос Graphql?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    Замените MyMutationInput на название своего input объекта.
    this.$apollo.mutate({
        mutation: gql`mutation createWrite($input: MyMutationInput!) {
            createWrite(input: $input) {
                write {
                    email
                }
            }
        }`,
        variables: {
            input: {
                data: {
                    name: data.name,
                    email: data.email,
                    title: data.title,
                    text: data.text,
                    doctor: data.doctor,
                    date: data.arrive,
                    polite: data.polite
                }
            }
        }
    })
        .then((result) => {
            console.log(result);
        })
        .catch((error) => {
            console.error(error);
        });
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как правильно работать в NodeJS с PostgreSQL?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    В пуле хранятся соединения, скажем 10 штук. Каждый раз когда мы вызываем pool.query(), мы запрашиваем соединение. Если соединение есть - производится запрос, а потом в пуле обновляется его статус на свободный. Если все соединения уже заняты - ждём пока освободится первый попавшийся. В документации же сказано, что вы должны возвращать соединения в pool (иначе когда подойдёт лимит соединений в пуле, запросы будут ожидаться бесконечно). А pool.end() нужно вызывать когда вам больше не понадобится текущий пулл запросов, например вы его временно создали для другой БД? Пулл сам создаст соединения по необходимости, конечно он не будет выходить за лимиты, иначе бы мы тратили все ресурсы на создание соединений.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Express + express-handlebars вывод определенных данных из базы на каждой странице?

    Negezor
    Владлен Хеллсайт @Negezor
    Senior Shaurma Developer
    app.use(async (req, res, next) => {
        try {
            res.locals.microdata = await getMicrodata();
            
            next();
        } catch (error) {
            next(error);
        }
    });
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • Следующие →
Самые активные сегодня
  • puzaka
    • 9 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 9 ответов
    • 0 вопросов
  • freeExec
    freeExec
    • 7 ответов
    • 0 вопросов
  • mayton2019
    • 6 ответов
    • 1 вопрос
  • Vindicar
    Vindicar
    • 6 ответов
    • 0 вопросов
  • Sanes
    Sanes
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации