Задать вопрос
Контакты
Местоположение
Украина, Одесская обл., Одесса

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (7)

Лучшие ответы пользователя

Все ответы (15)
  • Принцип работы авторизации по смс, NODE JS?

    Babayka_od
    @Babayka_od
    Full-stack developer
    При отправке телефона на бекенд можно делать запись в БД вида
    {
      "id": "uuid,
      "challenge": "random string",
      "otp": "six-digit code", // для otp бессмысленно использовать bcrypt, потому что этот код одноразовый и у него малое время жизни
      "expires_in": timestamp
    }

    После отправить otp пользователю и записать challenge в cookie
    При отправке otp на бекенд нужно достать challenge из cookie, найти по этому challenge запись в базе и сверить код
    Ответ написан
    Комментировать
  • Валидация Кредитной карты на сайте?

    Babayka_od
    @Babayka_od
    Full-stack developer
    function luhnAlgorithm(digits) {
      let sum = 0;
    
      for (let i = 0; i < digits.length; i++) {
        let cardNum = parseInt(digits[i]);
    
        if ( i % 2 === 0) {
          cardNum = cardNum * 2;
    
          if (cardNum > 9) {
            cardNum = cardNum - 9;
          }
        }
    
        sum += cardNum;
      }
    
      return sum % 10 === 0;
    }
    Ответ написан
  • Как посчитать сумму за день?

    Babayka_od
    @Babayka_od
    Full-stack developer
    var json = JSON.parse(`{
      "response": {
        "items": [
          {
            "id": "898",
            "date": "18 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "19 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "19 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "19 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "20 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "21 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          },
          {
            "id": "898",
            "date": "21 января, 2021",
            "time": "22:38",
            "account": "%account%",
            "category": "%category%",
            "amount": "1000.00",
            "amount_html": "%html%",
            "type": "1",
            "type_html": "%type_html%",
            "balance": "%balance%",
            "comment": "-"
          }
        ]
      }
    }`);
    
    const accountsGroupedByDates = json.response.items
      .reduce((acc, item) => {
        if (Array.isArray(acc[item.date])) {
          acc[item.date].push(item)
        } else {
          acc[item.date] = [item];
        }
        
        return acc;
      }, {})
    const listBalances = Object.entries(accountsGroupedByDates)
      .map(([date, accountsList]) => {
        return {
          date,
          accounts: accountsList,
          dailyBalance: accountsList.reduce((acc, item) => {
            const amount = Number(item.amount);
            return item.type === '1' ? acc + amount : acc - amount;
          }, 0)
        }
      });
    
    $('div.timeline').append(listBalances.map(item => {  
        let div = `<div class="time-label"><span class="bg-primary">${item.date} - ${item.dailyBalance}</span></div>`
        item.accounts.forEach(_item => {
            div += `              <div>
                    ${_item.type_html}
                    <div class="timeline-item">
                      <span class="float-right" style="padding: 5px 10px 5px 5px;">${_item.amount_html}</span>
                      <h3 class="timeline-header">${_item.account}</h3>
                      <div class="timeline-body"><small class="float-right">${_item.time}</small><b>${_item.category}</b><br>${_item.comment}</div>
                    </div>
                  </div>`
        })
        return div;
    }).join(''));
    Ответ написан
    4 комментария
  • Как заставить функцию не реагировать на пробелы?

    Babayka_od
    @Babayka_od
    Full-stack developer
    Попробуй заменить t.split(' '); на t.trim().split(' '); Тогда пробелы с конца строки уйдут
    Ответ написан
    Комментировать
  • Как реализуется страница для просмотря в деталях продукта?

    Babayka_od
    @Babayka_od
    Full-stack developer
    Если не планируется SEO оптимизация итд, то проще всего сделать сайт на React/Vue с использованием их роутера, тогда при переходе на роут продукта данные будут скачиваться и отображаться
    Ответ написан
    Комментировать