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

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

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

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

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

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

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

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

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

Алексей

Дилетант
  • 137
    вклад
  • 41
    вопрос
  • 265
    ответов
  • 35%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как обойти ограничение в setTimeout JS?

    rqdkmndh
    Антон Горецкий @rqdkmndh
    Web-разработчик
    Берете текущее время - Date.now() к нему прибавляете время на которое выдаете бан (хоть минуту, хоть годы) и сохраняете это значение. Периодически (раз в сутки например) проверяете вышло время бана или нет, т.е. стало текущее время больше сохраненного - значит пора разбанивать. Еще можно сделать проверку разбана конкретного пользователя при его попытке зайти.
    То что вы описываете с setTimeout дичь конечно, но при желании можно и её реализовать - сделать вложенные setTimeout.
    Ответ написан 19 мая
    Комментировать
    Комментировать
  • Как обойти ограничение в setTimeout JS?

    anatoly_kulikov
    Анатолий Куликов @anatoly_kulikov
    Помог ответ? Отметь решением!
    Для такого используют базы данных - определяют временную метку, после которой пользователь будет разбанен и при ее достижении ограничения снимаются. Вешать тайм-ауты для этого неправильно - вдруг сервер приляжет отдохнуть и всё эти данные потеряются.
    Ответ написан 20 мая
    Комментировать
    Комментировать
  • Как разбить строку на массив с учетом разделителя?

    sergiks
    Сергей Соколов @sergiks Куратор тега JavaScript
    ♬♬
    может, наивно добавить квадратные скобки в строку?
    const line = '1, "221,21", "dssds", 555, "dfgfdgfdg, dd"';
    const row = JSON.parse(`[${line}]`);
    // Array(5) [ 1, "221,21", "dssds", 555, "dfgfdgfdg, dd" ]
    Ответ написан 31 окт. 2022
    2 комментария
    2 комментария
  • Разница рекурсии в разных движках JavaScript?

    RAX7
    RAX7 @RAX7
    метод sort не правильно используется
    - return aDist < bDist;
    + return aDist - bDist;

    скорее всего это и есть причина такого поведения. Результатом aDist < bDist всегда будет либо true, либо false, что в данном контексте будет трактоваться как 1 и 0, т.е. aDist всегда больше или равен bDist и никогда не меньше него. Из-за разных используемых алгоритмов сортировки, разные движки сходят с ума по разному.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Как удалять из v-for по таймеру?

    0xD34F
    0xD34F @0xD34F Куратор тега Vue.js
    Хранить сообщения как массив объектов. В объекте сообщения должно быть свойство - id таймаута на удаление.

    Сделать методы для установки и удаления таймаута (в качестве параметра принимают объект сообщения):

    methods: {
      setDeleteTimeout(message) {
        message.timeout = setTimeout(this.удалитьСообщение, 5000, message);
      },
      delDeleteTimeout(message) {
        clearTimeout(message.timeout);
        message.timeout = null;
      },
      ...

    Использовать эти методы для обработки событий mouseenter/mouseleave:

    <div
      v-for="n in messages"
      @mouseenter="delDeleteTimeout(n)"
      @mouseleave="setDeleteTimeout(n)"
      ...

    Ну и при создании объекта сообщения для него надо будет setDeleteTimeout вызвать.

    https://jsfiddle.net/n2bp3yvh/2/
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Чем / Как увеличить изображения без потери качества?

    Zoominger
    Рональд Макдональд @Zoominger
    System Integrator
    Практически ничего, кроме вышеупомянутого Фотошопа. Киношные "gotcha!" остаются киншными.
    5cbb22184086c8f5ed4297c43e801885.jpg
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как получить кол-во людей и ботов?

    Alexandre888
    Александр @Alexandre888 Куратор тега Боты
    Javascript-разработчик
    * cache.filter
    Ответ написан более двух лет назад
    9 комментариев
    9 комментариев
  • Почему я не могу сделать затемнение для img?

    lamer350
    lamer350 @lamer350
    กำลังสูงสุด
    Просто используйте для img filter: brightness(0.5);
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как выдать юзеру на сайте страницу?

    bqio @bqio
    https://bqio.github.io/
    Вы сначала сами поймите, что хотите, научитесь формировать свою идею в текст, а потом спрашивайте здесь, или ищите в гугле.
    Ответ написан более двух лет назад
    7 комментариев
    7 комментариев
  • Как определить имеет масив значение?

    WblCHA
    WbICHA @WblCHA
    Зачем сплитить?
    const result = number.some((n) => something.includes(n));
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Система лайков на php?

    anton_reut
    Антон Р. @anton_reut
    Начинающий веб-разработчик
    Я перепробывал много вариантов, и всё не могли проверить на наличии двух лайка с одного аккаунта на одном и том же посте

    - да нихрена ты не пробовал, иначе не писал бы такую чушь. Задачка на младшего помощника джуниора, ей богу.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как добавить проверку длины в регулярку?

    DevMan
    DevMan @DevMan
    не нужно для этого использовать регэкспы.
    сделайте банальную проверку длины строки, и если она верна используйте регулярку для разбора.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Существует ли софт для отладки запроса?

    bkosun @bkosun
    В MySQL есть специальный оператор, который предоставляет информацию о том, как MySQL выполняет запрос.
    https://dev.mysql.com/doc/refman/8.0/en/explain.html

    Для визуального отображения результатов EXPLAIN можно использовать MySQL Workbench
    https://dev.mysql.com/doc/workbench/en/wb-performa...

    Так же Вы можете использовать инструменты профилирования dbForge Studio for MySQL
    https://www.devart.com/ru/dbforge/mysql/studio/que...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как проверить, что значения уникальны?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const isAllUnique = (...args) => new Set(args).size === args.length;
    
    console.log(isAllUnique(1, 2, 3, 4)); // true
    console.log(isAllUnique(2, 2, 3, 4)); // false
    console.log(isAllUnique(69, 187, 666)); // true
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Разница в рендере сразу в тэг или через псевдоэлемент?

    loopi @loopi
    content нельзя выделить и скопировать
    Контент онлайн-билетов любят так прогонять, что бы не гуглили даже самые-самые
    <spam data-letter="П"></span>
    <spam data-letter="р"></span>
    <spam data-letter="и"></span>
    <spam data-letter="в"></span>
    <spam data-letter="е"></span>
    <spam data-letter="т"></span>
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • При стилизации 2х select в каждом выводятся сразу два первых option?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    Давайте не будем копипастить, а сделаем нормальный плагин:

    $.fn.customSelect = function() {
      return this.each(function() {
        const $this = $(this).hide();
        const $wrapper = $this.wrap('<div class="select_wrapper"></div>').parent();
    
        $wrapper.append(`
          <span>${$this.find(':selected').text()}</span>
          <ul class="select_inner">${$this.children().get().map(n => `
            <li data-value="${n.value}">${n.innerText}</li>`).join('')}
          </ul>
        `);
        $wrapper.on('click', 'li', function() {
          $wrapper.children('span').text(this.innerText);
          $this.val(this.dataset.value).trigger('change');
        });
        $wrapper.on('click', function() {
          $('ul', this).slideToggle('fast');
        });
      });
    };
    
    
    $('#materialColor, #kantcolor').customSelect().change(function() {
      console.log(`#${this.id}: "${this.value}"`);
    });
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Нормальна ли такая реализация функции?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    Дичь конечно.

    Не надо определять переменные с именами как у каких-то глобальных объектов, так что window - долой. Ну и в целом - как-то многословно, это могла бы быть и одна строка:

    const closeInfoWindows = (...windows) => windows.forEach(w => w && w.close());
    Ответ написан более трёх лет назад
    10 комментариев
    10 комментариев
  • Как добавить впереди цифр нули?

    Ni55aN
    Vitaliy @Ni55aN
    String(number).padStart(2,'0')
    согласно последним стандартам
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Глобальная видимость кастомной функции в любом месте кода?

    lavezzi1
    lavezzi1 @lavezzi1
    Создайте файл utils.js и кладите подобные функции туда.

    Экспортируете так в utils.js
    export function indexToFind () {...}

    Затем в файле где хотите использовать
    import { indexToFind } from 'utils.js';

    Это самый адекватный подход. У вас таких функций может быть с сотня, по мере роста проекта, засирать window или vue global плохая идея для таких мелких функций.

    А вот хороший пример что можно записывать в vue global:

    main.js
    import axios from 'axios';
    
    Vue.prototype.$http = axios;
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • При клике на кнопку "Назад" в браузере, нужно вывести prompt();?

    nikolayshabalin
    Николай Шабалин @nikolayshabalin
    Автор профессиональных курсов в HTML Academy
    И слава Богу.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • emekhanikov
    Евгений Механиков
    • 5 ответов
    • 0 вопросов
  • dimonchik2013
    Dimonchik
    • 5 ответов
    • 0 вопросов
  • tyxeo
    • 2 ответа
    • 2 вопроса
  • Yukan Mukimura
    • 1 ответ
    • 3 вопроса
  • Alexandroppolus
    Alexandroppolus
    • 4 ответа
    • 0 вопросов
  • Vlatqa
    Владислав Лысков
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

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

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