• Почему indexOf возвращает первый элемент массива?

    @alexalexes
    finalRes у вас типа целого числа в данной ситуации. У него не будет метода indexOf. Нужен финт ушами, чтобы принудительно преобразовать его в строку:
    let finalRes = item.number + "";
    PS: Ставите ; в строках JS, игнорирование их может сыграть злую шутку.
    Ответ написан
    5 комментариев
  • Как поменять формат вывода json?

    @alexalexes
    Попробуйте использовать опцию JSON_FORCE_OBJECT в функции json_encode.
    https://www.php.net/manual/ru/json.constants.php
    Добавлено:
    Ну, тогда item-ы кодируйте стандартной функцией, а сборку массива делайте кастомную:
    $imported_items[] = json_encode($product, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
    ...
    $preview_items[] =  json_encode($preview_product, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_FORCE_OBJECT);
    ...
    file_put_contents(sprintf(IMPORT_FILE, $id), '['.join(',', $imported_items).']');
    file_put_contents(sprintf(PREVIEW_FILE, $id), '['.join(',', $preview_items).']');
    Ответ написан
    1 комментарий
  • Реализоват функцию, которая принимает первым параметром объект, вторым - массив из цепочки свойств, по которому нужно пройти, чтобы получить значение?

    @alexalexes
    Зачем создавать отдельную переменную result и присваивать ей obj

    Разработчик этой функции перестраховался, присвоив объект obj локальной переменной функции result, потому что знает, что из контекста функции можно изменять obj во внешнем контексте, если изменять свойства объекта внутри функции, и далее по тексту запланирована некая рекурсия. Однако, переприсваивание самого obj не повлияет на внешний контекст, в этом случае можно не создавать отдельную переменную result (если ничего не делать со свойствами объекта).
    сразу в блоке условия let result = result[chain[i]]

    Ну, мысленно или явно оттрасируйте этот момент:
    // не объявили result, считай он такой
    // result  = undefined
    for (let i = 0; i < chain.length; i++) {
        if (result) { // undefined интерпретируется как false
         let result = result[chain[i]] // сюда вообще не попадаем
        } else {
          result = undefined // сюда попадаем при каждом i, причем result идет во внешний контекст
        }
      }
    Ответ написан
    Комментировать
  • Появилась ошибка при создании статьи в modx, MIGX, как решить?

    @alexalexes
    Unable to create a directory at mkdir

    Ошибка явно указывает, что php не может создать каталог с помощью функции mkdir.
    Настройте права доступа php сервера к файловой системе.
    Только будьте аккуратны, нужно дать права на запись пользователю linux, от которого работает сервер php, внутри каталога '/assets/resourceimages/', но не в коем случае не дать права на запись вышестоящим каталогам для этого пользователя, иначе любой зловред вам автоматически создаст вирусные файлы при помощи php, если получит возможность загружать скрипты.
    Ответ написан
  • Как задать приоритет класса CSS выше класса передаваемого по API?

    @alexalexes
    Добавьте "капельку" специфичности (тип div у класса sw-review-bottom, возможно блок имеет другой тип).
    #sw-app div.sw-review-bottom {
      display: none !important;
    }
    Ответ написан
  • "Сырые строки" в php. Есть ли такое?

    @alexalexes
    Heredoc в php?
    $a = <<<THISISHEREDOC
    
    THISISHEREDOC;
    Ответ написан
    Комментировать
  • Какие скорости должны быть у RAM DDR4?

    @alexalexes
    nvme m2.0 pcie 4.0

    В данном случае, говорите про параметры энергонезависимого устройства хранения информации, в данном случае SSD.
    И в Crystal Disk Mark вы смотрите параметры скорости чтения записи блоков различного размера, которая изменяется в мегабайтах в секунду.
    ram ddr4

    В данном случае вы говорите про оперативную память. У нее есть частота работы чипов - измеряется в Мегагерцах, от которой зависит пропускная способность, измеряемая в мегабайтах в секунду или гигабайтах в секунду. По каждому значению частоты можно определить пропускную способность, если посмотреть спецификацию ddr.

    Оперативная память решает задачу быстрого доступа данных для процессора и периферийных устройств. SSD - хранение данных в виде файлов и возможность их быстро загрузить в оперативную память.
    По какому принципу вы хотите сопоставить эти два разных типа устройств?
    Ответ написан
    Комментировать
  • Как перенести все новости или статьи документы и тд с одного сайта на другой modx?

    @alexalexes
    Сайты на таких CMS как ModX, обычно, переносят путем восстановления из резервной копии дампа файлов и базы данных, на которой была развернута CMS. Возможен перенос отдельных ресурсов, но если только разработчиком компонента предусмотрены функции импорта/экспорта данных по ресурсам этого типа компонента. Во всех остальных случаях - это очень проблемно, так как компонент может создавать не только страничные ресурсы, но и дополнительные поля, быть связанными с самописными чанками, сниппетами, плагинами.
    Ответ написан
    Комментировать
  • Как правильно вызвать функцию и отрисовать её содержимое в условии цикла без привязки к итерациям?

    @alexalexes
    Вы назвали переменную childBlock, а выбираете в нее все узлы - все выпадающие списки всех child.
    let childBlock = parentBlock.querySelectorAll('.select');

    Тогда уж делайте вложенный перебор. В этом случае будет понятно, на каком уровне foreach какие проверки вставлять.
    let childBlocks = parentBlock.querySelectorAll('.child');
    childBlocks.forEach(child) =>
    {
    // контекст одного элемента child
      let childSelects = child.querySelectorAll('.select');
      childSelects.forEach((select) =>
      {
       // контекст одного элемента select
      ...
       // конец контекста одного элемента select
      });
    // конец контекста одного элемента child
    });

    Точнее, вообще не так.
    Зачем вы выбираете селекты из всего parentBlock, когда нужен контекст текущей карточки.
    Селекты по текущей карточкe, в которой кликнули get, можно получить так:
    let childSelects = e.target.querySelectorAll('.select');
     childSelects.forEach((select) =>
      {
       // контекст одного элемента select
      ...
       // конец контекста одного элемента select
      });
    Ответ написан
    Комментировать
  • Как перевести дату в секунды если доступен только год?

    @alexalexes
    Вариант 1.
    1. Определите, что у вас - полная дата, или только год.
    2. Если только год, то приклейте 1 января.
    3. Конвертируйте в отметку Unix time как обычно.
    4. Если дата с фрагментом 1 января, то считаем, что известен был только год, выводим только год.

    Вариант 2.
    1. Определите, что у вас - полная дата, или только год. Результат сохраняем во временную переменную 1 - полная дата, 2 - только год.
    2. Если только год, то приклейте 1 января.
    3. Конвертируйте в отметку Unix time как обычно.
    4. Сохраните и отметку времени и результат выполнения шага 1 в отдельном поле (полная дата, или только год).
    5. Если полная дата, то конвертируем отметку времени в строковое представление, и берем всю строку. Если только год, то тоже конвертируем, но выводим только год.
    Ответ написан
    5 комментариев
  • Как лучше хранить заявки из форм в БД?

    @alexalexes
    А что вы так боитесь сделать в таблице кучу колонок?
    У записи заявки будет type_id - тип заявки, и в зависимости от этого будет использоваться разный набор колонок. Все колонки, которые опционально будут использоваться только в определенных типах будут с допущением null значениями.
    В основную записываем допустим имя, а в сводную то что придёт в формате ключ - значение.

    Имеет право на жизнь, но для разработчика будет сложнее сопровождать запросы. При написании запроса, если нужно вытащить или сравнить свойства заявок, будете писать на каждый такой момент подзапрос. Если захочется получать выборки с результатами в одну строку, то придется тоже использовать кучу подзапросов, возможно, сам текст запроса нужно будет формировать динамически.
    С точки зрения производительности. План запроса усложнится, нужно будет использовать индексы.
    2. Сохранять данные в json

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

    @alexalexes
    Промисы отточить... легко.
    Создайте форму, в которую можно накидывать список файлов. Файлы можно накидывать в любой удобный для пользователя момент времени до отправки формы. Файлы отправляются на сервер сразу как только пользователь выбрал файл, не отправляя форму. Пользователь может отменить процесс отправки файла. Форму можно отправить после того, как все процессы отправки файлов завершены. Если один из файлов по какой-то причине не отправился, форму отправлять нельзя.
    Ставите в инструментах разработчика "Сеть" - скорость 3G. И испытательный стенд готов. Оттачивайте навыки написания промисов.
    PS: Также с любой другой темой. Ставите себе практическую задачу, способ решения которой возможен с использованием инструмента по теме (а то и смежных тем) - и навык закрепится.
    Ответ написан
    Комментировать
  • Как сделать такую анимацию?

    @alexalexes
    63c28d38a84cb120374748.png
    Делаете два боковых контейнера (красные), чтобы были примерно по свойствам такие:
    position: absolute;
    width: 49%; /*ширина должна быть меньше 50%, но больше половины ширины основной колонки (синяя)*/
    left: 0; /*right: 0; - для правого контейнера*/
    overflow: hidden; /* чтобы текст не вылезал из бокового контейнера с другой стороны основной колонки */
    z-index: 1; /*у основной колонки (синяя) z-index должен быть больше, или текущее свойство меньше*/

    Теперь в эти контейнеры можете положить текст, обернутый в контейнер (абзац или div). Этими текстовыми контейнерами можно управлять теперь через css свойство transition left/right. Если возможностей css для анимации недостаточно, то привлекаете js для полного анимирования или только для переключения состояния анимации или для ее перезапуска.
    Ответ написан
  • Как перенести переменные с одного файла в другой?

    @alexalexes
    Любой неофисный редактор, чуть получше стандартного блокнота: Notepad++, Visual Studio Code, откроет файл размером в пару сотен мегабайт. Дальше будет зависеть от вашего мастерства использования регулярных выражений.

    Если процесс анализа файлов помимо замены, требует сопоставления xml-сущностей, то без скрипта не обойтись. Тогда вам нужно его разработать в любой программной среде/интерпретаторе, на котором можно написать коротенький скрипт "на коленке": PowerShell, NodeJS, Visual Basic в офисных приложениях, да хоть PHP.
    Ответ написан
    Комментировать
  • Когда можно купить домен?

    @alexalexes
    Должны сойтись все звезды на небе:
    1) Владелец домена не захочет продлевать аренду домена до даты окончания аренды.
    2) Он откажется это делать в период раздумья после даты окончания аренды (обычно, 1 месяц).
    3) Домен высвободится у доменного регистратора, и попадет в каталог высвободившихся доменов у доменного регистратора.
    4) Вы выиграете аукцион/вложите нужную сумму/вовремя перехватите домен по условиям этого каталога у доменного регистратора.
    Ответ написан
    1 комментарий
  • Как из угла получить вектор?

    @alexalexes
    {cos(угол), sin(угол)} - так получите координаты конечной точки вектора на единичной окружности относительно начала координат. Если нужен другой радиус, то умножьте координаты на радиус. Если нужно добавить смещение вектора, то добавьте к координатам смещение.
    Ответ написан
    Комментировать
  • Как правильно настроить все компоненты машины?

    @alexalexes
    Как замучить SSD...
    Можно немножко обеспокоиться и прикупить для SSD радиатор, если в комплекте с материнкой его не было.
    Но радиатор не всегда может встать, иногда компоненты на материнке слишком близко стоят, например, конденсаторы или слот PCI-E, что радиатор не влезет. А так, это не критично, если вы не будете SSD нагружать непрерывной перезаписью больших файлов.
    Как помучить оперативку....
    Качаете AIDA64 портативную версию.
    Открываете раздел "Системная плата" - SPD.
    Смотрите, какой набор цифр в таймингах памяти по максимальной частоте у каждой планки DIMM (желательно, чтобы планки не отличались по этим показателям).
    Идете в раздел "Чипсет".
    Смотрите, какие тайминги встали на материнской плате. Включился ли режим Dual channel.
    Если тайминги установлены по макс. частоте - то делать ничего не нужно. Если что-то начнете подбирать в биосе, то сделаете только хуже.
    Если цифры не встали по макс. частоте, что значит, есть какие-то проблемы совместимости оперативки и материнки. Можно принудительно подкрутить тайминги в биосе, но возможно, потом система будет работать нестабильно.
    Ответ написан
  • Где скачать драйвер тачпада для ноутбука toshiba L650?

    @alexalexes
    https://www.notebook-center.ru/driver_toshiba_s784.html
    L650 - их 4 разновидностей. Смотрите, какие еще кодовые обозначения есть на крышке корпуса.
    Ответ написан
    2 комментария
  • Можно ли установить операционку на которой работает MacBook на обычный офисный ноут ASUS?

    @alexalexes
    На виртуальной машине сможете запустить MacOS.
    На реальном железе... Ну, если сможете исправить такие зашитые параметры в оригинальном железе мака, то почему бы и нет. (ответ - не сможете)
    cpuidset
    DmiSystemProduct
    DmiSystemVersion
    DmiBoardProduct
    DeviceKey
    GetKeyFromRealSMC
    Ответ написан
    1 комментарий
  • Как внутри echo или переменной выполнить цикл и ещё одно echo?

    @alexalexes
    // Вы определитесь:
    $table = /* либо копите результат верстки в переменной table, а потом после обработки выводите все содержимое на строке N */
     '
        <tr>
        <td>'. $trtd .'</td> //отрисовывает первым столбиком таблицы номер сотрудника в таблице бд
        <td>'. $array[0]++ .'</td> //отрисовывает вторым столбиком таблицы имя сотрудника в таблице бд
        '. // зачем тут перед for конкатенация ?
    
    for ($td=1; $td<=$daysinmonth; $td++){
    // Либо сразу выводите результат через echo, не накапливая ничего для вывода контента
    echo '<td>тут какое-то значение, в будующем должен быть код с операторами if и т.д.</td>';}.' //отрисосывает оставшиеся столбцы в зависимости от кол-ва дней в месяце
        </tr>';// если вы множите ячейки дней месяца, то наверное, строку таблицы нужно закрывать не в теле цикла?
      /*строка N */  echo ($table); // вывод всего накопленного содержимого

    Оператор .= вам в помощь, чтобы добавить еще что-то к $table.
    Ответ написан