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

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

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

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

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

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

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

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

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

fessss

  • 0
    вклад
  • 23
    вопроса
  • 0
    ответов
  • 0%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Повторяющийся запрос до определённого ответа?

    ThunderCat
    ThunderCat @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Заведите переменную с меткой времени, перед отправкой сравнивайте ее с текущим значением времени, если разница больше 2 минут - выход из цикла.
    Ответ написан 01 апр.
    2 комментария
    Нравится 1 2 комментария
  • Сравнение дат в moment js?

    sergiks
    Сергей Соколов @sergiks Куратор тега JavaScript
    ♬♬
    Безо всяких тяжёлых momentjs можно родным объектом Date обойтись.

    Дата из формата 'DD.MM.YYYY': new Date(value.split('.').reverse().join('-'))

    Добавить 366 дней: D.setDate(D.getDate() + 366) Вычесть так же.

    Сравнивать объекты Date можно напрямую: if (D1 > D2)
    Ответ написан 31 мар.
    Комментировать
    Нравится 1 Комментировать
  • Сравнение дат в moment js?

    Casufi
    Владимир @Casufi
    Ты используешь moment js чтобы получить нужную дату, но перед сравнением конвертируешь в строку? Садись, два!
    https://momentjs.com/docs/#/query/is-between/
    https://momentjs.com/docs/#/query/is-same-or-before/
    https://momentjs.com/docs/#/query/is-same-or-after/
    Выбирай на вкус
    Ответ написан 31 мар.
    Комментировать
    Нравится 2 Комментировать
  • Как отфильтровать массив объектов по ключам?

    0xD34F
    0xD34F @0xD34F Куратор тега Vue.js
    computed: {
      grouped() {
        return this.arr.reduce((acc, n) => ((acc[n.group] ||= []).push(n), acc), {});
      },
    },

    <v-expansion-panels>
      <v-expansion-panel v-for="(items, groupName) in grouped">
        <v-expansion-panel-header>{{ groupName }}</v-expansion-panel-header>
        <v-expansion-panel-content>
          <div v-for="n in items">{{ n.name }}</div>
        </v-expansion-panel-content>
      </v-expansion-panel>
    </v-expansion-panels>
    Ответ написан 19 февр.
    7 комментариев
    Нравится 3 7 комментариев
  • Могу ли я в чистом javascript в асинхронной функции подождать возникновения события?

    lazalu68
    Kovalsky @lazalu68
    Salmon
    Конечно можете. После await у вас должен идти промис, который будет ресолвиться из обработчика события. Если речь о событиях DOM, то как-то так:

    HTMLElement.prototype.waitFor = function(event_name) {
        if (event_name) {
            return new Promise((res, rej) => {
            	const listener = function() {
            		res()
            		this.removeEventListener(event_name, listener)
            	};
    
            	this.addEventListener(event_name, listener);
            })
        } else {
            throw 'No event passed to waitFor method!';
        }
    }
    
    async function foo() {
    	const start = new Date();
    	await document.querySelector('body').waitFor('click');
    	console.log('uspeshno dojdalis clicka, jdali celih ' + ((new Date().getTime() - start.getTime())/1000) + ' sekund');
    }
    
    foo();
    Ответ написан 25 дек. 2020
    7 комментариев
    Нравится 21 7 комментариев
  • Зачем во Vue запросы выносят в services?

    Kozack
    Alex @Kozack Куратор тега Vue.js
    Thinking about a11y
    1. Для упрощения кода. Скажем, чтобы не писать каждый раз всю конструкцию аля
      axios.get(ENDPOINT + '/api/' + API_METHOD, {
        params: {
          id
        }
      })
      .catch
      ...

      Делается обёртка, условная функция getUser(id). В неё выносится вся логика по работе с запросом, определение маршрутов АПИ, обработка ошибки и так далее. Наружу торчит только одна функция и параметр.
    2. При работе с TS это проще типизировать. Намного легче описать типы принимаемых параметров и возвращаемый тип для нескольких функций, чем описывать универсальную конструкцию для доступа к любым методам апи.
    3. Ну и наконец: сервис можно вызывать прямо в компонентах. Вызывать методы АПи не обязательно внутри Vuex. Доже чаще это должно выполняться внутри отдельных компонентов, каждый из которых работает с одним-двумя апи, а не со всем набором.
    Ответ написан 14 дек. 2020
    4 комментария
    Нравится 10 4 комментария
  • Менять значение props?

    Олег Колтунов @i_olega
    selectDaysRange(days) {
          this.selected = [];
          const endDate = moment(this.now).subtract(days, 'days').format('YYYY-MM-DD');
          this.selected.push(endDate, this.startDate);
    },
    Ответ написан 27 нояб. 2020
    5 комментариев
    Нравится 1 5 комментариев
  • Как запретить загрузку исполняемых файлов через input file?

    Adamos
    Adamos @Adamos
    Проверку можно делать, переделав загрузку файлов на ajax и разбирая, что там оказалось в инпуте.
    Но делать это на фронте можно только для предупреждения пользователю "эй, чувак, ты какую-то фигню тут прикрепил". Реальной защиты такие проверки не обеспечивают, если эту форму будут атаковать - обойдутся не то что без обхода, но и вообще без браузера, в котором оно могло бы сработать.
    Ответ написан 06 окт. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как запретить загрузку исполняемых файлов через input file?

    yarkov
    Алексей Ярков @yarkov Куратор тега JavaScript
    Проект "Жизнь после смерти" - lifeafterdeath.ru
    Реализуйте проверку с помощью JavaScript
    Ответ написан 06 окт. 2020
    2 комментария
    Нравится 1 2 комментария
  • Забрать данные из дочернего компонента при вызове родительского метода?

    Aetae
    Aetae @Aetae
    Тлен
    Ну во-первых по-хорошему такого быть не должно.
    Компоненты общаются через пропсы и события: сверху пропсы, снизу события.
    Изменились данные в компоненте 1? Он послал событие update, а родитель его поймал и что-то сделал.

    Если же это какая-то многокомпонентная структура, где дочерние компоненты всегда должны быть в родительском, то родительский делает provide, дети делают inject и таким образом держат общий набор данных\методов.

    Ну и через ref тоже можно, но тут следует продумать архитектуру с публичными и внутренними методами, чтоб поддержка не превратилась в ад.
    Ответ написан 04 окт. 2020
    Комментировать
    Нравится 1 Комментировать
  • Фильтрация на vue js?

    Fragster
    Антон Антон @Fragster
    помогло? отметь решением!
    [...this.filter1(),...this.filter2(),...this.filter3()].filter()
    Ответ написан 27 июл. 2020
    1 комментарий
    Нравится 2 1 комментарий
  • Фильтр массива объектов по ключу?

    sergiks
    Сергей Соколов @sergiks Куратор тега JavaScript
    ♬♬
    arr.reduce((acc, c) => acc.concat(...c.items.filter(e => [9,10].indexOf(e.id) > -1)), [])
    Ответ написан более года назад
    Комментировать
    Нравится 1 Комментировать
  • Фильтр массива объектов по ключу?

    hzzzzl
    hzzzzl @hzzzzl
    arr
      .map(a => a.items)
      .flat()
      .filter(item => [9, 10].includes(item.id))
    Ответ написан более года назад
    Комментировать
    Нравится 2 Комментировать
  • Фильтр массива объектов по ключу?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const ids = [ 9, 10 ];
    
    const items = arr.flatMap(n => n.items).filter(n => ids.includes(n.id));
    Ответ написан более года назад
    Комментировать
    Нравится 2 Комментировать
  • Запись значения ключа из одного объекта в другой?

    Seasle
    Александр @Seasle Куратор тега JavaScript
    \( ゚ヮ゚)/
    const arr = [
    	{
    		name: 'test1',
    		koef: 1,
    		id: 1,
    		age: 23
    	},
    	{
    		name: 'test2',
    		koef: 1,
    		id: 2,
    		age: 23
    	},
    	{
    		name: 'test3',
    		koef: 2,
    		id: 3,
    		age: 23
    	},
    	{
    		name: 'test4',
    		koef: 2,
    		id: 4,
    		age: 23
    	},
    	{
    		name: 'test5',
    		koef: 3,
    		id: 5,
    		age: 23
    	},
    	{
    		name: 'test6',
    		koef: 3,
    		id: 6,
    		age: 23
    	},
    ];
    
    const createMap = (array, key) => new Map(array.map(entry => [entry[key], entry]));
    
    const map = createMap(arr, 'name');
    console.log(map);
    /*
    Map(6) {
      'test1' => { name: 'test1', koef: 1, id: 1, age: 23 },
      'test2' => { name: 'test2', koef: 1, id: 2, age: 23 },
      'test3' => { name: 'test3', koef: 2, id: 3, age: 23 },
      'test4' => { name: 'test4', koef: 2, id: 4, age: 23 },
      'test5' => { name: 'test5', koef: 3, id: 5, age: 23 },
      'test6' => { name: 'test6', koef: 3, id: 6, age: 23 }
    }
    */
    map.get('test6').koef = map.get('test1').koef;
    console.log(map);
    /*
    Map(6) {
      'test1' => { name: 'test1', koef: 1, id: 1, age: 23 },
      'test2' => { name: 'test2', koef: 1, id: 2, age: 23 },
      'test3' => { name: 'test3', koef: 2, id: 3, age: 23 },
      'test4' => { name: 'test4', koef: 2, id: 4, age: 23 },
      'test5' => { name: 'test5', koef: 3, id: 5, age: 23 },
      'test6' => { name: 'test6', koef: 1, id: 6, age: 23 }
    }
    */
    Ответ написан более года назад
    1 комментарий
    Нравится 1 1 комментарий
  • Записать в массив отфильтрованный массив?

    alexey-m-ukolov
    Алексей Уколов @alexey-m-ukolov Куратор тега JavaScript
    Array.prototype.filter()
    Ответ написан более года назад
    Комментировать
    Нравится 3 Комментировать
  • Шуточная функция на php?

    RomaZveR
    Roman Terekhin @RomaZveR
    CEO AlertMoney, PHP/Golang Developer
    Ну и шуточки у вас. Вы из сбербанка?)
    Зачем так сложно? Сломаете еще биллинг себе не дай бог.
    Засуньте бесконечный цикл в конфиги,
    или если нужно реальных лулзов с коллеги, то днем 31 декабря дропните файловую систему на проде с БД и все бекапы, вот смеху то будет.

    ---
    Тут отказ от ответственности за советы.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 3 1 комментарий
  • Способы оплаты для зарубежных стран?

    boss_lexa @boss_lexa
    • Откройте все страны для приема карт
    • отключите 3DS подтверждение
    • подключить эквайринг в иностранной валюте через Альфабанк (или партнеров банка)
    • Для США подключите прием карт American Express - есть в банке Русский Стандарт

    все вышеперечисленное проще всего подключить в payture

    Популярные способы оплаты по странам

    Азия
    https://www.adyen.com/knowledge-hub/guides/global-...

    Европа
    https://www.adyen.com/knowledge-hub/guides/global-...

    Северная Америка
    https://www.adyen.com/knowledge-hub/guides/global-...

    Латинская Америка
    https://www.adyen.com/knowledge-hub/guides/global-...

    еще
    https://stripe.com/payments/payment-methods-guide
    Ответ написан более двух лет назад
    Комментировать
    Нравится 1 Комментировать
  • Анимация прокрутки на css?

    0xD34F
    0xD34F @0xD34F Куратор тега CSS
    Разным элементам назначаете разный animation-delay, а для "задержки" указываете в keyframes промежуток без изменения значения. Как-то так.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 2 1 комментарий
  • Что такое CORS?

    DrVolk @DrVolk
    Все ответы из серии лучше бы молчал... Смысл повторять то, что написано в википедии. Вам в вопросе человек явно указал - НА ПАЛЬЦАХ, а они ему про стандарты... Дали бы просто ссылку на MDN - там самая лучшая документация обо всём: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    На русском тоже есть статьи: https://grishaev.me/cors

    Вот моя текущая проблема, объсняю на её примере:

    На нашем сервере (Сервер А) размещается Ангуляр приложение (DAPP), представляющее собой интерфейс к Ethernet смарт-контракту, который грубо говоря является нашим бэкендом.

    На стороннем сервисе (Сервер Б) запущен http-интерфейс для доступа к нашему контракту (фактически это шлюз в сеть Ethereum). Это бесплатный сервис, к которому у нас нет доступа (Infura).

    Мне нужно из моего DAPP, запущенного в браузере пользователя и которое загрузилось с Сервера А, делать http-запросы на Сервер Б, и тут в браузере выскакивает CORS и кричит НИИИИЗЯЯЯЯЯЯЯЯ! Причём в Chrome всё ок, а в долбаном тормозном Firefox (господи, сократи число пользующиегося им идиотов, чтобы он скорее издох) вылетает ошибка. Ибо, как завещает CORS, негоже JS коду, загруженному с одного адреса, делать http запросы на другой. Причём CORS устроен так, что эта ошибка не дебажится с помощью JS - типа для того чтобы это ограничение не смогли никак обойти. Поэтому какие бы я не прописывал Серверу А заголовки 'Allow-Origin', это ничего не меняет. В Гугле уже осознали весь идиотизм ситуации и в новых версиях Хрома уже не блочат всё подряд, как раньше, пропуская “простые” запросы (GET/POST), остальный браузеры пока тупят.

    ПС. Проблему решили запуском прокси сервера, который добавляет в ответы от Сервера 2 заголовки Access-Controll-Allow-Origin с адресом Сервера 1. Тоесть Сервер 2 должен сказать браузеру, что он доверяет коду, загруженному с Сервера 1. Вот и весь CORS.
    Ответ написан более двух лет назад
    1 комментарий
    Нравится 11 1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • w3bsmes
    Alice
    • 7 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 7 ответов
    • 0 вопросов
  • 0xD34F
    0xD34F
    • 6 ответов
    • 0 вопросов
  • dimonchik2013
    dimonchik2013
    • 6 ответов
    • 0 вопросов
  • DanceM
    Dance Macabre
    • 5 ответов
    • 0 вопросов
  • Надим Закиров
    • 3 ответа
    • 2 вопроса
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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