Базару 0, инфа добрая. Хотя про аварийные ситуации уже не ваша должна быть проблема... Главное чтобы программа после перезапуска работала стабильно, остальное уж не стоит брать во внимание как по мне. Еще тест на чистую машину тоже хз, обычно софты на дедиках запускают, а там каждый хостинг сам выбирает что блочить и как работать, так что..
Лайфхаки BAS
-
Сегодня узнал о существовании метода BAS для определения имени файла лога Logger.GetFileName()
:DНа случай, если кому то будет необходимо, использовать в действии "выполнить код":
[[FILE_NAME]] = Logger.GetFileName() -
@Fox said in Лайфхаки BAS:
Сегодня узнал о существовании метода BAS для определения имени файла лога Logger.GetFileName()
:DНа случай, если кому то будет необходимо, использовать в действии "выполнить код":
[[FILE_NAME]] = Logger.GetFileName()Нужная вещь, я в веб интерфейсе, сначала получал весь лог, затем писал его на диск, потом открывал )
Теперь можно просто получить путь и открыть сразу
-
@Fox said in Лайфхаки BAS:
[[FILE_NAME]] = Logger.GetFileName()
а еще его можно очистить с помощью
Logger.Clear()Или указать свой путь для записи лога
Logger.SetFileName("C:/project/new_log.txt")Но меня больше интересует, как можно писать в лог удаленно? есть какое-то апи?
upd:
Вот нашел возможность писать в лог
Logger.Write('test')Как бы это использовать удаленно? через командную строку, запись файла или как-то ещё.
-
@graf said in Лайфхаки BAS:
Как бы это использовать удаленно? через командную строку, запись файла или как-то ещё.
Удалённо точно ни как не получится использовать
-
@Fox said in Лайфхаки 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)
}После этого скрипта не открывается мой проект, другие открываются
-
-
Section Rules
Pinned Locked LifeHacks -
Правила Раздела
Pinned Locked LifeHacks -
-
