Мелочи от зануды



  • Я заранее прошу прощения, что пощу много мелочей, но они бы реально бы могли сделать серьезную разработку на BAS гораздо эффективнее. Может быть, лучше, если я буду только в этот пост добавлять, чтобы не захламлять форум?

    Я в реальном восторге от возможностей этого инструмента. Автору огромное спасибо! Концептуально всё отлично продумано и функционал при таких концепциях хорошо масштабируем. Просмотрел гитхаб: структура и стиль кода отличные. Я так понял, автор один тянет и код, и доки, и поддержку, и маркетинг, и финансы, что довольно-таки адская работа, а еще своей жизнью надо заниматься. Умоляю, не бросайте проект! Мне купить премиум не проблема, сделаю. Но сколько надо клиентов по 80уе, чтобы был хороший стимул? Вирусные продажи ботов? Охх, монетизация...

    Сорри, если в чем-то еще не разобрался. Итак, поехали:

    • Как добавить эти действия, которые вылезают через попап по клику на элементе в окне браузера, но без кликов? Для консистентности UI нужно, чтобы они также были доступны через категории экшнов сверху.
    • Справка по API и саммари по схеме работы отдельных экшнов с отсылками к API - обязательно. Продираться через скрипт - гемор, серфить в гитхабе по js - гемор (interface/code/select находятся довольно быстро), по cpp - еще посложнее (было поздно, мне надо было в итоге дойти до StringBox и я отложил до следующего дня попытку понять, зачем же нужен onlywrite).
    • Как-то надо продумать визуальную работу с ответом "HTTP-клиента" по аналогии с браузерным. А то либо по памяти, либо через другие проги рыться и формировать XPATH.
    • Или же сделать способ конвертировать browser based экшны в HTTP-client based экшны.
    • Я в итоге закончил тем, что через действие "Выполнить код" создал библиотеку (синхронных) функций JS, чтобы потом их юзать в IF-ах, потому что так проще и удобнее. Возможно, имеет смысл сделать нечто подобное.
    • Относительные пути для ресурсов! Это очень важно! Релокэйшн скрипта и на дев и на прод машину (или, может, у кого еще и тест есть, а? ;) )
    • Добавить возможность ресайза области просмотра переменных.
    • Механизм аргументов (хотя бы) и возвращаемых значений (желательно) для асинхронных функций.
    • switch как экшн. Гемор с UI, понимаю, но надо бы.
    • Такое впечателение, что BAS теряет стек вызовов при отладке когда перемещаешь точку выполнения даже всего на пару экшнов вперед (чтобы банально пропустить пару экшнов) даже в той же функции. Потому что при дохождении до конца функции все кнопки отладки дизейблятся и точка выполнения ваще непонятно куда девается.
    • Горячие клавиши для отладки. Уж в каком стиле - студии или еще какой - it's up to you, но надо.
    • Добавить действия отладки - Step Over и Step Out.
    • Добавить возможность просмотра конкретного содержимого: текущего фингерпринта, кукисов браузера и HTTP-client, ресурсов, чтобы не морочиться с переменными и логом.
    • В окне Лог эти две hovering buttons, конечно, выглядят стильно, но часто мешают просмотру сообщений.
    • Чесна скажу, использование в менюшках вместо grey out для disabled items эффекта типа rough shadow выглядит не оч.

    Пока всё



  • @daemons said in Мелочи от зануды:

    Я в итоге закончил тем, что через действие "Выполнить код" создал библиотеку (синхронных) функций JS

    Уточню, что это не связано с предыдущими двумя пунктами, это отдельная тема.



  • Хинты (они же тултипы) бы для всех кнопок в UI, не только для некоторых. Многие хинты можно сделать посодержательнее.



  • Может быть, я не разобрался ещё, но есть ли способ выпонять селекторы на конкретном элементе или списке элементов? Чтобы найти нужный фрагмент и парсить дальше только внутри него. В текущем исполнении, вроде бы, надо просто родительский селектор ставить перед дочерним, но тогда это фактически просто длинный селектор от корня документа и движок селекторов отрабатывает каждый запрос дольше, чем мог бы, что неоптимально для производительности.



  • Удобная работа с потоками - одна из ключевых фич продукта. Но можно ли вообще для потока не инстанциириовать браузер? Для простых задач иногда достаточно только HTTP-клиента и браузер не нужен, а ресурсы жрутся, скорость thread spawning падает.



  • @daemons said in Мелочи от зануды:

    Удобная работа с потоками - одна из ключевых фич продукта. Но можно ли вообще для потока не инстанциириовать браузер? Для простых задач иногда достаточно только HTTP-клиента и браузер не нужен, а ресурсы жрутся, скорость thread spawning падает.

    Браузер не запускается, если в коде нет блоков, которые его используют.



  • @Antonio Ну я допускаю, что недоразобрался. Однако галочки браузеров появляются для каждого потока при выполнении в режиме Запуска. Это только чекбоксы, больше ничего?



  • @daemons, да.

    "Относительные пути для ресурсов! Это очень важно! Релокэйшн скрипта и на дев и на прод машину (или, может, у кого еще и тест есть, а? ;) )"

    Ресурсы задавать через настройки скрипта и на других машинах выбирать нужное расположение. Потом сохранять в файл эти настройки и для новых версий скрипта их сразу загружать из этого файла (импорт/экспорт настроек только для скомпилированных проектов работает).

    Более того, если у тебя премиум, то обновить скрипт на всех машинах можно перезаливкой новой версии в личный кабинет. У меня 8 вдс с БАСом сейчас, если что.



  • @daemons said in Мелочи от зануды:

    Как добавить эти действия, которые вылезают через попап по клику на элементе в окне браузера, но без кликов? Для консистентности UI нужно, чтобы они также были доступны через категории экшнов сверху.

    Мне кажется, что это сделано как раз, чтобы разгрузить интерфейс. Там и так с непривычки челюсть можно уронить.



  • @Antonio

    Ресурсы задавать через настройки скрипта и на других машинах выбирать нужное расположение. Потом сохранять в файл эти настройки и для новых версий скрипта их сразу загружать из этого файла (импорт/экспорт настроек только для скомпилированных проектов работает).

    Я этот маршрут уже рассматривал. Но костыльно всё равно.
    Вообще, надо бы глобально решить вопрос с current working directory или ввести понятие root directory. Сейчас есть блок "Путь к проекту", но на этапе задания ресурсов его не поюзаешь. Да и в целом абсолютные пути - это зло. Не абсолютное, но часто таки зло. Сейчас CWD, я так понимаю, это директория, в которой расположен исполняемый файл. Более логично было бы сделать ее директорией с файлом проекта .



  • @daemons said in Мелочи от зануды:

    Сейчас CWD, я так понимаю, это директория, в которой расположен исполняемый файл. Более логично было бы сделать ее директорией с файлом проекта .

    Дело в том, что архитиктура БАСа заточена под то, что ты проекты компилируешь и у каждого файла проекта все равно свой exe. Никто в здравом уме не гоняет в многопотоке проекты в режиме запуска из редактора.



  • @Antonio

    Как добавить эти действия, которые вылезают через попап по клику на элементе в окне браузера, но без кликов? Для консистентности UI нужно, чтобы они также были доступны через категории экшнов сверху.

    Мне кажется, что это сделано как раз, чтобы разгрузить интерфейс. Там и так с непривычки челюсть можно уронить.

    Про разгрузку я тоже думал, но постепенно начинающим врубаться юзерам (как я :)) перестаёт этого хватать. Иногда этот единственный маршрут через клики начинает подбешивать. Хочется просто добавить блок и быстренько набить там всё, что тебе надо.

    Может быть, надо упрятать это под кнопку Advanced...



  • @Antonio

    Дело в том, что архитиктура БАСа заточена под то, что ты проекты компилируешь и у каждого файла проекта все равно свой exe. Никто в здравом уме не гоняет в многопотоке проекты в режиме запуска из редактора.

    Тут я немного не соглашусь. Ибо это не единственный вариант использования BAS. Можно иметь множество ботов, скрейперов и проч. для одной глобальной задачи (у меня так, например). И у каждого - своя среда с данными. А среда с программными компонентами может быть общая. Я еще не до конца разобрался, как бы получше всё это обустроить в данном смысле, но буду дальше копать.



  • @daemons, так или иначе, можно задать папку в переменную из настроек или из файла в корне диска c, а потом в скрипте все пути строить относительно неё ([[moyapapka]]/url.txt). Не уверен, можно ли к ресурсам так путь прикрутить, но наверное можно создавать ресурсы не в настройках, а экшенами в onapplicationstart.



  • @Antonio

    можно задать папку в переменную из настроек...

    Да, я не спорю, workarounds есть, и не один. Но тогда красивый диаложек выбора ресурса не будет включать этот ресурс, ну там где-то еще что-то не так... Короче, опять щемящее чувство гемороя.



  • @daemons, так ты что хочешь - выбирать или наоборот, чтобы жесто прописано было? Можно эту папку прописывать в этом диалоге настроек - и то, и то получится. А то, что в БАСе не все интуитивно или не идеально, так это ты еще столкнешся не раз - тут надо вникать в специфику иногда. Это все не реально в обозримом будущем к идеальному виду привести, потому-что автор скорее функционал будет добавлять, чем такие мелочи ковырять.



  • К тому же, если ты сам нормально кодишь, то как раз можешь что-нибудь модифицировать и автор вполне может это добавить в релиз. Например, модуль работы с телеграмом написан участником форума.



  • @Antonio
    Я скажу так. Скрейперы, кролеры, парсеры, боты - всё это можно писать на чём угодно. Я вот до этого на чем только не писал: C#, PHP, JS, PowerShell, C++, t4, SQL-и разные, всего уж и не упомнишь. Всё время куски какие-то лепить надо было. И всегда была мысль сделать нечто систематизированное - библиотку - и там уж всё будет по уму. Но времени, как всегда, не хватало. Потом начал поиски - и после долгого выбора решил присесть на BAS.

    Вот и хочется, чтобы была специализированный функционал, удобная отладка, блок-схемо подобные сценарии выполнения (ну вот для меня эталон - это как в SSIS или ETL в SAP BW), возможность параметризации всего, что можно. Минимизировать время разработки, избежать разных геморов и костылей, сосредоточиться на главном.

    Концепция ресурсов тут хорошая, ничего не скажешь. Но то, что я не могу параметризировать это как мне надо (и неважно, какая у меня цель - я, как разраб с опытом, уверен, что она оправдана) - немного неудобно. Это значит, что геморы и костыли таки возникают на трудовом пути.

    Но продукт развивается, и это радует. Надежда, что мои feature reqs заметят, есть.

    Что-то многа букаф. Сорри.



  • Я не к тому, что не нужно придумывать возможные улучшения для БАСа, а к тому, что, как ты сам понял, автор один сейчас все делает, а планы большие. Он даже форум читает по своему расписанию, чтобы не перекидываться с разработки на фикс багов постоянно. Так что пока придётся во многих местах костыли использовать как не крути.



  • Еще есть некая специфика. Оказывается, Punto Switcher не работает нигде в BAS GUI. Прога в русской среде распространена.