Генерация ресурсов перед началом работы скрипта



  • Столкнулся с тем, что понадобилось создать много почти одинаковых ресурсов (скрипт должен обрабатывать 20 сайтов, для каждого нужно указывать свои настройки, но тип настроек для каждого сайта одинаковый - Url, рефереры, запрет картинок, и т.д.). Пока сгенерировал переменные через скрипт и вставил в xml проекта, но парсится он слишком долго, и памяти много потребляет (в режиме редактирования, в скомпилированном варианте почти все норм), да и вообще такой подход не очень хорош, когда одинаковые переменные по 20 раз пишешь. Возможно, и другим был бы помог такой функционал. Можно было бы например указывать несколько ресурсов, объединить их, и создать копии, но изменять имя каждого по маске (например, указываем в имени каждого ресурса что-то типа %n, и создается указанное количество блоков объединенных ресурсов, в имени которых %n заменится на итерацию).



  • @blackhacker said in Генерация ресурсов перед началом работы скрипта:

    Столкнулся с тем, что понадобилось создать много почти одинаковых ресурсов (скрипт должен обрабатывать 20 сайтов, для каждого нужно указывать свои настройки, но тип настроек для каждого сайта одинаковый - Url, рефереры, запрет картинок, и т.д.). Пока сгенерировал переменные через скрипт и вставил в xml проекта, но парсится он слишком долго, и памяти много потребляет (в режиме редактирования, в скомпилированном варианте почти все норм), да и вообще такой подход не очень хорош, когда одинаковые переменные по 20 раз пишешь. Возможно, и другим был бы помог такой функционал. Можно было бы например указывать несколько ресурсов, объединить их, и создать копии, но изменять имя каждого по маске (например, указываем в имени каждого ресурса что-то типа %n, и создается указанное количество блоков объединенных ресурсов, в имени которых %n заменится на итерацию).

    хм, обрабатываю в многопотоке (16 сайтов по 600 потоков на каждый) 12 различных надстроек на каждый поток, и ни разу не возникло такой проблеммы..



  • @artihorror У меня в одном скрипте будут обрабатываться 20 сайтов, 16 надстроек у каждого. Выбрал данный подход, чтобы не запускать для каждого сайта отдельный скрипт (каждый запущенный экземпляр скрипта потребляет около 70-100мб оперативки помимо потоков), и еще для удобства перемещения и экономии места (распакованный экземпляр занимает около 400-500мб на жестком диске). У вас 16 сайтов в одном скрипте одновременно обрабатываются, или для каждого сайта отдельный экземпляр запущен?



  • @blackhacker
    Генерировать ресурсы перед началом работы скрипта можно в функции OnApplicationStart с помощью действий "Создать Ресурс" и "Добавить Элемент"



  • @support Нет, нужны ресурсы, которые вводятся перед работой скрипта (для настройки параметров), например:

    site_1_url
    site_1_visit_time
    site_1_referers_file
    site_2_url
    site_2_visit_time
    site_2_referers_file

    Но чтобы упростить задачу, можно сделать возможность ввода

    site_%n_url
    site_%n_visit_time
    site_%n_referers_file

    И тогда сгенерируется необходимое количество ресурсов
    Я позже отпишу, когда обновлю скрипт в магазине, чтобы наглядный пример был.



  • @blackhacker Пока такого нету(



  • @support Обновил скрипт в магазине, теперь есть наглядный пример, для чего это было нужно. Только напишите сразу, получится или нет сделать такую опцию, либо оптимизировать BAS для загрузки таких больших скриптов. Если не получится, я бы сделал сайт для генерации файла с настройками, который будет загружаться в проект, без использования ресурсов.



  • Вообще, изначально была идея уменьшить потребление памяти главным процессом (который управляет потоками), сделав возможность добавить несколько сайтов для посещения в один скрипт, а не запускать несколько копий скрипта. Получилось прямо наоборот, теперь основной процесс потребляет 1гб памяти. Это из-за большого xml файла проекта?



  • @blackhacker

    получится или нет сделать такую опцию

    Это должна быть не просто опция, тут должен быть какой-то механизм, который генерирует ресурсы автоматом. Пока не знаю как это сделать.

    либо оптимизировать BAS для загрузки таких больших скриптов

    Да, это я попробую.

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

    Я смогу оптимизировать под большие проекты с кучей ресурсов.

    Это из-за большого xml файла проекта?

    Из-за кучи ресурсов. Исправлю время загрузки и потребление памяти.

    А вообще идея сделать редактор пользовательского интерфейса через html очень хорошая.



  • @support Это вы мне предлагаете сделать, или в BAS хотите внедрить потом?



  • @blackhacker Оптимизацию для большого количества ресурсов я конечно сам. А вот с редактором интерфейса я бы не отказался от помощи, а то у меня тасков уже на год вперед есть.



  • @support Я имел ввиду про генерацию настроек проекта без использования ресурсов, только для этого скрипта предположил такое сделать) Я C# не на слишком профессиональном уровне знаю, тем более, много исходников BAS нужно будет перебирать. Но я очень хотел бы помочь, правда не знаю, как. Универсальный html интерфейс для любого проекта вряд ли получится сделать, без хорошего знания C# и исходников BAS. Но если все-таки можно, скажите - как, я сделаю не только для моего проекта, но и сделаю его универсальным (если такое возможно)
    Для каждого проекта разные настройки нужны, и переменные, поэтому универсальный не получилось бы сделать без изменения исходников BAS. А html интерфейс для настроек для моего проекта работал бы без изменения исходников BAS.



  • @blackhacker Нет, знать ни с# ни исходников БАС не нужно, нужно только html и js. Я просто думал про удобный конструктор интерфейса с перетягиванием, изменением размера полей вкладками и т. д., который бы конвертировался в ресурсы.



  • @support C этим наверно смог бы помочь) js и html знаю на большем уровне. Но ведь все равно ресурсы останутся и будут занимать много памяти. Я имел ввиду для экономии памяти использовать (сделать html интерфейс на стороннем сайте, где указываются все настройки, и потом сохраняются в json файл, который загружается в проект, и парсится на переменные)



  • @blackhacker Нет, то что они много занимают памяти и долго загружаются я исправлю, html интерфейс просто для удобства.



  • @support Постараюсь сделать в свободное время, правда не знаю, когда получится. Когда будет возможность, я напишу тут в теме, чтобы вы описали подробнее, какие файлы менять.



  • @blackhacker Не, не подожите, там нужно конкретное тз, так просто делать не нужно.



  • я двумя руками за кастомизацию пользовательского интерфейса методами html js. Могу поучаствовать, может какой то прототип дизайна в фотошопе сделать.



  • @blackhacker Про задачу помню, доделаю сразу после релиза сервиса с отпечатками.



  • @sitiros Не уверен, что нужен именно дизайн, можно взять обычную bootstrap тему.
    Скорее нужен конструктор, с помощью которого возможно было расположить разнообразные контролы и придать им приятный вид.
    Возможно взять готовый и поработать напильником.


Log in to reply