• Почему querySelector возвращает null?

    neuotq
    @neuotq
    Прокрастинация
    Перезаписываете в цикле
    contactList.appendChild(template)
    Вынести нужно его за цикл
    for(let valueKey in contact.contact_value) {
    //***
    }
    contactList.appendChild(template)
    Ответ написан
    Комментировать
  • Как реализовать карты с мониторингом объкта?

    neuotq
    @neuotq
    Прокрастинация
    Построение маршрутов нетривальная задача и для неё нужно огрмное число данных, так здесь вам придётся использовать API от владельцев этих данных(яндекс карты и тп).
    Трекинг легче. Просто раз в какое-то время сохраняете координаты в базу данных. Расстояние считаете кусочками по формуле геверсинуса, пример с кодом www.movable-type.co.uk/scripts/latlong.html
    Насчет лимитов. Сразу говорю вам не хватит, бесплатные лимиты чисто потестить с друзьями/тестерами. Ну и бюджет зависит от количество запросов, фич что вы используюете. Здесь тоже есть место для автоматизации и кеширования(в ущерб конечно интерактивность и удобства).
    Можете начать с openStreetmaps и для интерфейса. У них даже есть краудсорсевые маршутрные сервисы https://wiki.openstreetmap.org/wiki/Routing https://wiki.openstreetmap.org/wiki/Routing/online...
    Ответ написан
    2 комментария
  • Как сделать чтобы curl срабатывал раньше?

    neuotq
    @neuotq
    Прокрастинация
    Есть функция sleep()
    //SOME CODE
    // sleep for 10 seconds
    sleep(10);
    //SOME CODE AFTER 10 seconds PAUSE

    Но это так себе подход, де факто блокирующий выполнение скрипта(условно как подвис, хотя конечно другое).
    Ответ написан
    Комментировать
  • Добавление собственных CSS элементов поверх сайта при помощи devtools, как правильно?

    neuotq
    @neuotq
    Прокрастинация
    Ну так в вашем коде просто создаётся элемент, а потом добавляется в DOM дерево.
    В конкретно вашем случае это картинка, у которой заданы соответствующие CSS чтобы она была поверх других элементов, ну и в конце её адрес.
    Вы так же можете что-то свое сделать, не обязательно картинкой.
    Ответ написан
  • Как сделать доп. поля для laravel с зависимостью от выбранной категории?

    neuotq
    @neuotq
    Прокрастинация
    У вас есть два пути, у которых есть общая часть это данные о языке оригинале (правда не без подводных камней, есть двуязычные, но пока опустим).
    Первый вариант, вы в Song храните id песни, язык оригинала(пусть сейчас условно строка, 'en' или 'ru', но возможно id языка и связь с другой таблицей), ну и другие мета данные, айди автора, группы и прочее.
    а в отдельной таблице SongTranslations вы храните уже id, id песни, язык(или его id), название, текст.
    Второй вариант, мне он немного больше нравится в самой таблице Song сделать больше текстовое/json поле где мы будем хранить переводы песни в виде json (снова таки возможно он будет сложнее)
    {
    [
    {'en': { 
    title: 'название на английском',
    lyric: 'текст на английском'
    }
    },
    {'ru': { 
    title: 'название на русском,
    lyric: 'текст на русском'
    }
    }
    ]
    }

    Ну идею вы поняли
    Ответ написан
  • Почему не выводится максимальное значение листа бинарного дерева?

    neuotq
    @neuotq
    Прокрастинация
    Здесь у вас происходит объединение строк и js преобразует возвращаемое значение bst.getMax в строку, через вызов toString. Напишите свое преобразование, тогда будет работать как вы ожидаете, либо выводите конкретные данные (.data)
    console.log('Максимум ->' + bst.getMax(bst.root))
    Ответ написан
    Комментировать
  • Как будет лучше написать проект в портфолио, на чистом php или фреймворке?

    neuotq
    @neuotq
    Прокрастинация
    Если очень кратко - фреймворк и это Laravel.
    А если чуть подробней, то важнее показать, что решаешь конкретную проблему, можно даже взять какую-либо среднею проблему из популярных с задач/запросов на фриланс биржах.
    Показать, что понимаешь построение базовой структуры проекта, основные принципы проектирования (условные SOLID) и решаешь определенную задачу приносящую понятную очевидную пользу.
    Последнее тоже важно. Иногда пишут запудренные, оверинжиниринг штуки, но что она решает и зачем нужно ещё разобраться. А тут и понятная проблема, понятное решение, относительно красивый и понятный код.
    Ответ написан
  • Нужно ли добавлять код отслеживания Google Analitics на каждую страницу?

    neuotq
    @neuotq
    Прокрастинация
    Да, код нужно чтобы загружался и срабатывал на каждой странице, которую вы хотите отслеживать и видеть статистику использования.
    Насчёт index.php - обратитесь к вашему разработчику, тут зависит слишком от многих вещей.
    Я советую вам добавить google tag manager(его так же нужно установить на каждой странице), а уже в дашборде google tag manager добавлять аналитику и другие скрипты. С google tag manager вам не нужно будет лишний раз трогать разработчика, бОльшую часть задач по добавлению аналитики, метрики и других подобных штук нужных маркетологу(и около) можно добавлять самому. В интернете полно уроков на этому инструменту, советую изучить.
    Ответ написан
    Комментировать
  • Как сделать переключение тем на js?

    neuotq
    @neuotq
    Прокрастинация
    Объедините стили в один файл. По нажатию кнопки на body вешайте доп стиль для тёмной темы, например "theme-name_dark", ну и в css советующие изменения по наследованию.
    Ответ написан
    Комментировать
  • Можно ли использовать Gulp + Lavarel?

    neuotq
    @neuotq
    Прокрастинация
    В Laravel есть отличный инструмент для сборки фронта - Laravel Mix. Это обёртка над вебпак. Когда-то кстати он строился поверх gulp (и назывался Elixir).
    Вы можете отдельно использовать Gulp чтобы сделать чистые шаблоны и ваш фронтендер просто закинет js/css в нужное место и сделает декомпозицию шаблонов в blade шаблоны в Laravel.
    В целом сегодня немного странно использовать Gulp.
    Так же, если вы будете много работать с Laravel и в будущем, то я вам советую изучить Blade шаблоны и Laravel Mix и делать сами шаблоны полностью. Так же в Laravel есть инструменты для работы с фронтендом и в других вариантах, через API, через inertia и тп.
    Конкретный подход нужно определять вместе с командой в зависимости от задачи.
    Ответ написан
    6 комментариев
  • Почему в google analitics нет валюты белорусского рубля, BYN?

    neuotq
    @neuotq
    Прокрастинация
    Вопрос конечно немного посмешил, боюсь и рубль РФ уже скоро оттуда пропадет.
    А если без шуток, то просто не вошел в ограниченный список поддерживаемых локальных валют.
    Вот он:
    https://support.google.com/analytics/answer/620590...
    Ответ написан
    4 комментария
  • Существуют ли какие-то устоявшиеся паттерны, если я хочу всё приложение сделать в виде Laravel-Composer-пакетов?

    neuotq
    @neuotq
    Прокрастинация
    Насчёт конкретно подхода о котором вы говорите не скажу, скорее всего это плохая идея. Видел пару примеров несколько лет назад, бОльшая часть этих модульных подходов было нечто среднее между недомикросервисного подохода, с примесью разработки composer пакетов и элементами (концептуальными) плагинов wordpress.
    Или другой подход где "модули" laravel разделялись пространством имен и особой структурой, с некоторыми костылями для поддержки разделения кода. Этот подход формально лучше, но по факту обычное не нужное усложнение проекта. Но если вам интересно, можете изучить https://github.com/nWidart/laravel-modules
    Но как по мне, если уж и заморачиваться в подобном плане, то скорее наоборот отвязкой максимальной ядра приложения от любого фреймворка framework-agnostic подход.
    А так... Главный принцип, в целом кстати во многом пересекается с принципами микро сервисной архитектуры:
    есть определенная часть/логика приложения, которая может выполнять свою функцию независимо, которую могут писать разработчики независимо, можно выделить в отдельный пакет. Например, вы придумали свой крутой прокси изображений, и он как-то явно выходит за рамки вашей бизнес-логики приложения, более того возможно он пригодится в ваших других приложениях (или вы хотите поделиться с миром) делайте отдельный пакет.
    Ну и конечно у таких пакетов, могут быть зависимости в виде других пакетов.
    А вот прям делать декомпозицию приложения на пакеты, ради декомпозиции не стоит. Только если есть конкретный смысл что-то выделить.
    Примеры вот хорошие у Spatie https://spatie.be/open-source?search=&sort=-downloads .
    Там же можно посмотреть, как пакеты зависят друг от друга, например image от image-optimizer.
    Все их, достаточно популярные, пакеты вышли из практики разработки приложений для клиентов.
    Ближе к вашему примеру это проект Nova https://nova.laravel.com/ и тоже имеет кучу пакетов https://novapackages.com/ .
    Но здесь тоже нужно учитывать, цели самой Nova и почему такая организация. Сама Nova это как бы расширяемый прототип панели управления для CRUD приложений, она универсальная by design, поэтому и нужны доп пакеты, которые закрывают конкретные цели.
    Если у вас целевое приложение, то незачем его корневую бизнес логику куда-то выводить.
    Ответ написан
    1 комментарий
  • Как правильно реализовать прогрузку части данных в БД на Laravel?

    neuotq
    @neuotq
    Прокрастинация
    Это обычный постраничный вывод, только здесь сами страницы подгружаются динамически: по мере скролла происходит запрос к серверу.
    Советую внимательно прочитать https://laravel.com/docs/9.x/pagination , там есть вся нужная вам информация
    Ответ написан
    Комментировать
  • Как получить ID элемента который содержит что-то?

    neuotq
    @neuotq
    Прокрастинация
    //Получаем коллекцию всех элементов с классом Text
    const elementsTextClass = document.getElementsByClassName('Text');
    
    //Проходим по всем элементам
    for (const element of elementsTextClass) {
    //Проверяем текстовое содержимое текущего элемента
      if (element.textContent === 'Bye, Wrld!') {
       //Выводим id родителя
        console.log(element.parentElement.id)
      //Дальше нам не нужно перебирать элементы выходим из цикла
        break;
      }
    }
    Ответ написан
    2 комментария
  • Не работают inline routes react/инлайн роуты реакт, как исправить?

    neuotq
    @neuotq
    Прокрастинация
    Проверьте верно ли вы сделали настройки вашего веб сервера. Потому как в момент использование приложения, там url строка в браузере динамически подменяется и лишних запросов к вебсерверу (помимо запроса данных ) особо нет. А вот при обновлении, либо прямом заходе по url идёт прямое обращение к нему. И если у вас не верно настроен Apache или nginx (или что там у вас), то не найдя страницу/правила/логику для example.com/login (а у вас там что-то вроде index.html и дальше только папки с асетами и тп) он и вернёт соответствующий результат что ничего не наёдено.
    Ответ написан
    3 комментария
  • Как найти сумму трех чисел в функции?

    neuotq
    @neuotq
    Прокрастинация
    Вы забыли указать параметры при вызове
    let multiply = getMultiply(1, 2, 3);
    Кстати, неплохо бы сделать проверку на это внутри вашей функции. Либо сделать параметры по умолчанию
    Ответ написан
    5 комментариев
  • Область видимости массивов. Как сохранить данные в fetch...then?

    neuotq
    @neuotq
    Прокрастинация
    Смотрите, во-первых вы немного нарушили логику потока данных у вас в приложении. С одной стороны, вы используете асинхронный fetch, с другой пытаетесь в синхронном режиме инициализировать ApexCharts. В момент создания options и ApexCharts да, там будет не то что вы ожидаете.
    Поэтому вам нужно либо асинхронно создавать всё: грубо говоря засунуть в то место, где у вас и цикл, либо немного иначе использовать ApexCharts.
    Инициализировать его с пустыми данными и текстом загрузка, а потом через updateSeries обновить график, тоже внутри того же .then (data => ...) после цикла, те асинхронно после того, как пришли данные.
    Читайте тут:
    https://apexcharts.com/docs/update-charts-from-jso...
    Ответ написан
    2 комментария
  • Как правильно распарсить дату с временными зонами в Laravel?

    neuotq
    @neuotq
    Прокрастинация
    Зачем что-то парсить лишний раз. У вас приходят даты в UTC (Z в конце говорит об этом).
    Карбон отлично всё создаёт из этой строки
    $tm = Illuminate\Support\Carbon::create('2022-05-01T07:00:00.000Z');
    /*
    Illuminate\Support\Carbon @1651388400 {#4888
         date: 2022-05-01 07:00:00.0 +00:00,
       }
    */
    В базе мы тоже(надеюсь) храним в UTC
    <code lang="php">
    $tm->setTimeZone('Europe/Moscow');
    /*
    => Illuminate\Support\Carbon @1651388400 {#4887
         date: 2022-05-01 10:00:00.0 Europe/Moscow (+03:00),
       }
    */
    $tm->setTimeZone('Europe/London');
    /*
    => Illuminate\Support\Carbon @1651388400 {#4887
         date: 2022-05-01 08:00:00.0 Europe/London (+01:00),
       }
    */
    </code>
    Ответ написан
    5 комментариев
  • Как сохранить пользователя в БД, если пользователь совершил аутентификацию через ВК?

    neuotq
    @neuotq
    Прокрастинация
    0. В целом на уровне БД редко есть смысл запрещать пустой пароль.
    1. Инициируем создание объекта пользователя, заполняем поля, которые возможны (Имя, имейл если сетка отдает и тп)
    2. Сохраняем его куда-нить(ну допустим в локалсторе), создаем кукис, запоминаем что он незавершил регистрацию
    3. Пользователю показываем блокирующее любые другие штуки окошко/страницу с просьбой завершить регистрацию и ввести пароль.
    Ответ написан
    4 комментария
  • TypeError: Cannot read properties of null (reading 'role')?

    neuotq
    @neuotq
    Прокрастинация
    Оу, это печально известная ошибка на миллиард долларов, это если что не про конкретно вашу ошибку, а почему так можно делать.
    Здесь вы ищете роль
    const userRole = await Role.findOne({ role: 'user' });

    Если её нет, то соответвенно в userRole будет null, но далее вы без проверки обращаетесь userRole.role
    const user = new User({ username, hashPass, roles: [userRole.role] });

    Советую прямо сейчас начать использовать TypeScript, начните с простого пусть это будет проверка типов и отслеживание таких ситуации с возможным null.
    Это сэкономит кучу времени и кучу денег, значительно снизит непонятные ошибки на продакшене, которые сложно отловить.
    Ответ написан