Базару 0, инфа добрая. Хотя про аварийные ситуации уже не ваша должна быть проблема... Главное чтобы программа после перезапуска работала стабильно, остальное уж не стоит брать во внимание как по мне. Еще тест на чистую машину тоже хз, обычно софты на дедиках запускают, а там каждый хостинг сам выбирает что блочить и как работать, так что..
Лайфхаки BAS
-
@fox Да, спасибо. Не знал как сделать кликабельность, а с выводом лога в файл не заморачивался, поскольку редко использую.
Общими усилиями функция доведена до нормального рабочего состояния и это хорошо.
Не плохо было бы ее еще замостырить в какой-нибудь экшин с соответствующими полями и чеками, а если б еще какой Colorpicker, то вообще было бы супер, но я еще пока толком не разобрался с разработкой модулей, хоть и имею общее представление и при сильном желании мог бы упаковать, но, это, пока, не в приоритете.
Еще, интересно, возможно ли, в файле, вместо стандартного black и red указывать значение параметра функции color? -
@fox И еще, на счет кликабельности...
Если бы разработчик увеличил время подсветки экшина после клика, скажем, так до 3-х секунд, то было бы лучше, а то, часто, пока, после клика перейду с одного окна в другое, то подсветка исчезает.
Естественно, эта проблема возникает, когда при записи браузер используется в полноэкранном режиме, но я, например, обычно так и использую -
@xclsv
Спасибо за свой метод. Как раз пригоден из-за первого пункта для меня.
Так же, если вы хотите спрятать свой код, но не хотите, чтобы при компиляции он сработал, то можете заюзать заведомо невыполнимые условия. Например:
If 0>1 или while 0>1
А внутри запихнуть конструкцию, которую выполнять не нужно.Что касается невозможности использовать функцию из-за того, что случаи могут быть разными, то тут необходимо создавать переменные входные параметры, которые можно задавать перед началом функции. Я раньше делал так.
-
@olegtut said in Лайфхаки BAS:
@xclsv
Спасибо за свой метод. Как раз пригоден из-за первого пункта для меня.
Так же, если вы хотите спрятать свой код, но не хотите, чтобы при компиляции он сработал, то можете заюзать заведомо невыполнимые условия. Например:
If 0>1 или while 0>1
А внутри запихнуть конструкцию, которую выполнять не нужно.Что касается невозможности использовать функцию из-за того, что случаи могут быть разными, то тут необходимо создавать переменные входные параметры, которые можно задавать перед началом функции. Я раньше делал так.
if и while можно писать со значением просто
0, чтобы они не выполнялись. -
@olegtut
С точки зрения мат.логики, If 0 также правильно, как if 0>1.
Операции внутри оператора условия выполняются тогда и только тогда, когда выражение истинно. В данном случае 0 преобразуется к false, то есть не к истине, а любое другое значение преобразуется к true. Если внутри выражения нет операторов, то это всё равно выражение.
Но согласен с тем, что человеческой логике это противоречит =) -
@olegtut said in Лайфхаки BAS:
@fox
Да, но мне этот метод не особо нравится. Я же люблю прослеживать семантическую логику везде. Мне нравится именно читать код. Ведь читая такую конструкцию, получаешь: "Если ноль, то", а это математически меня запутает :DЭто так, но это плохой тон. Можно вообще писать код в стиле обсуфикатора и он будет работать. Только Вас уволят за это, если работаете в компании )
-
Думаю очень годный лайфхак:
Чтобы убрать весь звук со страниц из скриптов BAS нужно добавить в файл chrome_command_line.txt строку
--mute-audioupd: Пользователь @Mic предложил альтернативный вариант отключения звука
https://community.bablosoft.com/topic/11145/bas-палится/24upd2: Начиная с 24 версии BAS звук можно отключить в настройках профиля браузера
chrome://settings/content/soundтестовый скрипт: 1934.xml
-
@drprime said in Лайфхаки BAS:
Добавлю так же полезную штуку - прогрессбар.
progress_maximum(100) progress_value(10)Выглядит это так

К сожалению прогресс бар виден только во вкладке "результаты", которую видят далеко не все пользователи. По этому я решил сделать прогресс бар в логе:

Функция рисует прогресс бар из таблицы с двумя колонками без рамки
progressbar = function(val,max){ var res = parseInt(val * 1000 / max ) if(val == 0) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="#F0FFF0"</td></tr></table>') if(val >= max) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="#32CD32"</td></tr></table>') if(val != 0 && val < max)log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="#32CD32" width="' + res + '"></td><td bgcolor="#F0FFF0" ></td></tr></table>') }Думаю описывать, что такое val и max в этой функции излишне
:D
Использовать необходимо вместе с действием "Очистить лог", я специально не стал добавлять очистку лога в саму функцию, на случай если помимо прогресс бара нужно что то вывести в лог.
Так выглядит лог без чистки:

html код таблицы лежит в открытом виде, так что изменить длину, цвет, или добавить текст не составит труда. Если этот прогресс бар зайдёт, добавлю дополнительную функцию настройки внешнего вида.
Вот тестовый скрипт
Ещё вариант с установкой цвета:
progressbar = function(val,max,color){ var res = parseInt(val * 1000 / max ) if(val == 0) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="#F0FFF0"</td></tr></table>') if(val >= max) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="' + color + '"</td></tr></table>') if(val != 0 && val < max)log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="' + color + '" width="' + res + '"></td><td bgcolor="#F0FFF0" ></td></tr></table>') }Пример использования
progressbar(35,100,"#00BFFF")
С глобальными переменными (или объектом в глобальной переменной) можно установить прогресс бар на несколько потоков:

-
Конвертор BAS Cookie для Google Chrome расширения EditThisCookie
Проверял на mail.ru, facebook.com и еще на нескольких сайтах возможно есть сайты на которых не будет работать -
@bartbtc said in Лайфхаки BAS:
@fox Здравствуйте, не могли подсказать или скинуть шаблон как распределить на несколько потоков?
распределить на несколько потоков что?
-
@bartbtc said in Лайфхаки BAS:
@fox said in Лайфхаки BAS:
С глобальными переменными (или объектом в глобальной переменной) можно установить прогресс бар на несколько потоков:
Этот прогресс бар
Вот вариант с костылями скрипт.xml (с обычными глобальными переменными и обычными условиями)
А для варианта без костылей немного подправил функцию:
progressbar = function (val, max) { var SettingsProgressbar = JSON.parse(P("basglobal", "SETTINGSPROGRESSBAR")) //прочитали настройки из глобальной переменной if (!SettingsProgressbar[(thread_number() - 1)]) SettingsProgressbar[(thread_number() - 1)] = {} SettingsProgressbar[(thread_number() - 1)].val = val SettingsProgressbar[(thread_number() - 1)].max = max PSet("basglobal", "SETTINGSPROGRESSBAR", (JSON.stringify(SettingsProgressbar))) //обновили настройки for (var i = 0; i <= SettingsProgressbar.length - 1; i++) { //проходим циклом все объявленные статус бары if (SettingsProgressbar[i]) { //если статусбар данного потока существует var res = parseInt(SettingsProgressbar[i].val * 1000 / SettingsProgressbar[i].max) if (SettingsProgressbar[i].val == 0) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="#F0FFF0"</td></tr></table>') if (SettingsProgressbar[i].val >= SettingsProgressbar[i].max) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="' + SettingsProgressbar[i].color + '"</td></tr></table>') if (SettingsProgressbar[i].val != 0 && SettingsProgressbar[i].val < SettingsProgressbar[i].max) log_html('<table style="border-color:#000000" width="1000" cellspacing="0" cellpadding="4" border="0"><tr><td bgcolor="' + SettingsProgressbar[i].color + '" width="' + res + '"></td><td bgcolor="#F0FFF0" ></td></tr></table>') log_html(" ") } } }Убрал определение цвета внутри потока (это не удобно, так как придётся создавать в скрипте кучу условий).
Вместо этого вынес определение цветов для всех статусбаров в глобальный массив объектов SETTINGSPROGRESSBAR, который объявляется в функции OnApplicationStart и там же заполняет цвета для всех статусбаров из массива [[NEW_LIST]]


в самой функции добавил цикл отрисовки с условием, на случай если ещё не все потоки начали работу:

Тестовый скрипт
-
@romanbiz said in Лайфхаки BAS:
Добавлена информация о том, как подключать разные программы на BAS к разным VPN соединениям/также можно разделять чтобы в BAS было VPN соединение, а на компьютере нет
Can you point me where can I find that info about VPN? Is it some 3rd party app that assigns VPN Adapters to different programs or what?
-
Решил разместить пример работы с встроенной в БАС БД 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 Обновил пример, оптимизировал подключение к БД, для всех потоков используется один коннект
-
-
Section Rules
Pinned Locked LifeHacks -
Правила Раздела
Pinned Locked LifeHacks -
-