Базару 0, инфа добрая. Хотя про аварийные ситуации уже не ваша должна быть проблема... Главное чтобы программа после перезапуска работала стабильно, остальное уж не стоит брать во внимание как по мне. Еще тест на чистую машину тоже хз, обычно софты на дедиках запускают, а там каждый хостинг сам выбирает что блочить и как работать, так что..
Лайфхаки BAS
-
Решил разместить пример работы с встроенной в БАС БД mongo(монго) по средством nodejs.
Ссылки на документацию, версия в БАС 2.6
https://www.mongodb.com/docs/v2.6/
http://mongodb.github.io/node-mongodb-native/3.6/api/index.htmlИ еще нюанс, если будите большие списки гонять между БАС и nodejs, то лучше использовать временные файлы на диске, тк БАС передает их как JSON и это может занять приличное время на больших данных. Примерная схема такая:
- Список, которые надо обработать в Node пишем c помощью БАС на диск (если его там нет)
- В Node читаем его (встроенный модуль fs)
- Пропускаем через БД
- Результат снова записываем на диск с помощью Node
- В БАС читаем результат
update:
mongodb в БАС сильно устарела, поэтому следует использовать модуль не выше версии 3.6- 29.07.2022 Обновил пример, оптимизировал подключение к БД, для всех потоков используется один коннект
-
@GamiD said in Лайфхаки BAS:
Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работатьДружище, ты лучший. Я редко когда оствляю каменты чтобы не засорять флудом форум. Просто плюсую карму. Но тут просто не возможно пройти мимо и не сказать лично спасибо.
-
@Fox перебрав кучу генераторов html таблиц нашел лучший, https://www.tablesgenerator.com/html_tables рекомендую только его, делать в гугл таблицах а потом конвертировать хуже (проверено на личном опыте) там и код сразу копируешь без изменений)
-
@fluffik said in Лайфхаки BAS:
@Fox перебрав кучу генераторов html таблиц нашел лучший, https://www.tablesgenerator.com/html_tables рекомендую только его, делать в гугл таблицах а потом конвертировать хуже (проверено на личном опыте) там и код сразу копируешь без изменений)
Не думаю что это подходит под тему лайфхак БАС
-
Пауза в любой точки скрипта
Создаете ресурс с названием "Pause" тип "Из файла" выбираете пустой файл
В начало скрипта добавляете действие "Выполнить код" с содержимымfunction wait(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds){ break; } } } function _sa() { var pause = native("filesystem", "readfile", JSON.stringify({value: RInfo("Pause","Location"),base64:false,from:0,to:0})); if(pause.length != 0){ for (var i = 0; i < 1e7; i++) { var pause = native("filesystem", "readfile", JSON.stringify({value: RInfo("Pause","Location"),base64:false,from:0,to:0})); if(pause.length == 0){break;} wait(1000); } } }Если файл выбранный в ресурсе "Pause" содержит символы будет пауза
Чтобы продолжить работу скрипта нужно очистить файлТестовый скрипт
pause.xml -
@GamiD said in Лайфхаки BAS:
Пауза в любой точки скрипта
Создаете ресурс с названием "Pause" тип "Из файла" выбираете пустой файл
В начало скрипта добавляете действие "Выполнить код" с содержимымfunction wait(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds){ break; } } } function _sa() { var pause = native("filesystem", "readfile", JSON.stringify({value: RInfo("Pause","Location"),base64:false,from:0,to:0})); if(pause.length != 0){ for (var i = 0; i < 1e7; i++) { var pause = native("filesystem", "readfile", JSON.stringify({value: RInfo("Pause","Location"),base64:false,from:0,to:0})); if(pause.length == 0){break;} wait(1000); } } }Если файл выбранный в ресурсе "Pause" содержит символы будет пауза
Чтобы продолжить работу скрипта нужно очистить файлТестовый скрипт
pause.xmlИдея хорошая, как оказалось ты её реализовал ещё до того, как я об этом написал
:D
Но давай по порядку:- Объявление локальной функции в функции main приведёт к ошибке при вызове этой локальной функции из другой функции BAS. Для наглядности - тестовый скрипт
- Переопределяя функцию
_sa()не нужно было удалять рабочий код самой функции
ScriptWorker.SetCurrentAction(id)это может привезти к непредсказуемым багам и ошибкам
3. Переопределённая функция_sa()вернётся в исходное состояние после любого браузерного действия


Тестовый скриптфункция wait это отдельный кошмар
- Для чего в ней цикл на 10 000 000 итераций? (да 1e7, это число 10 000 000) Ведь для использования этого кода, как функцию задержки цикл for не подходит, например если указать время wait(100000), то все итерации завершатся быстрее, чем пройдёт указанное время.
- Условие
new Date().getTime() - start) > millisecondsявляется дико ресурсоёмким, так как в секунду происходит очень много итераций и выполнения кода. Можно запросто забить процессор на 100% в 2-3 потока с таким ожиданием. Лучше использовать асинхронный код ожидания или метод sleep() в BAS, но функцию тогда нужно будет оформить для работы с асинхронными методами BAS. - Для чего в функции
_sa()цикл с ожиданием? Эта функция будет вызываться передкаждымдействием BAS и так как функция не асинхронная, итерпретатор будет ждать, пока цикл из 10 000 000 итераций с секундной задержкой закончится прежде чем выполнитькаждоедействие (на выполнение первого действия в скрипте уйдёт чуть больше 115 дней) - Сама логика читать файл после каждого действия BAS тоже не очень хорошая идея. Каждый поток, после каждого действия в скрипте будет читать файл, винт вам не скажет спасибо. Лучше было ограничить чтение файла одним или несколькими потоками с записью данных в глобальную переменную.
-
@Fox Делал все на скорую руку=) я знал что кто ни будь в любом случае исправит мои ошибки и поставит вариант по лучше=)
А на счет ожидания я не придумал вариант лучше, встроенное действие "Спать" не заработала внутри действия "Выполнить код"
Мне интересно посмотреть на другой вариант где все мои действия упрощены -
@GamiD said in Лайфхаки BAS:
@Fox Делал все на скорую руку=) я знал что кто ни будь в любом случае исправит мои ошибки и поставит вариант по лучше=)
А на счет ожидания я не придумал вариант лучше, встроенное действие "Спать" не заработала внутри действия "Выполнить код"
Мне интересно посмотреть на другой вариант где все мои действия упрощеныЛады, думаю завтра накидаю вариант
-
@kroda said in Лайфхаки BAS:
@Fox said in Лайфхаки BAS:
Лады, думаю завтра накидаю вариант
9 days ago...
Я попробовал накидать на следующий же день, но не вышло сходу сделать человеческое ожидание, а потом на меня наложили волшебное заклинание и стало не до этого
:D
https://community.bablosoft.com/topic/10945/не-отправляет-куку-или-почему-запрос-не-присылает-то-что-я-хочу/6 -
Грубый хак, который убирает надпись ожидание элемента. Этот код надо выполнить через действие "выполнить код", где-то вначале скрипта, до браузерных действий.
without_waiting.xml -
@GamiD said in Лайфхаки BAS:
Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работатьЕсть обратный конвертер кук?
Из обычного текстового формата в БАС, со всеми параметрами. -
@BeerMaster вот
LogCookieToBASCookie.xml
Конвертирует cookie из логов

-
Не знаю или сюда относить или в другое место , но у меня возникал потребность настроить разгадывание какпчи под разные сервисы в том числе и под капмонстер для которого нужно вводить урл сервера если он на другом сервере находится. Так вот использовал для уникализации прописания переменных тернарный оператор , удобно и один кубик выполняет поставленную задачу для всех сервисов.
скрин прилагаю. Тернарник работает как для рекапчи так и для простых капч.
-
-
@m1st поддерживаю прогресс бар дальше 1го не идет
-
This post is deleted!
-
Если машина не оч сильная, или скрипт большой - вообщем если в записи при редактировании скрипта система слегка подвисает, лучше кубики на редактирование открывать не двойным кликом (потому что бас по каким то причинам его помимо открытия копирует в место где стоит курсор - потом в запуске ловим ошибки), а нажатием правой кнопки мыши и "редактировать",
-
-
Section Rules
Pinned Locked LifeHacks -
Правила Раздела
Pinned Locked LifeHacks -
-