• Как победить в олимпиаде по программированию?

    @dimoff66
    Кратко о себе: Я есть
    Насколько я понимаю в олимпиадах побеждают те, кого специально на них натаскивают преподаватели в специализированных классах. Но надо ли вам это? Просто участвуйте и получайте удовольствие от решения. Хотя лично для меня удовольствие решать задачи на скорость а не на качество - сомнительное занятие.
    Ответ написан
    Комментировать
  • Как оптимизировать данный код?

    @dimoff66
    Кратко о себе: Я есть
    Пространства для оптимизации здесь не сильно много, но например вот так

    (function() {
    
      'use strict';
    
      const formItems = document.querySelectorAll('.form .form__item');
      const formRadios = formItems.forEach(item => item.querySelectorAll('.form__label'))
    
      const formProgressLine = document.querySelector('.form .form__progress .form__progress-line');
      const formProgressStart = 100 / formItems.length;
      const result = document.querySelector('.result');
    
      setTimeout(() => {
        formProgressLine.style.width = `${formProgressStart}%`;
      }, 0);
    
      formRadios.slice(0, 2).forEach((formRadio, formRadioIndex) => {
        formRadios.forEach(radio => {
          radio.addEventListener('click', () => {
            setTimeout(() => {
              formItems[formRadioIndex].classList.remove('form__item--active');
              formItems[formRadioIndex + 1].classList.add('form__item--active');
            }, 1000);
            formProgressLine.style.width = `${formProgressStart * (formRadioIndex + 2)}%`;
          });
        });
      })
    
      formRadios[2].forEach(radio => {
        radio.addEventListener('click', () => {
          setTimeout(() => {
            form.style.display = 'none'
            result.classList.add('result--active');
          }, 1000);
        });
      });
    })();
    Ответ написан
    Комментировать
  • Формирование зарплаты у веб разработчиков?

    @dimoff66
    Кратко о себе: Я есть
    Это всегда торговля, фактически покер. На самом деле начальная зарплата не имеет особого значения. Если вы показываете себя ценным специалистом, неважно во фрилансе или на постоянке, тогда условия диктуете уже вы, потому что ценных специалистов всегда недобор. Если вы еще только учитесь или вы ленивы или бог обделил вас талантом, тогда конечно лучше устраиваться по договору и получать гарантированную зарплату, оговоренную на собеседовании.
    Ответ написан
    Комментировать
  • Как работает WEEK()?

    @dimoff66
    Кратко о себе: Я есть
    Потому что это понедельник и с понедельника начинается первая неделя, до первого понедельника неделя нулевая.
    Ответ написан
  • Как одновременно использовать более одного React-компонента, если только один Reducer?

    @dimoff66
    Кратко о себе: Я есть
    Если сортировка данных относится только к текущему компоненту, ее можно хранить в стейте компонента. В редаксе имеет смысл хранить только те данные, которыми пользуются несколько компонентов или которые нужно сохранить между сеансами. Если все же есть необходимость хранить сортировки и отборы именно в хранилище редакса, то просто создайте какие-то уникальные для компонента ключи и храните в них

    {
      items: [],
      settings: {
        key1: { filter: {}, sort: {}, page: 2 },
        key2: { filter: {}, sort: {}, page: 1 },
      }
    }
    Ответ написан
    Комментировать
  • IndexError: string index out of range - в чем причина?

    @dimoff66
    Кратко о себе: Я есть
    HelloDarknessMyOldFried, Я бы предложил
    следующий код

    genome = 'aaaabbcaa'
    cnt = 0
    res = ''
    for i in range(len(genome)):
      newSymb = i == 0 or genome[i] != genome[i - 1]
      if newSymb:
          if cnt > 0: g += str(cnt)
          res += genome[i]
          cnt = 1
      else:
          cnt += 1
    res += str(cnt)
    
    print(res)


    Ответ написан
    Комментировать
  • Не срабатывает условие, в чем ошибка?

    @dimoff66
    Кратко о себе: Я есть
    Циклы бессмысленны.

    Просто
    const elem = horoscope[dateNow][znak]
    const p = document.createElement('p');
    p.innerHTML = elem
    document.body.appendChild(p)


    И все.
    Ответ написан
    Комментировать
  • Продуктивно ли подобное обучение?

    @dimoff66
    Кратко о себе: Я есть
    Это вопрос психологии, иногда наоборот отдохнуть от компьютера и помедитировать над книгой, а потом пописать на листке бумаги очень помогает. Никто не знает мистерии когда прочитанное вдруг усваивается в голове, это просто происходит. Чем больше ты любишь программирование и чем менее ты напряжен - тем проще и быстрее это происходит. Посему единственный совет - не парься, учи в свое удовольствие и не пытайся понять. Чем больше пытаешься понять, тем сложнее понимаешь. Когда ты учишься в полностью расслабленном состоянии понимание магическим образом происходит само собой и моментально.
    Ответ написан
    2 комментария
  • Как оптимизировать код и чтобы все работало через один класс?

    @dimoff66
    Кратко о себе: Я есть
    Так

    const wrapFilters = ',1,2,3'.split(',').map(v => document.querySelector('.wrap__filter' + v))
      const filters = Array.from(['one', 'two', 'three', 'four'],
          (v, ind) => document.querySelector('.filter__' + v).addEventListener('click', () => {
              wrapFilters.forEach((wrapFilter, wrapIndex) => {
                const methodName = index === wrapIndex ? 'toggle' : 'remove'
                wrapFilter.classList[methodName]('opened')
              })
          }))


    или оставить два класса и сделать так

    const wrapFilters = document.querySelectorAll('.wrap__filter')
      const filters = Array.from(document.querySelector('.filter')).forEach((el, ind) => {
        el.addEventListener('click', () => {
          wrapFilters.forEach((wrapFilter, wrapIndex) => {
            const methodName = index === wrapIndex ? 'toggle' : 'remove'
            wrapFilter.classList[methodName]('opened')
          })
        })
      })
    Ответ написан
    Комментировать
  • Как оптимизировать SQL запрос с помощью JOIN для одинаковых вложенных SELECT?

    @dimoff66
    Кратко о себе: Я есть
    SELECT 
      product_id, 
      min_price, 
      max_price, 
      CASE WHEN ISNULL( t2.post_id) THEN 1 ELSE 82.23546 END as rate
    FROM 
      wp_wc_product_meta_lookup as t1
    LEFT JOIN wp_postmeta as t2 ON 
      t1.product_id = t2.post_id AND 
      t2.meta_key = 'convert_to_rub'  AND 
      t2.meta_value = 1
    Ответ написан
    6 комментариев
  • Как записать в переменную html-элемент отрендеренную Реактом?

    @dimoff66
    Кратко о себе: Я есть
    С помощью ref-ов
    https://learn-reactjs.ru/core/refs-and-the-dom

    Пример:

    class MyComponent extends React.Component {
        constructor(props) {
          super(props);
          this.myRef = React.createRef();
        }
        render() {
          return <div className={"someClass"} ref={this.myRef} />;
        }
      }


    this.myRef.current будет содержать ссылку на элемент с классом someClass
    Ответ написан
    2 комментария
  • Что писать в return?

    @dimoff66
    Кратко о себе: Я есть
    Функция не требует обязательного возвращения значения. Это опционально.
    Ответ написан
    4 комментария
  • Несколько await подряд?

    @dimoff66
    Кратко о себе: Я есть
    Что означает "преобразовано в промисы"? http.get() в вашем случае это и есть промис.
    await - не просто синтаксический сахар, это конструкция языка, которая блокирует любой нижеследующий код внутри асинхронной функции до окончания выполнения промиса, переданного ей параметром.

    Соответственно аналог вашего кода без использования await это

    http.get().then(a => http.get().then(b => {
      // Здесь дальнейший код
    }))


    Пример

    const p = (resolve, reject) => {
      setTimeout(() => resolve(new Date()), 2000)
    }
    
    const syncFn = () => {
      new Promise(p).then(console.log)
      new Promise(p).then(console.log)
    }
    
    const asyncFn = async () => {
      const a = await new Promise(p).then(console.log)
      const b = await new Promise(p).then(console.log)  
    }
    
    syncFn() 
    // Tue Jul 14 2020 15:17:19
    // Tue Jul 14 2020 15:17:19
    
    asyncFn()
    // Tue Jul 14 2020 15:17:49
    // Tue Jul 14 2020 15:17:51
    Ответ написан
    6 комментариев
  • Можно ли сделать SPA только фронтэндом (на Vue или React Js)?

    @dimoff66
    Кратко о себе: Я есть
    SPA - по определению приложение на фронтенде, оно не имеет прямой связи с бэкендом. Вопрос в том, где должны храниться данные для него. Вы можете хранить их на сервере, если ими пользуется множество пользователей и они изменяются со временем. Но если данные статичны или менять их может только сам пользователь на локальном компьютере, то нет никакой необходимости в бэкенде. Вы можете прописать данные в одном из файлов или использовать возможности хранения данных на стороне клиента - localStorage или indexedDB
    Ответ написан
    1 комментарий
  • Как сформулировать запрос?

    @dimoff66
    Кратко о себе: Я есть
    Делаете вложенную таблицу, где подсчитываете минимумы с группировкой по первому полю и затем основную таблицу соединяете с ней

    SELECT field1, field2, field3 FROM tableName as tMain
    INNER JOIN (
      SELECT field1, MIN(field2) as field2 FROM tableName GROUP BY field1
    ) as minTotals ON tMain.field1 = minTotals.field1 AND tMain.field2 = minTotals.field2
    Ответ написан
    Комментировать
  • Как узнать индексы трех самых больших значений массива?

    @dimoff66
    Кратко о себе: Я есть
    Самое оптимальное по скорости решение без сортировки всего массива

    const getTopIndexes = (arr, count) => {
      return arr.reduce((topIndexes, v, i, arr) => {
         let insertIndex = topIndexes.length
         for (let ind = topIndexes.length - 1; ind >= 0; ind --) 
           if (v > arr[topIndexes[ind]]) insertIndex = ind 
           else break
         
         topIndexes.splice(insertIndex, 0, i)
         return topIndexes.slice(0, count)
      }, [])
    }
      
    console.log(getTopIndexes([-7, 2, 7, 5, 1, 4, -5, 7], 3)) // 2, 7, 3
    Ответ написан
    Комментировать
  • Где и как найти работу в 16 лет (есть опыт)?

    @dimoff66
    Кратко о себе: Я есть
    Чувак, не засирай себе детство, его не вернешь. Не надо работать хотя бы до 19 без крайней необходимости
    Ответ написан
  • Как отсортировать словарь по значению?

    @dimoff66
    Кратко о себе: Я есть
    Потому что вы сортируете по строкам. Если нужно отсортировать по числам, то

    lambda kv: int(kv[1])
    Ответ написан
    Комментировать
  • Как обновить компонент при изменении state?

    @dimoff66
    Кратко о себе: Я есть
    Первое правило Redux - всегда спредить изменяемую величину, иначе редакс не знает, что вы ее поменяли. Используемый вами метод splice не меняет массив, да и map в данном случае бессмысленен. Верный код будет таким:

    const index = state.tasksData.findIndex(({ ID }) => ID === payload.ID)
    if (index > -1) return {
      ...state,
      tasksData: 
        state.tasksData.slice(0, index).concat(
          state.tasksData.slice(index + 1))
    }
    Ответ написан
  • Как сделать запрос к 3 таблицам с условием where?

    @dimoff66
    Кратко о себе: Я есть
    select ids.id, t1.deal_id, t2.track_id, t3.waybill_id from 
    (select '9014' as id) as ids
      left join table_1 as t1 on ids.id = t1.item_id 
      left join table_2 as t2 on ids.id = t2.item_id 
      left join table_3 as t3 on ids.id = t3.item_id


    Либо если без отбора, то
    select ids.id, t1.deal_id, t2.track_id, t3.waybill_id from
    (select t1.item_id as id from table_1 union  t2.item_id from table_2 union  t3.item_id from table_3) as ids
      left join table_1 as t1 on ids.id = t1.item_id 
      left join table_2 as t2 on ids.id = t2.item_id 
      left join table_3 as t3 on ids.id = t3.item_id
    Ответ написан
    1 комментарий