Задать вопрос
  • Почему данная конструкция не работает?

    @dimoff66
    Кратко о себе: Я есть
    Потому что
    weapon[param] вместо weapon.param
    Ответ написан
    2 комментария
  • Какое направление/сферу выбрать?

    @dimoff66
    Кратко о себе: Я есть
    Backend - Проще всего устроиться с PHP, сам начинал с него бэкенд, но сам язык корявый, писать на нем удовольствия мало, хотя это вопрос вкуса. Python наиболее динамично развивающийся, за ним будущее, но в нем нет любимой вами строгой типизации, посему если бэкенд с типизацией, то С#. Мне лично нравится как язык scala из строготипизированных, но не уверен что очень просто устроиться с позиции абсолютного джуниора, все же туда в основном переходят с джава или других языков. Но удовольствия получите массу, это безумный язык, самое крутое, что было создано в сфере программирования.
    Ответ написан
  • Что такое React Mock API? И как его использовать?

    @dimoff66
    Кратко о себе: Я есть
    Запрос к серверному api это асинхронные функции, которые посылают запрос и ждут ответа, соответственно вы можете подменить их на свои, например у вас есть объект с функциями серверного запроса

    const serverAPI = {
      getCategories: () => fetch('/categories'),
      getCategory: (id) => fetch('/categories/' + id)
    }


    И есть моковые запросы с теми же самыми ключами, что и serverAPI

    // Создадим базу данных
    const mockDB = {
      categories: [
        { id: 1, name: 'products'}, 
        { id: 2, name: 'services'}
      ]
    }
    
    const mockAPI = {
      getCategories: () => Promise.resolve(mockDB.categories),
      getCategory:  (id) => Promise.resolve(mockDB.categories.find(v => v.id === id)),
    }


    И создайте объект
    const currentAPI = serverAPI

    все запросы из кода делайте к currentAPI, переключать его с мокового на нормальный и наоборот можно
    Object.assign(currentAPI, mockAPI)
    Object.assign(currentAPI, serverAPI)


    Сохранять данные мокового DB можно в localStorage между сеансами. естественно это будет работать только локально
    Ответ написан
    Комментировать
  • Правильно ли реализовано тестирование?

    @dimoff66
    Кратко о себе: Я есть
    Как вариант

    import { createHashHistory } from 'history'
    import { createStore } from 'redux'
    import reducer from 'reducer'
    
    import { Provider } from 'react-redux'
    import { store } from 'store'
    
    const history = createHashHistory()
    const store = createStore(reducer(history))
    Ответ написан
    Комментировать
  • Как вывести результат число в блок по id?

    @dimoff66
    Кратко о себе: Я есть
    Вывод в div
    const writeToDiv = (divId, textToWrite) => {
      document.getElementById(divId).innerText = textToWrite
    }


    Добавление класса
    const redIf5Left = (divId, daysLeft) => {
      if (daysLeft <= 5) {
        document.getElementById(divId).classList.add("red")
      }
    }
    Ответ написан
  • Как вывести в таблице скажем 10 заказов, а всего заказов 100, для просмотра остальных заказов необходимо проскролить?

    @dimoff66
    Кратко о себе: Я есть
    Есть свойство clientHeight у родительского элемента(tbody например) и есть свойства top и height у строки с заказом, так вы можете вычислить последнюю видимую строку. Также после прокрутки можно использовать и свойство scrollTop показывающее насколько прокручен элемент, оно тоже должно быть включено в расчеты.

    Также есть готовые компоненты таблиц с автоподгрузкой при прокрутке.
    Ответ написан
    Комментировать
  • Определение уровня программиста по фрагменту кода?

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


    Можно понять:
    а) Насколько ясно он мыслит в принципе
    б) Насколько владеет всеми приемами языка (знание ES6 в случае js)
    в) Насколько внимателен к тому, чтобы другие понимали его код, то есть дает ли он идентификаторам понятные названия, не пренебрегает ли комментариями

    Про количество кода сказать трудно, иногда достаточно пары десятков строк, если код сложный, тогда сразу видео почерки мастера. Иногда кода может быть много, но он простой и однотипный.

    В любом случае сказать можно очень и очень многое именно в вопросах кода. Но есть еще понятие архитектуры, это касается и реакт-приложений, способности к выстраиванию архитектуры не всегда идут вместе со способностью кодить, хотя в 90% случаев идут, потому что все это следствие ясности мышления.
    Ответ написан
    Комментировать
  • React + php, правильно ли я понял суть?

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

    @dimoff66
    Кратко о себе: Я есть
    Сгодится что угодно(или даже ничего) основной тест для джунов - собственное тестовое задание от работодателя и/или живой кодинг несложных задач. Портфолио может и посмотрят мельком, но никто всерьез его рассматривать не будет хотя бы по той причине, что вы могли его просто стащить. Поэтому рассматривайте проекты с точки зрения возможности чему-то научиться, а не впечатлить работодателя.

    Я бы на вашем месте просто делал бы реальные тестовые задания с hh.ru, Это позволит вам понять где вы реально находитесь и быстро прокачаться. Когда тестовое задание будет сделано, его можно будет выложить в качестве портфолио.
    Ответ написан
    Комментировать
  • Проблема решения задачи js?

    @dimoff66
    Кратко о себе: Я есть
    Во-первых при умножении на несуществующий индекс по оси x будет возвращен NaN, NaN функцией Max считается больше любого числа, поэтому либо используйте другой алгоритм вычисления значений, учитывающий выход j за пределы допустимых индексов, либо перепишите строчку с Max как
    Math.max(arrMultiplication.map(v => isNaN(v) ? -Infinity : v))


    Но вообще код мягко говоря требует оптимизации
    Ответ написан
  • Как вы планируете свой рабочий день, чтобы не выгорать?

    @dimoff66
    Кратко о себе: Я есть
    Переходите на 4-х дневку, график 4 + 3 дает куда лучшее самочувствие. Днем работайте пока голова свежая, как чувствуете что начинаете тупить - прекращайте, все равно толку не будет. Больше прогулок, спорта, может занятие искусством - музыка, рисование.

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

    @dimoff66
    Кратко о себе: Я есть
    preg_match('/src=("([^"]+)"|'([^']+)')/', $img_src, $src);
    Ответ написан
    Комментировать
  • Как спроектировать БД для доски объявлений?

    @dimoff66
    Кратко о себе: Я есть
    products
    - id
    - name
    - category_id
    categories:
    - id
    - name
    - parent_id (для внутренней иерархии)
    properties:
    - id
    - name
    - category_id (может быть указана ссылка на группу товаров)
    - value_type (ENUM: "string", "int", "boolean", "date", "list")
    list_values: (Заполняется для свойств с типом list)
    - id
    - property_id
    - name
    prop_values:
    - product_id
    - property_id
    - value (все пишем в строку, потом при получении преобразуем в нужный тип)
    Ответ написан
  • Продублировать все значения массива php?

    @dimoff66
    Кратко о себе: Я есть
    $arr = Array(1, 2, 3, 4, 5);
    $newArr = Array();
    foreach($arr as $elem) {
        $newArr[] = $elem;  $newArr[] = $elem;    
    }
    var_dump($newArr);
    Ответ написан
    Комментировать
  • Как удалить текст в строке до определенного символа?

    @dimoff66
    Кратко о себе: Я есть
    substr($str, 0, strrpos($str, $symb))
    Ответ написан
    Комментировать
  • Почему запрос в базу выполняется больше 15 минут?

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

    (
                            SELECT SUM(total_paid_real / conversion_rate)
                            FROM ps_orders o
                            WHERE o.id_customer = a.id_customer
                              AND o.id_shop IN (1)
                              AND o.valid = 1
                        )          as total_spent,


    Попробуйте сначала перенести таблицу для этого поля в раздел FROM и потом уже соединять с таблицей a

    SELECT SQL_NO_CACHE a.`id_customer`,
                        `firstname`,
                        `lastname`,
                        `email`,
                        a.`active` AS `active`,
                        `newsletter`,
                        `optin`,
                        a.date_add,
                        gl.name    as title,
                        total_spents.total_spent
    FROM `ps_customer` a
             LEFT JOIN ps_gender_lang gl ON (a.id_gender = gl.id_gender AND gl.id_lang = 1)
             LEFT JOIN (
                            SELECT o.id_customer, SUM(total_paid_real / conversion_rate) as total_spent
                            FROM ps_orders o
                            WHERE o.id_customer IN (SELECT id_customer FROM `ps_customer` a WHERE a.deleted = 0)
                              AND o.id_shop IN (1)
                              AND o.valid = 1
                           GROUP BY o.id_customer
                        )     total_spents ON a.id_customer = total_spents.id_customer,
    WHERE 1
      AND a.`deleted` = 0
    ORDER BY `date_add` DESC
    LIMIT 0, 50


    То же самое и с другим подобным полем
    Ответ написан
    1 комментарий
  • За какой срок можно выучиться на junior front-end dev.?

    @dimoff66
    Кратко о себе: Я есть
    Пробуйте решать тестовые задания от реальных работодателей на hh.ru, они как лакмусовая бумажка помогут вам понять ваши пробелы и очень хорошо прокачают.
    Ответ написан
    Комментировать
  • Как правильно хранить в Базе данных Разные названия одного фильма, тип фильма?

    @dimoff66
    Кратко о себе: Я есть
    movies: id, original_language, year
    movie_names: movie_id, language, name
    movie_statuses: movie_id, status(enum), updated

    Даже если статусы будут расширяться энум всегда можно расширить, проблемы нет, статусы хранить лучше в отдельной таблице с истоиией изменения
    Ответ написан
    1 комментарий
  • Что это за формат даты - 1574467220?

    @dimoff66
    Кратко о себе: Я есть
    Это уникс, добавьте три нуля будет утс
    Ответ написан
  • Как во вложенном объекте заменить значения?

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

    const deepMerge = (a, b, howDeep = 1000) => {
       a = {...a}
       Object.entries(b).forEach(([key, value]) => {
          if (typeof value !== 'object' || howDeep < 1) {
             a[key] = value    
          } else {
             a[key] = deepMerge(a[key], value, howDeep - 1)
          }
       })
       
       return a;
    } 
    
    const c = deepMerge(a, b)
    console.log(c)
    Ответ написан
    1 комментарий