Базару 0, инфа добрая. Хотя про аварийные ситуации уже не ваша должна быть проблема... Главное чтобы программа после перезапуска работала стабильно, остальное уж не стоит брать во внимание как по мне. Еще тест на чистую машину тоже хз, обычно софты на дедиках запускают, а там каждый хостинг сам выбирает что блочить и как работать, так что..
Лайфхаки BAS
-
С помощью бас запускаю веб сервер на локалке, на котором в цикле крутится скрипт PHP, вот мне нужно из этого скрипта отстукивать в лог. Вчера ковырял дебаг бас, который запускается в хром, работает на веб сокете и все его действия транслируются в лог программы. По всей видимости как-то можно использовать удаленный лог. Есть конечно и костыльный вариант, писать в файл с помощью пхп, а в ассинхронной функции бас читать этот файл и выводить в лог, но это уже крайний вариант
-
Не знаю подходящий ли раздел для лайфахака ведь он не косвенно относится к басу... но пусть будет)
В очередной раз полез чистить бэкапы проектов которые бас создает автоматически.

Решил в этот раз поставить и на свой пк очистку от старых файлов с помощью простых cmd команд.
Возможно на форуме уже выкладывали, но думаю не лишнем будет закинуть и сюда.
Данный набор скриптов использую на всех серверах, с помощью него очищаю старые логи баса, логи nodejs, уменьшать размер профилей и прочее.CMD команды: Можно использовать в bat скрипте и через планировщик выполнять каждый заданный промежуток времени:
Удаляет по маске *debug.txt
Del /S /Q "C:\Soft\"*debug.txtDel /S /Q "C:\Soft\"*node_log.txtУдаляет все файлы старше 30 дней. Я использовал для удаления временных картинок.
chcp 1251 echo Y | ForFiles /p "C:\Soft\Poster\Files\downloadimage\black2" /s /d -30 /c "cmd /c del @file" echo Y | ForFiles /p "C:\Soft\Poster\Files\downloadimage" /s /d -30 /c "cmd /c del @file"И по аналогии удаляются логи старше 3х дней
chcp 1251 echo Y | ForFiles /p "C:\Soft\Bots 1\appsremote\Bots\logs" /s /d -3 /c "cmd /c del @file" echo Y | ForFiles /p "C:\Soft\main\appsremote\Bots\logs" /s /d -3 /c "cmd /c del @file" echo Y | ForFiles /p "C:\Soft\Poster\Poster\appsremote\PinterestPoster\logs" /s /d -3 /c "cmd /c del @file" echo Y | ForFiles /p "C:\Soft\FeedCreater\appsremote\FeedCreater\logs" /s /d -3 /c "cmd /c del @file"Для уменьшения размера профилей баса. Удаляет папку Cache во всех профилях в папке D:\Profile\allprofile. В моих случаях не сказывалось на работоспособности авторизаций на сайтах.
@echo on cd /d "D:\Profile\allprofile" for /r %%i in ("Cache") do ( if exist "%%i" rd /s /q "%%i" )тоже самое но для папки Service Worker
FOR /R "D:\Profile\profile 16" %%G in (.) DO ( Pushd %%G Echo now in %%G for /f "delims=" %%a in ('dir /b *Worker* ') do rd /s /q "%%~dpnxa" Popd )Вы могли заметить что для удаления файлов по возрасту используется forfiles.
forfiles - это программная утилита для Microsoft Windows, которая выбирает файлы и запускает на них команду. Критерии выбора файла включают имя и дату последнего изменения.forfiles.exe должен находиться в папке откуда выполняется команда. Загружать exe сюда не стал т.к. virustotal ругается на Malicious.moderate.ml.score.
Насчет удаления кэша из папок профилей - может плохо работать на медленных или битых дисках. На всех серверах с SSD работает адекватно.Аккуратно с удалением файлов по времени изменения! Удаляет все файлы, фильтруйте если нужно работать лишь с определёнными, либо как я - указываю полный путь к папкам где лежат логи.
Если Forfiles не срабатывает то пробуйте поменять параметры например так:
echo Y | ForFiles /p "C:\Users\venom\AppData\Roaming\BrowserAutomationStudio\projectbackups" -s -m *.* -d -14 -c "cmd /c del /q @path" -
Есть несколько интересных функций, о которых мог кто-то не знать. Делюсь, вдруг кому пригодится:
directory_of('F:\\Text\\api.txt'); /* returns `F:/Text` */ filename_of('F:\\Text\\api.txt'); /* returns `api.txt` */ _user_data_folder(); /* returns `C:/Users/USERNAME/AppData/Local` */ -
Немного костыльный способ найти путь к вашему модулю, это пригодится для разработчиков модулей в которых используются доп файлы, чтобы в скомпилированном скрипте ваш код мог найти нужные файлы без лишних копирований.
-
@GamiD said in Лайфхаки BAS:
Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работатьПривет, сейчас не работает.
У кого-то есть готовое решение ? -
Так как на данный момент в модулях BAS не работают зависимости, то я придумал способ использовать модули (которые устанавливаются только при использовании, строка, путь и т.д) в других модулях, без необходимости использовать дополнительные действия.
Нужно добавить
/*Dat:eyJzIjoiaXNfc3RyaW5nIn0=*/в code.js файлы действий,eyJzIjoiaXNfc3RyaW5nIn0=- это закодированная в base64 строка{"s":"is_string"},is_string- это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).Этот код нужно добавлять только в те действия которые зависят от других модулей.
Пример модуля использующего действие модуля "Строка": TestModule.zip
Тестовый проект: depends.xml -
Встала перед мной задачка работать с большими файлами в бас. Стандартные инструменты для объемов не подходят, городить костыли не очень хочется а js из выполнить код оказался слишком медленным и прожерливым. Казалось бы безнадега, но ведь есть еще и node js. Вот краткий результат на обработку 123к строк по 11 регуляркам и записью в разные файлы

ВСе что нужно - включить node js без каких либо модулей и скопипасть этот код. Ну и синхронизироватьconst fs = require('fs'), readline = require('readline'); const instream = fs.createReadStream('pathToFile'); //тут пишем путь к файлу, который нужно сортировать const other = fs.createWriteStream( 'pathToOther', {encoding:'utf8'}); //а тут файлик для сохранения не прошедших проверку строк const myCheck = fs.createWriteStream( 'pathToResult', {encoding:'utf8'});//ну а этот файл сохранятся уже подходящие строки const rl = readline.createInterface({ input: instream, crlfDelay: Infinity }); let uniqMyCheck = new Set(); //если не нужно чистить от дублей, то заменить new Set() на [], в строках ниже add на push let uniqOther = new Set(); rl.on('line', (line) => { let currLine = line.toString(); switch (true) { case currLine.search(/regex/) > -1: uniqMyCheck.add(line); break; //тут проходит наша проверка default: uniqOther.add(line); break; //а тут складывается все остальное }; }); rl.on('close', () => { uniqOther.forEach(value => other.write(`${value}\n`)); uniqMyCheck.forEach(value => myCheck.write(`${value}\n`)); //ну а так записывается результат });Знающим, умеющим и практикующим за советы и/или доработку - большая благодарность
-
This post is deleted!
-
Установка модулей для nodejs прямо из nodejs xD
Возможно будет полезным, если модуль не устанавливается штатно -
Выше человек хотел перебрать большой массив на JS. Вот статья, человек сравнил кучу виду циклов на JS.
https://gist.github.com/DungGramer/7efdfefecaa1b8f5d6510202524dc751Самый быстрый - перебрать большой массив JS без NodeJS. Результат следующий (выводы из статьи)
Массив до 100 элементов
Лучший способ: --while forward: 0.01289999857544899msМассив 1000 элементов
Лучший способ:: pop: 0.0018000006675720215msМассив 10000 элементов и далее
Лучший способ:: pop: 0.0018000006675720215msУскорил свои циклы и перебор массивов для консольных команд на 40%+
-
@tet-vivi в BAS одинаково с Chrome +-. Chromium движок же
В какой среде он запускал - я хер знает. Наверно обычная консоль хрома, судя по командам console.log. В любом случае классический старый способ i = 0, array.length, i++ для 67 элементов в BAS выдал результат медленнее существенно.
-
@FastSpace said in Лайфхаки BAS:
В какой среде он запускал - я хер знает. Наверно обычная консоль хрома,
В nodejs, но в nodejs тот же движок V8, что и в chrome
-
-
@Antonio said in Лайфхаки BAS:
function _sa(id)
{
log(id)
ScriptWorker.SetCurrentAction(id)
}После этого скрипта не открывается мой проект, другие открываются
-
@RoselieDesa said in Лайфхаки BAS:
@Antonio said in Лайфхаки BAS:
function _sa(id)
{
log(id)
ScriptWorker.SetCurrentAction(id)
}После этого скрипта не открывается мой проект, другие открываются
Прочитайте тему целиком, я уже описывал причину
-
Добавлю здесь, что бы не потерять: Кликабельные ссылки из лога BAS
-
Пример подключения к уже запущенному браузеру БАС через puppeteer (nodejs)
Полезно для нормального перехвата и изменения запросов, генерация pdf и хз для чего еще ))Example of connecting to an already running BAS browser via puppeteer (nodejs)
Useful for normal interception and modification of requests, pdf generation and for something else )) -
Вход в твитер по токену.
Вставлять в функцию 'Загрузить cookies'{"cookies":[{"domain":".twitter.com","expires":1704067200,"httpOnly": false,"name":"auth_token","path":"/","priority":"Medium","sameParty":false,"secure":false,"session":false,"size":50,"sourcePort":80,"sourceScheme":"NonSecure","value":"[[TOKEN]]"}]}expires - выставлять на пару месяцев от текущей даты.
-
@hvrsh said in Лайфхаки BAS:
Вход в твитер по токену.
Вставлять в функцию 'Загрузить cookies'{"cookies":[{"domain":".twitter.com","expires":1704067200,"httpOnly": false,"name":"auth_token","path":"/","priority":"Medium","sameParty":false,"secure":false,"session":false,"size":50,"sourcePort":80,"sourceScheme":"NonSecure","value":"[[TOKEN]]"}]}expires - выставлять на пару месяцев от текущей даты.
Этот способ будет работать до 1 января 2024 года
:DЧто бы работало дольше, нужно будет увеличить значение даты в unixtime в ключе "expires"
-
-
Section Rules
Pinned Locked LifeHacks -
Правила Раздела
Pinned Locked LifeHacks -
-
