@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
При использовании Nodejs сбивается кодировка в части текста
-
Сбивается частично кодировка различных букв(русских) в переменной, при использовании этой переменной в Nodejs, причем эта переменная используется только для чтения данных из нее, поэтому не понятно почему текст туда перезаписывается, но с "кракозябрами" в виде знака вопроса - �� . Такое поведение наблюдается как в режиме "Записи", так и в режиме "Запуска". Особенно хорошо это проявляется при выполнении Nodejs в цикле
Версия BAS - 26.7.1
Версия Nodejs - 18.10.0 -
happens
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
Особенно хорошо это проявляется при выполнении Nodejs в цикле
Проблема постоянная или плавающая? Пока не удалось повторить, прикрепите тестовый проект, пожалуйста.
-
@m4zuper said in При использовании Nodejs сбивается кодировка в части текста:
Проблема постоянная или плавающая? Пока не удалось повторить, прикрепите тестовый проект, пожалуйста.
Проблема плавающая. Если не получиться с первого раза, попробуйте прогнать проект несколько раз. Проект сделан исключительно для теста и демонстрации проблемы.
-
@Fox said in [При использовании Nodejs сбивается кодировка в части текста]
А если убрать из вашего скрипта действия связанные с браузером и выводить в node js строку из переменной BAS, проблема будет повторяться?
Не пробовал. Данные парсятся со страницы лишь один раз, далее в цикле эти данные выводятся в лог(для примера), первые логи нормальные, но далее начинает ломаться кодировка. То есть парсится все нормально, ломается именно при работе с переменной в NodeJS
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
@Fox said in [При использовании Nodejs сбивается кодировка в части текста]
А если убрать из вашего скрипта действия связанные с браузером и выводить в node js строку из переменной BAS, проблема будет повторяться?
Не пробовал. Данные парсятся со страницы лишь один раз, далее в цикле эти данные выводятся в лог(для примера), первые логи нормальные, но далее начинает ломаться кодировка. То есть парсится все нормально, ломается именно при работе с переменной в NodeJS
Я нашёл проблему, сейчас оформляю тикет для разработчика
-
@Fox said in При использовании Nodejs сбивается кодировка в части текста:
Я нашёл проблему, сейчас оформляю тикет для разработчика
Напишите пожалуйста, в чем заключается проблема? Фикс ожидать в новом релизе софта или возможно на коленке реализовать какой-то костыль?
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
@Fox said in При использовании Nodejs сбивается кодировка в части текста:
Я нашёл проблему, сейчас оформляю тикет для разработчика
Напишите пожалуйста, в чем заключается проблема? Фикс ожидать в новом релизе софта или возможно на коленке реализовать какой-то костыль?
Проблема только косметическая, то есть если вы поместите необходимое сообщение в переменную BAS и выведите в лог не из node js, а через действие "Лог" то проблемы не будет
-
@Fox said in При использовании Nodejs сбивается кодировка в части текста:
Проблема только косметическая, то есть если вы поместите необходимое сообщение в переменную BAS и выведите в лог не из node js, а через действие "Лог" то проблемы не будет
У меня это глобальная проблема. Текст полностью перезаписывается в переменную, но с кракозябрами, при том, что переменная в NodeJS использовалась лишь для чтения.
Тот код, что выше, это лишь пример. Нет смысла использовать NodeJS для вывода в лог. Там содержится куда более серьезный код, который решает те или иные задачи, и периодически после NodeJS действия текст видоизменяется.
Да даже если и NodeJS используется только для вывода в лог, текст не должен перезаписываться в переменную, которая использовалась только для чтения.
Примеры, с проекта который я прикладывал выше
До NodeJS
После NodeJS
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
Да даже если и NodeJS используется только для вывода в лог, текст не должен перезаписываться в переменную, которая использовалась только для чтения.
Он не различает для чего использована переменная и перезаписывает ее в любом случае. Как вариант копировать данные в другую переменную перед использованием в ноде, но кракозябры это в любом случае баг. Я думаю проще создать тестовый проект который демонстрирует эту проблему. Судя по всему достаточно образца данных которые вызывают этот баг
-
@UserTrue said in При использовании Nodejs сбивается кодировка в части текста:
Я думаю проще создать тестовый проект который демонстрирует эту проблему
Тестовый проект прикреплялся к этому сообщению
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
Проблема плавающая. Если не получиться с первого раза, попробуйте прогнать проект несколько раз. Проект сделан исключительно для теста и демонстрации проблемы.
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
@UserTrue said in При использовании Nodejs сбивается кодировка в части текста:
Я думаю проще создать тестовый проект который демонстрирует эту проблему
Тестовый проект прикреплялся к этому сообщению
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
Проблема плавающая. Если не получиться с первого раза, попробуйте прогнать проект несколько раз. Проект сделан исключительно для теста и демонстрации проблемы.
Да, проблема странная, например если изменить название переменной BAS с "[[OLD_TEST_DATA]]" на "[[DATA]]", то данные в изначальной переменной BAS заменяться не будут. Или заменить действие "For" на "Foreach".. В любом случае я передал проблему разработчику
-
У меня еще проблема с кодировкой такая для действия лог, для комментариев в кубиках и для if:
работаешь, работаешь с одним проектом. Потом решил перенести часть действий в другой проект.
Открываешь notepad++ копируешь туда кубики, а они косячные!BAS:[{"name":"загрузили ya.ru","code":"/*Dat:eyJzIjoibG9hZCIsInYiOjEsImYiOltdLCJ1dyI6IjEiLCJ1dCI6IjAiLCJ1dG8iOiIwIiwidW0iOiIwIiwiZCI6W3siaWQiOiJMb2FkVXJsIiwidHlwZSI6ImNvbnN0ciIsImRhdGEiOiJ5YS5ydSIsImNsYXNzIjoic3RyaW5nIn0seyJpZCI6IlJlZmVycmVyIiwidHlwZSI6ImNvbnN0ciIsImRhdGEiOiIiLCJjbGFzcyI6InN0cmluZyJ9XX0=*/\n_load(\"ya.ru\", \"\", false)!","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":33438185,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""},{"name":"проверяем РёРЅРїСѓС‚","code":"/*Dat:eyJzIjoiZXhpc3QiLCJ2IjoxLCJmIjpbXSwidXciOiIwIiwidXQiOiIwIiwidXRvIjoiMCIsInVtIjoiMCIsImQiOlt7ImlkIjoiU2F2ZSIsInR5cGUiOiJ2YXIiLCJkYXRhIjoiSVNfRVhJU1RTIn0seyJpZCI6IkNoZWNrIiwidHlwZSI6ImNoZWNrIiwiZGF0YSI6ZmFsc2V9XSwicCI6eyJpc19pbWFnZSI6ZmFsc2UsImNzcyI6IiA+Q1NTPiAjdGV4dCIsInZlcnNpb24iOiIxLjAiLCJjc3MxIjoiID5DU1M+ICN0ZXh0IiwiY3NzMiI6IiA+Q1NTPiBmb3JtID4gOm50aC1jaGlsZCgzKSA+IDpudGgtY2hpbGQoMSkgPiA6bnRoLWNoaWxkKDEpIiwiY3NzMyI6IiIsImN1cnJlbnQiOiJtYXRjaCIsIm1hdGNoIjoiPk1BVENIPtC90LDQudC00ZHRgtGB0Y8g0LLRgdC1IiwieHBhdGgiOiIgPlhQQVRIPiBpZChcInRleHRcIikiLCJhdCI6IjIyMSwgMjkwIiwid2UiOmZhbHNlLCJmYSI6ZmFsc2V9fQ==*/\n/*Browser*/\n;_SELECTOR=\"\\u003eMATCH\\u003eнайдётся РІСЃРµ\";\nget_element_selector(_SELECTOR, false).nowait().exist()!\nVAR_IS_EXISTS = _result() == 1","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":192480547,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""},{"name":"","code":"/*Dat:eyJzIjoibG9nIiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6IkxvZ1RleHQiLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6ItCS0LLQvtC00LjQvCDRgtC10LrRgdGCIiwiY2xhc3MiOiJzdHJpbmcifV19*/\nlog(\"Р’РІРѕРґРёРј текст\")","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":569773080,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""}]testYA.xml
Обычным блокнотом их копировать чтоль?
Фигу. В обычном блокноте тоже кодировка сбилась.
Что делать?
Ладно для лога, для комментав все равно...но иногда бывает в if действия с кириллицей"name":"загрузили ya.ru
Этот момент как исправлять нормально сразу? -
@000 said in При использовании Nodejs сбивается кодировка в части текста:
У меня еще проблема с кодировкой такая для действия лог, для комментариев в кубиках и для if:
работаешь, работаешь с одним проектом. Потом решил перенести часть действий в другой проект.
Открываешь notepad++ копируешь туда кубики, а они косячные!Вам нужно выбрать кодировку в notepad++ "UTF-8" тогда ни каких проблем не будет

-
Еще пару багов нашел за эти дни, нет времени создавать темы и делать тестовые шаблоны. Если вкратце, не всегда присваиваются переменные из NodeJS, утечки памяти
-
@danielsdaniems said in При использовании Nodejs сбивается кодировка в части текста:
Еще пару багов нашел за эти дни, нет времени создавать темы и делать тестовые шаблоны. Если вкратце, не всегда присваиваются переменные из NodeJS, утечки памяти
Вы бы хоть в общих чертах описали как можно повторить эти проблемы намеренно