• Как обработать массив переменной длины?

    @holllop Автор вопроса
    Сначала хочу выразить великую благодарность IvanU7n, он меня подтолкнул к ответу
    function accepting_expenses_array(req, res) {
      const expenses_array = req.body;
      const expenses_as_numbers = expenses_array.map(Number);
      
      // Определяем MAX(id_work) из таблицы "works"
      pool.query('SELECT MAX(id_work) FROM "works"', (error, maxResult) => {
        if (error) {
          throw error;
        }
        const maxIdWork = maxResult.rows[0].max;
    
        // Формируем INSERT-запрос и значения для вставки
        let insertQuery = 'INSERT INTO "expenses" (n_plan, type_work_id, printer_id, material_id, performer_id, format_id, n_sheets, n_page, n_ruined) VALUES ';
        let values = [];
        
        for (let i = 1; i < expenses_as_numbers.length; i += 8) {
          if (i !== 0) {
            insertQuery += ', ';
          }
          insertQuery += `($${1}, $${i + 1}, $${i + 2}, $${i + 3}, $${i + 4}, $${i + 5}, $${i + 6}, $${i + 7}, $${i + 8})`;
          // Формируем значения для вставки
          values.push(maxIdWork, ...expenses_as_numbers.slice(i, i + 8));
        }
        
        console.log(values);
        console.log(insertQuery);
      });
    }

    в консоле получаю
    INSERT INTO "expenses" (n_plan, type_work_id, printer_id, material_id, performer_id, format_id, n_sheets, n_page, n_ruined) VALUES , ($1, $2, $3, $4, $5, $6, $7, $8, $9), ($1, $10, $11, $12, $13, $14, $15, $16, $17), ($1, $18, $19, $20, $21, $22, $23, $24, $25), ($1, $26, $27, $28, $29, $30, $31, $32, $33)

    а это именно, то чего я хотел достичь
    Ответ написан
    Комментировать
  • Бесконечная загрузка страницы, как исправить?

    @holllop Автор вопроса
    Причина, по которой у меня возникала бесконечная загрузка, заключается в том, что когда я изменял массив orderData внутри цикла for. Это приводит к изменению длины массива, а следовательно, к изменению условия цикла for, которое проверяет i < orderData.length. В результате, цикл может выполняться бесконечное количество раз, вызывая бесконечную загрузку.
    Проблему решил так
    function processing (orderData, workData, workObjectData){
      console.log("доступны и в функции", orderData, workData, workObjectData);
      const updatedOrderData = [];
      for (let i = 0; i < orderData.length; i++) {
        const orderId = orderData[i].order_id;
        const matchingWorkItems = workData.filter(workItem => workItem.id_order === orderId);
        if (matchingWorkItems.length > 0) {
          matchingWorkItems.forEach(workItem => {
            updatedOrderData.push({ ...orderData[i], name_object: workItem.name_object });
          });
        }
        updatedOrderData.push(orderData[i]);
      }
      console.log("updatedOrderData", updatedOrderData);
    }

    так же хочу поблагодарить iljaGolubev за подсказку по оптимизации
    Ответ написан
    1 комментарий
  • Как добавить сайт в nginx с помощью node js?

    @holllop
    Я бы рекомендовал сразу на Node.js поставить модуль fs в вашем вопросе не как без него.
    Например
    1. Добавить новые конфигурации сайта в общий файл nginx conf.
    можно примерно таким образом.
    const fs = require('fs');
    const path = require('path');
    
    const nginxConfPath = '/etc/nginx/nginx.conf'; // путь к вашему файлу nginx.conf
    
    // Чтение содержимого nginx.conf
    const nginxConfContent = fs.readFileSync(nginxConfPath, 'utf8');
    
    // Дополнение новыми настройками
    const newConfig = 
        server {
            listen 80;
            server_name example.com;
            location / {
                root /path/to/new/website;
                index index.html;
            }
        }
    ;
    
    const updatedNginxConfContent = nginxConfContent + newConfig;
    
    // Запись измененного содержимого обратно в файл nginx.conf
    fs.writeFileSync(nginxConfPath, updatedNginxConfContent, 'utf8');

    2. Создать папку сайта.

    const newWebsitePath = '/path/to/new/website'; // путь к новой папке сайта
    
    // Создание папки
    fs.mkdirSync(newWebsitePath);

    в остальном не очень уверен по этому наверное лучше не буду писать )
    Ответ написан
    2 комментария
  • Как обеспечить возможность одновременного вызова эндпойнта, пишущего в БД?

    @holllop
    Попытаюсь ответить как-то комплексно.
    Дедлоки в базе данных могут быть вызваны различными причинами, такими как конфликты параллельных транзакций, блокировки на ресурсы и другие. В вашем случае, если у вас возникают дедлоки при одновременных запросах, использование транзакций может помочь, но вам также необходимо управлять блокировками и избегать конфликтов. То есть воспользоваться блокировкой на уровне строки (Row Locking) и блокировкой на уровне транзакции (Transaction Locking) это всё механизмы Sequelize. Вполне возможно, что даже при использовании этих механизмов могут остаться дедлоки. И в таком случае использование Redis будет необходимо.
    Ответ написан
    2 комментария
  • Не приходит в голову алгоритм лучше. Как сделать лучше?

    @holllop Автор вопроса
    В моём конкретном случае решением будет
    if(clickCount > 1){
                for (let i = 2; i <= clickCount; i++) {
                    elementstypeWorkFirst[i-2].innerHTML = '';
                }
            }
    Ответ написан
    1 комментарий
  • Как получить список файлов, начиная с определенного файла и заканчивая через определенное количество файлов?

    @holllop
    это какое-то задание, а не вопрос.
    но всё же отвечу
    $startFile = 'file3.ex';
    $fileCount = 10;
    
    // Получаем список файлов в папке
    $files = scandir('/путь/к/папке');
    
    // Находим индекс стартового файла
    $startIndex = array_search($startFile, $files);
    
    // Если стартовый файл найден
    if ($startIndex !== false) {
        // Отрезаем часть массива от стартового индекса
        $slicedFiles = array_slice($files, $startIndex, $fileCount);
    
        // Выводим список файлов
        foreach ($slicedFiles as $file) {
            echo $file . PHP_EOL;
        }
    } else {
        echo 'Стартовый файл не найден.';
    }
    Ответ написан
    6 комментариев
  • Куда развиваться верстальщику?

    @holllop
    Да и в целом от верстки я не получаю супер эмоций, помню когда-то давно создавал телеграм бота, по ощущениям было интересней. Т.е. наверное мне стоит уходить в бэк. Учить там nodejs какой-нибудь. Но какие перспективы? Буду ли я заниматься чем-то сложнее чем во фронте. Или все таки стоит сменить направление?

    сложно сказать стоит вам уходить ли в бэк написание одной программы не делает вас экспертом в этой области. Может вам повезло и вы не схватили все подводные камни, которые могли и вам кажется вау это так классно. (Всегда кажется, что у соседа морковка больше чем у тебя на грядке). Попробуйте написать бота посложнее и/или несколько может это ваше. Если очень кажется что вы хотите бэк, так в чём вопрос возьмите и попробуйте поднимите на какой-то ноде или пхп API( или сразу попробуйте написать базу данных подключить к ноде или пхп и работать с ней).
    Я думаю, что не буду добавлять, что сайты есть разные. И что для вас сложно, а что легко (или интересно/неинтересно) можете знать только вы. И вам довольно правильно отвечали до меня, что есть и социальные сети (которые по сути сайты) и большие компании со сложной структурой и сайтами. Просто по вашему написанному создается впечатление что вы только перекрашивали и передвигали блоки и сложных сайтов вообще не видели.
    Ответ написан
    Комментировать
  • Получаю в ответе NaN, хочу не Nan. Как исправить?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Первый и самый важный шаг вы сделали — идите дальше. Смотрите что у вас в document.getElementById('id').value, потом что в document.getElementById('id'), если в value пусто.
    Это называется "отладка" или "дебаг" и это примерно половина работы программиста.

    выводит новую форму
    Вангую, что в итоге у вас куча одинаковых форм и, соответственно, куча инпутов с id="id", что, естественно, недопустимо.
    Ответ написан
    1 комментарий
  • Где посмотреть и поучиться правильной постройки баз данных?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ну, с SQL все просто
    http://sql-tutorial.ru/ru/content.html
    https://www.sql-ex.ru/?Lang=0

    читаешь, проходишь до конца задачник и - тебе открываются миры, можешь вертеть данными как хочешь

    с NoSQL же нужна сооовсем не книга, нужно
    • владение нагрузочными инструментами
    • прочитанная книжка "Семь баз данных за семь недель"
    • общее понимание структур данных и их обработки в твоем языке

    это чтобы повесить шильдик, что ты NoSQL владеешь,
    но(!) можно сделать по-хипстерски: ты владеешь только JSON/Маршалинг/анмаршалинг , а все проблемы производительности - проблемы DevOPsа - так сильно проще, так многие живут и все при деле ))
    Ответ написан
    3 комментария
  • Как попробовать IT-профессию и понять для тебя ли?

    @holllop
    Что ж и я решил ответить на вопрос хоть и молод и зелен.
    Часто слышу об IT и как важны обществу программисты или компьютерщики, как мы , обыватели, их называем.
    Действительно важна эта отрасль так как в ней очень много специалистов, и действительно они важны. Так как если их не было, то не было бы социальных сетей, программ, автоматизированной работы на заводах ипд. итд.
    Очень много внимания к ним государства, СМИ, женщин. Со стороны это кажется странно-чрезмерно преувеличенным.
    Действительно иногда кажется, что проблема гиперболизирована. Но скажу что наверное лучше бы не бло внимания(разве что только со стороны женщин:)).
    И мне стало интересно, можно ли как-то взрослому познакомиться и понять IT-профессии? Не в теории, а практически? Можно ли это сделать через онлайн курсы или надо вживую?
    Так как IT профессий много и все они рассчитаны на разное, то для начала бы хотя бы определится чего вы хотите в итоге после знакомства(допустим какую-то свою мини программу для повседневности или телеграмм бота своего для своих нужд или личный сайт или что-то ещё). Насчёт онлайн курсов, это из области вечных вопросов, что лучше самому или через курсы ? Так как тут всё упирается в "ну можно и самому и информация доступна и бесплатно" или в "Да информации полно, но для меня слишком сложно\неструктуризировано\информация слишком противоречива\ самому слишком долго", я скажу что тут зависит всё от человека и его стремлений, потому что как самоучка может стать отличным специалистом, так и пройдя курсы вы можете не научиться не чему.
    У меня же еще есть вопрос - есть какие-то навыки из IT-сферы, которые можно было бы освоить и использовать в других профессиях? Если в целом профессию не получится или не захочется освоить, но какие-то элементы покажутся полезными?
    Тут конечно смотря какую профессию вы осваивали, но всё же лучше будет привести пару примеров. Примеры: вы сможете уменьшить бумажную работу в офисе(изучали VBA и с помощью его скриптов можно облегчить использование Word и Excel); вы изучали Python тут у вас целая россыпь возможностей автоматизации обычных процессов на своём компьютере, лень перебирать данные в папке Python поможет; изучали работу сисадмина ? отлично дома можете настроить сеть со всякими интересными вежами вроде удалённого доступа к принтеру, привязку всех жителей вашего дома к системе отслеживания где они сейчас(если что это для того что бы не волноваться)); примеров много и они будут разные это лишь те что пришли мне в голову, не буду брать такие вещи как уверенное пользование ПК т.к. я не понимаю как оно может быть не уверенным(клавиатура ещё не кого не кусала).
    И что важно в вашей профессии? Математический склад ума? Ведь это же не о любви к цифрам?

    Как не странно, но умение думать очень важно ). Не думаю что прям математический скорее аналитический, у вас всегда будет какой-то объём информации который вам нужно будет проанализировать и понять что с этим делать) Не думаю что программирование не равно любовь к цифрам, да есть алгоритмы, но чтобы прям к цифрам. Опять таки смотря какая IT профессия.
    Ответ написан
    1 комментарий
  • Как правильно RewriteRule в htaccess?

    @holllop
    Если я всё правильно понял, то чтобы ваше правило RewriteRule работало на адресе site.ru/RAZDEL/kupim-chistye-othody_3.html и других подобных адресах с разделами, вам нужно добавить модификатор NC (No Case) в ваше правило RewriteRule. Модификатор NC указывает на то, что сопоставление шаблона должно быть регистро-независимым.

    Вот как будет выглядеть измененное правило RewriteRule:

    RewriteRule ^[a-zA-Z\-_]+_([\d]+)+\.html index.php?id=$1 [L,NC]

    Добавив модификатор NC, строка ^[a-zA-Z\-_]+_([\d]+)+\.html будет соответствовать URL-адресам с разделами независимо от их регистра.

    Теперь ваше правило RewriteRule будет работать на адресе site.ru/razdel/kupim-chistye-othody_3.html, site.ru/RAZDEL/kupim-chistye-othody_3.html и любых других адресах с разделами.
    Ответ написан
    2 комментария
  • Какой стек необходим для изучения GraphQL и Apollo?

    @holllop
    Ну смотри. Если ты собираешься изучить работу с GraphQL и Apollo, то нужны хотя бы базовые знания по Node.js, так как Apollo в значительной степени связан с экосистемой Node.js и использует его для создания серверов GraphQL.
    Теперь к основным темам которые желательно знать(список не полный тут только те, что я вспомнил):
    1. Express.js: Express является популярным фреймворком для Node.js, и его знание будет полезным при создании сервера GraphQL с помощью Apollo. Рекомендуется изучить основы Express.js, такие как маршрутизация, обработка запросов и ответов, и middleware.
    2. Работа с базами данных: Apollo и GraphQL часто используются для запросов и манипуляций данных в базах данных. Поэтому полезно знать основы работы с базами данных в Node.js, такие как использование ORM (например, Sequelize или Mongoose), выполнение запросов SQL или MongoDB и работу с моделями данных.
    3. Асинхронное программирование: В GraphQL и Apollo запросы часто выполняются асинхронно. Поэтому знание принципов асинхронного программирования в JavaScript, таких как использование промисов, асинхронных функций и async/await, будет полезным.
    4. REST API: Хорошее понимание понятий и принципов работы с REST API также может быть полезным при изучении GraphQL, так как GraphQL может быть использован как альтернатива REST API. Рекомендуется изучить основы RESTful API и понимание различий между REST и GraphQL.
    Это те что мне первые приходят на ум возможно дополню список
    Ответ написан
    3 комментария
  • Как можно быстро подключить шрифты в css?

    @holllop
    Так давай по полкам всё. Я конечно сомневаюсь, что подобного вопроса не было, но всё же
    1. Локальное хранение шрифтов: Вы можете скачать шрифт в нужном формате (например, WOFF или TTF) и сохранить его в своем проекте. Затем в CSS вы можете использовать правило @font-face, чтобы подключить шрифт, указывая путь к файлу на вашем сервере. Например:

    @font-face {
      font-family: 'MyFont';
      src: url('/path/to/font.woff2') format('woff2'),//пример пути
           url('/path/to/font.woff') format('woff');//пример пути
    }

    2.Есть вариант автоматизации этих процессов. Для этого используйте инструментов сборки и управления зависимостями(например GULP или WEBPACK)
    3.Есть ещё возможность. Внедрение шрифтов через сервисы веб-шрифтов: Некоторые сервисы веб-шрифтов, такие как Google Fonts или Adobe Fonts, предоставляют быстрый и простой способ подключения шрифтов на вашем сайте, предоставляя вам готовый код CSS для вставки на ваш сайт.
    Ответ написан
    4 комментария
  • SyntaxError: Unexpected token 'P', "POST-запро"... is not valid JSON, как исправить эту ошибку?

    @holllop Автор вопроса
    у меня ошибка. я не правильно обрабатывал на сервере. Спасибо Михаил Р., он помог обнаружить ошибку.
    Ответ написан
    Комментировать