[ZennoPoster] Швейцарский нож разработчика

Тема в разделе "Сайтостроение / Программирование", создана пользователем surok, 16 май 2018.



  1. surok
    ТопикCтартер

    surok

    Свой+
    Сообщ:
    384
    Лайк:
    449
    Баллов:
    63
    7 ноя 2015
    В каждом шаблоне ZennoPoster приходится использовать однотипные действия будь то проверка или конвертация данных, которые пользователь указал во входных настройках, или же загрузка страниц и поиск элементов с последующей проверкой были ли они найдены.

    В больших шаблонах все это превращается в нагромождение экшенов или же в простыни однообразного кода, а порой и в комбинацию этих факторов.

    Самые распространенные проблемы

    Большой объем однотипного кода
    Плохочитаемый код
    Трудности с поиском и исправлением багов

    Продукт состоит из следующего

    - DLL файл библиотеки ZennoExtensions
    - Файлы проекта с исходным кодом для самостоятельного изучения и доработки
    - Документация и инструкции по использованию
    - Демо шаблоны с примерами использования, открытые для просмотра

    Что представляет из себя библиотека ZennoExtensions?

    ZennoExtensions - DLL библиотека, расширяющая стандартный набор методов классов ZennoPoster. С ее помощью вы сможете разрабатывать шаблоны быстрее, повысить удобство разработки и качество продуктов, улучшить отладку и исправление багов.

    Содержимое

    - Методы расширения для работы с типами ZennoPoster:

    Instance, Project, Tab, HtmlElement, LocalVariable

    - Модуль для работы с аккаунтами
    - Модуль для работы с настройками браузера
    - Модуль логирования
    - Дополнительные классы-помощники
    - Ниже будут рассмотрены примеры использования разных частей библиотеки.

    Значительный функционал библиотеки представляет из себя набор методов расширения, благодаря чему можно напрямую работать с объектами стандартных классов ZennoPoster'а, не прибегая к созданию экземпляров сторонних классов.

    Большинство из методов расширений в библиотеке реализованы в стиле Fluent Interface.

    Что такое Fluent Interface

    Методы расширения библиотеки

    В библиотеке представлены методы расширения для следующих классов:
    - Instance (ZennoLab.CommandCenter.Instance)
    - Project (ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel)
    - LocalVariable (ZennoLab.InterfacesLibrary.ProjectModel.ILocalVariable)
    - Tab (ZennoLab.CommandCenter.Tab)
    - HtmlElement (ZennoLab.CommandCenter.HtmlElement)
    - Некоторые системные типы

    Проверка входных настроек

    Рассмотрим использование методов расширения на примере проверки входных настроек шаблона.

    Проверка входных настроек при запуске является хорошей практикой разработки шаблона.
    Она несет следующие преимущества:

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

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

    Здесь проверяются сразу 3 различных ситуации:

    1. Задал ли вообще пользователь файл с аккаунтами. Если файл задан, переходим ко второму шагу.
    2. Существует ли такой файл. Если файл существует, переходим к третьему шагу.
    3. Есть ли в файле содержимое.
    В случае если какое-то условие не выполнено, будет выведено Warning сообщение в лог и выкинуто исключение (экшн завершится по ветви BadEnd). Сообщение можно не указывать, тогда будет выдано исключение с сообщение по умолчанию. Но ваши сообщения помогут пользователю лучше понять в чем именно проблема.

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

    Как видите, код получился 2 раза больше, читаемость кода хуже, а если понадобится проверить еще несколько переменных, то проверка и вовсе станет огромной. К тому же поддерживать такой код будет сложнее - если вы захотите изменить логирование, придется менять его во всех местах.

    Мультилогер

    В библиотеке представлен класс MultiLogger который позволяет удобно логировать в несколько мест одновременно. Одной строчкой кода вы можете записать сообщение в файл, вывести его пользователю в виде MessageBox и в лог ZennoPoster. Также можно добавить в мультилогер свой вариант логирования, например, в БД.

    Менеджер аккаунтов

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

    Особенности
    —————————————————————————————————
    - Файл аккаунтов не подвергается изменениям
    - Для файла аккаунтов создается свой файл конфигурации, в котором содержатся все необходимые данные для последовательного выполнения аккаунтов как при работе в одном, так и в нескольких потоках
    - Аккаунты для работы распределяются равномерно - не возникнет такой ситуации, что один аккаунт отработает 10 раз, а другой 15
    - Для каждого аккаунта можно сохранять дополнительную информацию

    Менеджер браузера

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


    Генерируемые параметры
    —————————————————————————————————
    - Используемый браузер (Firefox, Chrome)
    - Используемое устройство (на данный момент только Windows)
    - Настройки браузера:
    - Использование JavaScript
    - Блокировка рекламы
    - Использование веб хранилищ (LocalStorage, SessionStorage, Global Storage, Database Storage)
    - Использование IndexedDB
    - Использование WebGL
    - Использование плагинов
    - DoNotTrack
    - Подмена часового пояса
    - Эмуляция WebRTC
    - Эмуляция Canvas
    - Свойства навигатора и HTTP заголовки
    - UserAgent
    - Language

    Парсер строк

    Данный класс-помощник позволяет в удобном формате работать с элементами строк. С помощью него можно дать возможность пользователям самостоятельно указывать формат используемых ресурсов. Это добавит гибкости в настройке и избавит от подстраивания используемых файлов под ваш шаблон.

    Например, можно вынести задание формата файла аккаунтов во входные настройки. Тогда пользователю нужно будет указать шаблон, содержащий ключевые слова и используемые разделители:

    login;password:proxy

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

    Инструкция по разработке шаблонов через Visual Studio
    Способы подключения библиотек к шаблону без использования ExternalAssemblies
    Список полезных сервисов и инструментов для разработки
    Подборка ссылок на обучающие материалы для самостоятельного изучения
    Способы дополнительного заработка на шаблонах

    Скачать бесплатно [ZennoPoster] Швейцарский нож разработчика
     
    Eluna, andy33, ridli84 и 2 другим нравится это.
  2. lokmadyr950502

    lokmadyr950502

    Сообщ:
    4
    Лайк:
    2
    Баллов:
    3
    7 ноя 2018
    тема жива?
     
    sdreamer нравится это.

Поделиться этой страницей