Открыто

ZennoPoster + C# для новичков. Пишем софт под одноклассники

Тема в разделе "Бизнес и свое дело", создана пользователем lexxik, 26 июн 2020.

Цена: 1000р.
Взнос: 1000р.

Основной список: 3 участников

Резервный список: 1 участников

Статус обсуждения:
Комментирование ограничено.
  1. 26 июн 2020
    #1
    lexxik
    lexxik ЧКЧлен клуба
    ZennoPoster + C# для новичков. Пишем софт под одноклассники

    Всем привет. Начну с того, что я ничего не имею против кубиков. На самом деле я был сильно удивлен, как же много на них можно соорудить, когда на zennolab появился раздел по созданию шаблонов. Однако на больших проектах мы рискуем увидеть вот такую картину:

    1.png

    Это не есть гуд, т.к. ориентироваться в таком шаблоне может быть не просто. Плюс всегда есть вероятность, что стандартного функционала вам может не хватить, а без знаний c# вам придется идти на фриланс, заказывать сниппет, затем просить автора его починить (когда он выйдет из строя) и т.д. Всё это потерянное время и нервы.

    Боль

    2.jpg

    На скрине книга Албахари в 1000 страниц. Страшно? Вам станет ещё страшнее, если вы начнете её читать, ибо когда я первый раз пролистал её, то мне показалось, что её забыли перевести на русский язык. Попади такой толмут к неподготовленному человеку и у него сразу отпадет всякое желание разбираться в c#.

    К чему это я? Возможно, вы когда-то уже пробовали освоить c# и поняли, что это слишком сложно. Но действительно ли всё так страшно, как кажется на самом деле?

    Пишем первую программу

    Откройте Project Maker и создайте кубик c#. И забейте туда две строчки:

    Код:
    instance.ActiveTab.Navigate("https://yandex.ru");
    instance.ActiveTab.WaitDownloading();
    3.png

    Теперь запустите шаблон. Видим, что состоялся переход на яндекс. Сложно? Нет:

    • instance.ActiveTab.Navigate("Скрытая ссылка"); - метод, отвечающий за переход на сайт. В кавычках мы должны передать урл сайта, куда хотим перейти
    • instance.ActiveTab.WaitDownloading(); - метод, отвечающий за ожидание прогрузки страницы

    А что если мы хотим переходить на разные сайты? Сначала мы создадим список, куда сложим эти сайты:
    Код:
    List<string> spisokSaitov = new List<string>() //мы создали с вами список, который наполнили сайтами
    
    {
    
           "https://yandex.ru",
    
           "https://google.ru",
    
           "https://rambler.ru",
    
           "https://mail.ru"
    
    };
    
    
    //Пугает? На самом деле почти весь код "стандартный" при создании списка. Отличаться будет только имя. В данном случае у нашего списка имя spisokSaitov. Создадим ещё один список для закрепления:
    
    
    List<string> spisokName = new List<string>()
    
    {
    
           "Вася",
    
           "Петя",
    
           "Коля"
    
    };
    
    
    //ну вот. Теперь вы умеете создавать списки и наполнять их
    4.png

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

    Код:
    instance.ActiveTab.Navigate(spisokSaitov[1]);
    
    instance.ActiveTab.WaitDownloading();


    Вместо spisokSaitov[0] подставится нулевой (счет в c# идет с нуля) элемент нашего списка, т.е. yandex.ru. Если бы мы написали spisokSaitov[1], то подставился бы oogle.ru. Если spisokSaitov[2] то rambler.ru. А если spisokName[0] то подставится Вася. "Вася" - не адрес сайта, так что будет ошибка.

    6.png

    А переход на случайный сайт выглядел бы следующим образом:

    Код:
    int sluchainoeChislo = new Random().Next(0,4); //генерируем случайное число от 0 до 4 (не вкл 4).
    
    instance.ActiveTab.Navigate(spisokSaitov[sluchainoeChislo]); //делаем переход. Урл берется из списка spisokSaitov, строчка случайная.
    
    instance.ActiveTab.WaitDownloading(); //дожидаемся прогрузки
    7.png

    На самом деле весь код состоит из вот таких небольших кирпичиков. Почти любой регистратор на 70% состоит из двух действий:

    • найти элемент
    • установить значение элемента

    Я помогу вам «въехать в тему», а далее уже при желании можно записываться к «крутым пацанам» и прокачивать свои навыки.

    Что будет в курсе

    • Разберемся с основами c#: переменные, условия, циклы, списки и т.д.
    • Разберемся с поиском элементов, используя xpath.
    • Пройдемся по объектной модели ZennoPoster и разберем наиболее популярные свойства и методы: клик по элементу, установка значения и т.д.
    • Научимся с вами выносить отдельные куски кода в общий код, чтобы поддерживать нормальную читаемость внутри кубика c#.
    • Закрепим всё на практике.

    Писать мы будем софт под одноклассники. На веб. Запросов и API касаться не будем. Напишем регер, заполнитель, гулялку, парсер и рассыльщик по лс. Может дополню ещё чем-то, если будет необходимо.

    P.S. При необходимости более подробное описание предоставлю позже

    Курс для новичков. Если уже хотя бы полгода пишите на c#, большого смысла записываться нет (ООП не рассматривается, каких-то фишек не раскрывается). Цель – помочь вам разобраться с основами c# в zennoposter, чтобы вы могли более гибко решать свои задачи и при необходимости развиваться дальше.

    Поддержка 1.5 месяца. Если вдруг не хватит, сделаю продление по минимальной цене.

    Бонусов как таковых нет, может если какие пожелания будут добавлю.

    И ещё одно - "смогу ли я заработать 100500 миллионов после прохождения курса"? Нет. Если у вас есть схема, которой вы занимаетесь руками, тогда да, шансы хорошие. Если вы думаете освоить зеннопостер, чтобы заработать - ничего не выйдет.

    Спрашивайте, если есть вопросы.
     

    Вложения:

    • 5.png
      5.png
      Размер файла:
      109,3 КБ
      Просмотров:
      218
    Последнее редактирование модератором: 27 июн 2020
    2 пользователям это понравилось.
  2. Последние события

    1. mizarnpc
      mizarnpc не участвует.
      18 июн 2022
    2. mizarnpc
      mizarnpc участвует.
      18 июн 2022
    3. 0ntoni0
      0ntoni0 не участвует.
      11 июн 2022
    4. skladchik.com
      В складчине участвует 5 человек(а).
      18 дек 2021
  3. Обсуждение
  4. 29 июн 2020
    #2
    Мандарин7
    Мандарин7 ЧКЧлен клуба
    @lexxik привет. будет ли в твоем курсе проработка ведения базы аккаунтов . Соц сети это всегда маштаб. Спасибо
     
  5. 29 июн 2020
    #3
    lexxik
    lexxik ЧКЧлен клуба
    Нет, этого нету
     
  6. 5 июл 2020
    #4
    Кораблик672
    Кораблик672 ДолжникДолжник
    работа с бд, многопоток на софте будет или в один поток будет работа?
     
  7. 6 июл 2020
    #5
    lexxik
    lexxik ЧКЧлен клуба
    Многопоток, бд не рассматривается
     
    1 человеку нравится это.
  8. 6 июл 2020
    #6
    Кораблик672
    Кораблик672 ДолжникДолжник
    Не совсем понял, будет ли многопоток?
    А как будет выдаваться материал, это видеоуроки или текстовые уроки?
    С зенно знаком с c# тоже немного, интересна тема ваша.
     
  9. 6 июл 2020
    #7
    lexxik
    lexxik ЧКЧлен клуба
    Складчина навряд ли стартанет, спроса нет. Да в зенке просто с многопотоком- почитай на их форуме про lock. Это в visual studio там да, сложно
     
  10. 6 июл 2020
    #8
    Кораблик672
    Кораблик672 ДолжникДолжник
    надо рекламу, просто сделать. А так тема интересная, подача материала нравится. Благодарю за информацию. Я сейчас настроил вроде многопоток на с# в своем проекте, но хотелось бы лучше разобраться в этом, люблю когда проекты работают как часики и быстро. с# мощь.
     
  11. 7 июл 2020
    #9
    Zennocoder
    Zennocoder ЧКЧлен клуба
    почему именно ок? В силу неизменности верстки?
    Я бы наверное добавил бонус - разбор другого сайта и складка бы полетела
     
  12. 8 июл 2020
    #10
    lexxik
    lexxik ЧКЧлен клуба
    Да из-за этого. Более менее простая соц сеть для обучения
     
  13. 8 июл 2020
    #11
    Кораблик672
    Кораблик672 ДолжникДолжник
    Сколько складчиков нужно, чтобы стартануть складчину?
     
  14. 8 июл 2020
    #12
    lexxik
    lexxik ЧКЧлен клуба
    Не стартанет она. Мне интересно при сборе 50к руб. Судя по всему, все кто хотел уже выучились. Да и я как бы далеко не профи, с nztcoder не потягаться.
     
  15. 8 июл 2020
    #13
    bobby
    bobby ЧКЧлен клуба
    Так шо, выписываться? Жаль, т.к. описание к курсу было интересное.
    Тогда ответьте хотя бы на вопрос, который меня мучает, потому что в курсе у NZTcodera об этом нигде не упоминается, а такого профи не хочется отвлекать глупыми вопросами.

    Где объявляется объект instance из вашего примера в строке
    instance.ActiveTab.Navigate("ссылка на сайт");

    Из подсказки в ProjectMaker можно понять, что это экземпляр класса Instance, который описан в хелпе zennolab.
    Но ведь сначала надо объявить этот экземпляр где-то. Например, так
    Instance instance = new Instance();
     
  16. 8 июл 2020
    #14
    lexxik
    lexxik ЧКЧлен клуба
    Я, честно говоря, сам до конца эту кухню не понял.Могу высказать свои взгляды, может где ошибаюсь: в кубике c# объекты project и instance уже инициализированы разработчиками, просто мы этого не видим. Поэтому они ведут себя так, словно являются статическими членами (хоть это и не так). Именно поэтому если зайти в общий код, то вы не сможете к ним обратиться. Там вам уже надо будет объявлять экземпляр
    Instance instance = new Instance();
    Но это не рекомендуется. Рекомендуется передавать уже существующие Instance и project.

    Можете задать этот вопрос разработчикам zennolab. Они объяснят получше и поточней
     
    1 человеку нравится это.
  17. 8 июл 2020
    #15
    bobby
    bobby ЧКЧлен клуба
    Ага.Спасибо. Уже кое-что. Меня тоже одолевали смутные догадки. Самое интересное, что разработчики этот вопрос нигде не осветили. Я форум zennolab прошерстил и такой вопрос интересовал не только меня. Он задавался несколько раз разными людьми, но никто на него четко не ответил. Хотя эти объекты, можно сказать, базовые.
    instance - экземпляр класса Instance, и project - реализация интерфейса из пространства имен ZennoLab.InterfacesLibrary.ProjectModel Namespace
     
  18. 8 июл 2020
    #16
    Zennocoder
    Zennocoder ЧКЧлен клуба
    Поддержка на такие вопросы просто не будет отвечать. Если человек не видит где класс, а где интерфейс, то ему просто бесполезно это рассказывать, т.к. понятно что базы основ нет, а отсутствие базы пораждает еще больше вопросов.
    Я бы тоже с такими вопросами посылал, или игнорил, или отправлял читать литературу, коей очень дофига.
    А вот это зря. Начинать с чего-то надо. Ты видел первые складки нзт? По два человека собиралось. Так что пиши курс, отдавай на проверку и стартуй. Под лежачий камень вода не течет.
     
    4 пользователям это понравилось.
  19. 8 июл 2020
    #17
    bobby
    bobby ЧКЧлен клуба
    Не стоит так категорично Учитель. Меня никто никуда не посылал. Теперь цитирую справку зеннолаб, где описан один из примеров. Привожу только описание к примеру.
    The following example demonstrates using IZennoPosterModel interface. In this example local variable project is object of IZennoPosterModel interface. Variable "project" has access to data of current project.
    Надеюсь, не надо переводить на русский, впрочем слово интерфейс понятно без перевода.

    Также по поводу класса Instance ищите ZennoLab.CommandCenter Namespace : Instance Class
     
Статус обсуждения:
Комментирование ограничено.

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