Satoshi Nakamoto, ты ли это?
- Просмотр профиля: Репутация: Lestat
Lestat
Регистрация: 14 фев 2014Off Активность: июн 25 2024 16:58
Статистика
- Группа: Platinum
- Сообщений: 748
- Просмотров: 23 342
- Возраст: Неизвестен
- День рождения: Август 31
Последние посетители
#327677 НЛО прилетело и опубликовало эту надпись здесь
Написано HelloMS на 04 Июнь 2018 - 15:28
#327676 НЛО прилетело и опубликовало эту надпись здесь
Написано НЛО на 04 Июнь 2018 - 15:27
НЛО прилетело и опубликовало эту надпись здесь
Anonymous poster hash: 1fa90...581
- 1
#327667 НЛО прилетело и опубликовало эту надпись здесь
Написано НЛО на 04 Июнь 2018 - 14:34
Привет.
Кто я?
#327550 Бесплатный доступ к облачному софту для каждого! - Радуйся бесплатному ме...
Написано buba на 03 Июнь 2018 - 18:02
От Довольного Арбитражника:
Вам просто так:
- 15
#326174 [Рогожкин] Льём трафик из Вконтакте 8
Написано provocator на 24 Май 2018 - 15:20
Название: Льём трафик из Вконтакте 8
Автор: Рогожкин
Наверняка вы уже слышали про курс [IMG] Льём трафик из ВК (Схема + Кейсы), который создал некий шум в интернете, а также многие знают что был [IMG] Повтор этого курса и также был успешен.. Потом был ТРЕТИЙ ПОТОК и именно он положил основу нового формата данного тренинга (можете почитать отзывы)! Ссылки на остальные потоки вы легко найдёте через поиск на сайте СКЛАДЧИК!
Продажник:
Скачать:
- 22
#325558 Красиков А. - Дистанционный курс Неврозы мегаполиса
Написано ДаДа это Я на 19 Май 2018 - 08:35
- 5
#324053 [ZennoPoster] Швейцарский нож разработчика
Написано trex на 07 Май 2018 - 10:09
Проблемы при создании шаблонов
В каждом шаблоне ZennoPoster приходится использовать однотипные действия будь то проверка или конвертация данных, которые пользователь указал во входных настройках, или же загрузка страниц и поиск элементов с последующей проверкой были ли они найдены.
В больших шаблонах все это превращается в нагромождение экшенов или же в простыни однообразного кода, а порой и в комбинацию этих факторов.
Самые распространенные проблемы
Большой объем однотипного кода
Плохочитаемый код
Трудности с поиском и исправлением багов
Рассмотрим небольшой кусок кода, который загружает страницу Яндекса, вводит поисковой запрос и нажимает кнопку поиска.
Примечание: здесь и далее приведенный код написан на языке C#.
Блоки кода PHP используются только для подсветки синтаксиса ввиду отсутствия блоков C#.
instance.ClearCookie();
var tab = instance.ActiveTab;
tab.Navigate("ya.ru");
if(tab.IsBusy)
{
tab.WaitDownloading();
}
var searchInput = tab.FindElementByXPath("//input", 0);
if(searchInput.IsVoid)
{
throw new Exception("Поле ввода запроса не найдено.");
}
searchInput.SetValue("test request", "full", false);
var findButton = tab.FindElementByXPath("//button" , 0);
if(findButton.IsVoid)
{
throw new Exception("Кнопка \"Найти\" не найдена");
}
findButton.Click();
Наверняка подобный код вам знаком. Проверка загрузки страницы, проверка найденных элементов на странице. Все эти рутинные действия есть в каждом шаблоне, работающем с браузером.
Так почему бы не сделать эту рутину менее утомительной?
Взгляните на этот код, который делает то же самое, что и код выше:
var tab = instance.ActiveTab;
tab.Go("ya.ru").WaitLoading();
tab.GetElementByXpath("//input").ThrowIfNull("Поле ввода запроса не найдено.").SetVal("test request");
tab.GetElementByXpath("//button").ThrowIfNull("Кнопка \"Найти\" не найдена").Click();
Такой код гораздо компактнее, быстрее пишется и проще читается.
Вы сможете конструировать подобный код с помощью библиотеки ZennoExtensions.
Продукт складчины состоит из следующего
- DLL файл библиотеки ZennoExtensions
- Файлы проекта с исходным кодом для самостоятельного изучения и доработки
- Документация и инструкции по использованию
- Демо шаблоны с примерами использования, открытые для просмотра
Что представляет из себя библиотека ZennoExtensions?
ZennoExtensions - DLL библиотека, расширяющая стандартный набор методов классов ZennoPoster. С ее помощью вы сможете разрабатывать шаблоны быстрее, повысить удобство разработки и качество продуктов, улучшить отладку и исправление багов.
- Методы расширения для работы с типами ZennoPoster:
- Модуль для работы с аккаунтами
- Модуль для работы с настройками браузера
- Модуль логирования
- Дополнительные классы-помощники
- Ниже будут рассмотрены примеры использования разных частей библиотеки.
Значительный функционал библиотеки представляет из себя набор методов расширения, благодаря чему можно напрямую работать с объектами стандартных классов ZennoPoster'а, не прибегая к созданию экземпляров сторонних классов.
Большинство из методов расширений в библиотеке реализованы в стиле Fluent Interface.
Те, кто работал с LINQ уже знакомы с этим понятием. Методы LINQ возвращают результирующую коллекцию, на которой мы вновь можем использовать методы LINQ:
list.Select(…).Where(…).Select(…).Where(…) и т.д.
То есть вызовы методов объединяются в цепочки вызовов. Это и есть Fluent Interface.
Методы расширения библиотеки
В библиотеке представлены методы расширения для следующих классов:
- Project (ZennoLab.InterfacesLibrary.ProjectModel.IZennoPosterProjectModel)
- LocalVariable (ZennoLab.InterfacesLibrary.ProjectModel.ILocalVariable)
- Tab (ZennoLab.CommandCenter.Tab)
- HtmlElement (ZennoLab.CommandCenter.HtmlElement)
- Некоторые системные типы
Проверка входных настроек
Рассмотрим использование методов расширения на примере проверки входных настроек шаблона.
Проверка входных настроек при запуске является хорошей практикой разработки шаблона.
Она несет следующие преимущества:
- Устранение багов из-за некорректно введенных данных
- Пользователи смогут понять и исправить свою ошибку во входных настройках не прибегая к вашей помощи
Принцип проверки состоит в том, чтобы проверять корректность всех введенных в настройках данных. Если какие-то данные введены не правильно, нужно оповестить об этом в логе и прекратить дальнейшее выполнение шаблона.
Для этого в библиотеке есть набор методов расширения для локальных переменных.
Методы можно соединять в цепочки вызовов для проверки переменной на соответствие нескольким условиям.
Throw.InvokeBeforeExceptionThrowing = args =>
project.SendWarningToLog(args.Message, true);
project.Variables["AccountsPath"]
.ThrowIfEmpty("Не указан путь к файлу с аккаунтами.")
.ThrowIfFileNotExists("Файл с аккаунтами не найден.")
.ThrowIfTextFileIsEmpty("Файл с аккаунтами пуст.");
Здесь проверяются сразу 3 различных ситуации:
- Задал ли вообще пользователь файл с аккаунтами. Если файл задан, переходим ко второму шагу.
- Существует ли такой файл. Если файл существует, переходим к третьему шагу.
- Есть ли в файле содержимое.
В случае если какое-то условие не выполнено, будет выведено Warning сообщение в лог и выкинуто исключение (экшн завершится по ветви BadEnd). Сообщение можно не указывать, тогда будет выдано исключение с сообщение по умолчанию. Но ваши сообщения помогут пользователю лучше понять в чем именно проблема.
А вот как выглядит логика проверки без использования библиотеки.
if (string.IsNullOrWhiteSpace(path))
{
project.SendWarningToLog("Не указан путь к файлу с аккаунтами.", true);
throw new Exception("Не указан путь к файлу с аккаунтами.");
}
if (!File.Exists(path))
{
project.SendWarningToLog("Файл с аккаунтами не найден.", true);
throw new Exception("Файл с аккаунтами не найден.");
}
bool fileIsEmpty = new FileInfo(path).Length == 0;
if (fileIsEmpty)
{
project.SendWarningToLog("Файл с аккаунтами пуст.", true);
throw new Exception("Файл с аккаунтами пуст.");
}
Как видите, код получился 2 раза больше, читаемость кода хуже, а если понадобится проверить еще несколько переменных, то проверка и вовсе станет огромной. К тому же поддерживать такой код будет сложнее - если вы захотите изменить логирование, придется менять его во всех местах.
Мультилогер
В библиотеке представлен класс MultiLogger который позволяет удобно логировать в несколько мест одновременно. Одной строчкой кода вы можете записать сообщение в файл, вывести его пользователю в виде MessageBox и в лог ZennoPoster. Также можно добавить в мультилогер свой вариант логирования, например, в БД.
// Указываем чтобы логировалось одновременно в ZennoPoster и в файл
logger.LogTo = Logger.ZennoPoster | Logger.File;
logger.FileLogPath = @"C:\mylog.txt";
logger.MultiLog("Тестовая запись в лог 1");
logger.MultiLog("Тестовая запись в лог 2", MessageType.Warning);
Класс мультилогера предоставляет возможность логирования в режиме разработки, логи будут писаться только при откладке из ProjectMaker или CodeCreator.
// Сообщение будет выведено только если исполняемой средой является ProjectMaker или CodeCreator
logger.MultiLogDebug("Тестовая запись в лог");
Менеджер аккаунтов
Практически каждый шаблон выполняет работу с аккаунтами, который предоставляет пользователь. Менеджер аккаунтов призван решить проблемы многопоточной работы со списком аккаунтов, а также позволить закреплять ваши данные за аккаунтами, например, прокси.
—————————————————————————————————
- Файл аккаунтов не подвергается изменениям
- Для файла аккаунтов создается свой файл конфигурации, в котором содержатся все необходимые данные для последовательного выполнения аккаунтов как при работе в одном, так и в нескольких потоках
- Аккаунты для работы распределяются равномерно - не возникнет такой ситуации, что один аккаунт отработает 10 раз, а другой 15
- Для каждого аккаунта можно сохранять дополнительную информацию
Менеджер браузера
Менеджер браузера позволяет генерировать и применять различные параметры браузера, а также сохранять их для последующего использования с аккаунтом.
—————————————————————————————————
- Используемый браузер (Firefox, Chrome)
- Используемое устройство (на данный момент только Windows)
- Настройки браузера:
- Блокировка рекламы
- Использование веб хранилищ (LocalStorage, SessionStorage, Global Storage, Database Storage)
- Использование IndexedDB
- Использование WebGL
- Использование плагинов
- Эмуляция WebRTC
- Эмуляция Canvas
- Language
// Применение настроек
BrowserManager.Setup(profile, instance, project);
// Сохранение в файл
string path = "C:\\1.xml";
BrowserManager.Save(profile, instance, path);
// Загрузка
profile = BrowserManager.Load(path);
Парсер строк
Данный класс-помощник позволяет в удобном формате работать с элементами строк. С помощью него можно дать возможность пользователям самостоятельно указывать формат используемых ресурсов. Это добавит гибкости в настройке и избавит от подстраивания используемых файлов под ваш шаблон.
Например, можно вынести задание формата файла аккаунтов во входные настройки. Тогда пользователю нужно будет указать шаблон, содержащий ключевые слова и используемые разделители:
login;password:proxy
Вот так выглядит разбор строки в коде:
// Шаблон для разбора строки, можно вынести во входные настройки
var pattern = "login;password:proxy";
var accountDictionary = ZennoExtensions.Utils.StringParser.Parse(accountString, pattern);
var login = accountDictionary["login"]; // 12345
var password = accountDictionary["password"]; // wqerty
var proxy = accountDictionary["proxy"]; // 123.123.123.00:1111
Библиотека активно используется и дорабатывается. Участники складчины будут получать обновления бесплатно и смогут вносить предложения по доработке. Помимо самой библиотеки всем участникам будет также доступен проект Visual Studio с исходным кодом, что даст возможность изучать и дорабатывать функционал самостоятельно.
Инструкция по разработке шаблонов через Visual Studio
Способы подключения библиотек к шаблону без использования ExternalAssemblies
Список полезных сервисов и инструментов для разработки
Подборка ссылок на обучающие материалы для самостоятельного изучения
Способы дополнительного заработка на шаблонах
Продажник:
Скачать:
- 23
#322758 [Design Bundles] - 4560 шаблонов для социальных сетей (125 Gb)
Написано buba на 28 Апрель 2018 - 16:37
Скачать
- 21
#322837 [Design Bundles] - 4560 шаблонов для социальных сетей (125 Gb)
Написано HelloMS на 29 Апрель 2018 - 02:05
- 1
#322283 Как не загромождать браузер кучей вкладок
Написано lifepusher на 26 Апрель 2018 - 01:01
Применительно к вкладкам в Firefox-е можно использовать дополнение "Менеджер сессий". Он позволяет сохранять и открывать сессии в любых вариациях. Открыл, например, кучу вкладок по определённой тематике, кликнул "Сохранить сессию", выбрал из открытых нужные вкладки, обозвал сессию, сохранил и делай с ней потом всё, что хочешь: хочешь открывай все вкладки сессии с заменой текущих или добавлением к ним, хочешь добавляй к сохранённой тематической сессии новые вкладки. Ну, и т. .д.
- 3
#322279 Как не загромождать браузер кучей вкладок
Написано Mike на 26 Апрель 2018 - 00:37
Лайфхак для тех, у кого в браузере вечно открыто 100500 вкладок и все вроде важны =)
А наш мозг, как все уже знают, не может длительное время обрабатывать сразу множество разных объектов.
Как решить эту проблему? Есть такой отличный веб-сервис, довольно известный, но пишу для тех, кто не знает - WorkFlowy.
Он создан для удобного упорядочивания разных списков - дел, идей, ссылок.
Вот демка сервиса, позволяющая понять принцип работы - https://workflowy.com/demo/embed/
Я пока что не знаю, как сразу поместить в него все адреса открытых вкладок, я делал вручную =) Принцип такой: заносим, упорядочиваем по темам/целям и больше не держим открытыми те вкладки, которые в данный момент не нужны. Заносим их в сервис.
Ссылка: https://workflowy.com/
Реф. ссылка: https://workflowy.co...te/5847a42b.lnx
Сервис в бесплатной версии дает лишь 100 пунктов в списке, по реф. ссылке вы получаете 200 =) Насколько я понял =)
- 4
#261099 6 простых способов заработка на Сливапе
Написано WinRAR.rar на 08 Февраль 2017 - 18:09
Помимо того, что на Сливапе для вас открывается огромный доступ к дорогим курсам и редкой информации бесплатно, так же здесь вы сможете найти для себя пассивный доход абсолютно без денежных вложений.
На данный момент существует 6 самых популярных способов заработка на Сливапе:
1. Slivup Private Pool
Мы долго думали над тем, как еще можно заработать пользователям нашего форума и наконец разработали новый инструмент для заработка на крипте. Теперь все сливаперы получили возможность зарабатывать с нами, при этом зарабатывать можно начать с минимальными вложениями. Подробнее..
2. Партнерская программа
Мы искренне верим, что наши юзеры не менее креативны любого высокооплачиваемого менеджера по рекламе и обязаны иметь возможность зарабатывать надлежащие деньги. Если кратко — мы будем платить вам за то, что вы советуете сайт, который вам нравится.
С каждого привлеченного пользователя, который приобретет Premium/Platinum аккаунт, вы будете получать до 50% от его стоимости. Подробнее..
3. Тренинговый Центр Сливап
Уникальный проект в Рунете. Обучение заработку с гарантией результата Подробнее ..
- Если вы проходили какое-то обучение или тренинг и удостоверились в его качестве, вы можете рекомендовать автору принять участие в ТЦ «Сливап». Подробнее ..
- Если вы имеете собственный источник трафика, например сетку ДДЛ, СДЛ, свою рассылку или сообщество, то мы предлагаем вам стать нашим партнером и получать 10% и более за продажу по вашей реферальной ссылке. Подробнее ..
- Мы предлагаем сливаперам с активной позицией стать проверяющими и единоразово заработать 60% от стоимости проверяемого ими тренинга и бесплатно получить вход в проверяемую тему. Подробнее ..
4. Фонд Поощрения Сливаперов (FPS)
Суть фонда заключается в том, что вы можете монетизировать свою репутацию в соотношении 1 очко репутации = 1 рубль. Подробнее...
5. Организация рескладчин
Наши организаторы получают 70% комиссионных с каждой организованной складчины/рескладчины resklad.biz. Любой пользователь со статусом "Сливапер LVL 4" и выше может подать заявку на организацию любой складчины, а если вы подходите под наши требования, то смело можете подать заявку и стать нашим официальным организатором.
6. Курсы на форуме
Если по какой-то причине ни один из предоставленных способов заработка вам не подходит, то вы всегда можете подобрать подходящий курс из нашего мега-архива.
Пробуйте, выбирайте и зарабатывайте!
- 11
#321009 Улучшаем портфолио и уровень клиентов за один сезон (Сергей Негинский)
Написано Slivup_Team на 18 Апрель 2018 - 18:42
- Жесткий, но объективный разбор каждого слушателя на онлайн-сессиях и в текстовых фитбэках.
- Знания по экономичному маркетингу от человека, длительное время работающего в сфере маркетинга и успешно применяющего эти навыки в свадебной индустрии.
- Ускорите создание нового портфолио. В несколько раз расширите аудиторию потенциальных заказчиков.
- Разработаете свою долгосрочную рекламную кампанию.
- Научитесь анализировать конкурентов и опережать их.
Преподаватель
Сергей Негинский из TwinBrothers. Twinbrothers - братья-ведущие, специализирующиеся исключительно на проведении свадебных событий. Ребята являются одними из самых известных свадебных ведущих Москвы с гонораром в 120 тысяч рублей за летние пятницы и субботы. Каждый из них имеет по 70 проектов в год не только в Москве, но и других городах и странах. Они стали единственными ведущими, лекции которых посещают популярные фотографы, операторы, декораторы и другие коллеги по цеху. Сергей не научит вас снимать или монтировать, но сможет научить вас правильно переупаковывать и продавать ваше портфолио.
Продажник
- 5
#316609 TOP-База Adult сайтов
Написано Montoo на 23 Март 2018 - 12:23
- 15
- Просмотр профиля: Репутация: Lestat
- Правообладателям
- Услуги рекламы ·